d6fbf12989
Remove all trailing spaces and tabs in every file in the project. People have editors configured to do this, which causes them to accidentally make little whitespace changes in unrelated commits, which makes those commits harder to review. Better to fix them all at once. Change-Id: I17d89f55f41d8599e0ab1a31f646cd161289703e
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import sys
|
|
import shutil
|
|
import tempfile
|
|
|
|
from migrate.tests.fixture import base
|
|
|
|
|
|
class Pathed(base.Base):
|
|
# Temporary files
|
|
|
|
_tmpdir = tempfile.mkdtemp()
|
|
|
|
def setUp(self):
|
|
super(Pathed, self).setUp()
|
|
self.temp_usable_dir = tempfile.mkdtemp()
|
|
sys.path.append(self.temp_usable_dir)
|
|
|
|
def tearDown(self):
|
|
super(Pathed, self).tearDown()
|
|
try:
|
|
sys.path.remove(self.temp_usable_dir)
|
|
except:
|
|
pass # w00t?
|
|
Pathed.purge(self.temp_usable_dir)
|
|
|
|
@classmethod
|
|
def _tmp(cls, prefix='', suffix=''):
|
|
"""Generate a temporary file name that doesn't exist
|
|
All filenames are generated inside a temporary directory created by
|
|
tempfile.mkdtemp(); only the creating user has access to this directory.
|
|
It should be secure to return a nonexistant temp filename in this
|
|
directory, unless the user is messing with their own files.
|
|
"""
|
|
file, ret = tempfile.mkstemp(suffix,prefix,cls._tmpdir)
|
|
os.close(file)
|
|
os.remove(ret)
|
|
return ret
|
|
|
|
@classmethod
|
|
def tmp(cls, *p, **k):
|
|
return cls._tmp(*p, **k)
|
|
|
|
@classmethod
|
|
def tmp_py(cls, *p, **k):
|
|
return cls._tmp(suffix='.py', *p, **k)
|
|
|
|
@classmethod
|
|
def tmp_sql(cls, *p, **k):
|
|
return cls._tmp(suffix='.sql', *p, **k)
|
|
|
|
@classmethod
|
|
def tmp_named(cls, name):
|
|
return os.path.join(cls._tmpdir, name)
|
|
|
|
@classmethod
|
|
def tmp_repos(cls, *p, **k):
|
|
return cls._tmp(*p, **k)
|
|
|
|
@classmethod
|
|
def purge(cls, path):
|
|
"""Removes this path if it exists, in preparation for tests
|
|
Careful - all tests should take place in /tmp.
|
|
We don't want to accidentally wipe stuff out...
|
|
"""
|
|
if os.path.exists(path):
|
|
if os.path.isdir(path):
|
|
shutil.rmtree(path)
|
|
else:
|
|
os.remove(path)
|
|
if path.endswith('.py'):
|
|
pyc = path + 'c'
|
|
if os.path.exists(pyc):
|
|
os.remove(pyc)
|