fixtures.py 759 B

1234567891011121314151617181920212223242526272829303132333435
  1. import sys
  2. import shutil
  3. import tempfile
  4. import contextlib
  5. try:
  6. from contextlib import ExitStack
  7. except ImportError:
  8. from contextlib2 import ExitStack
  9. try:
  10. import pathlib
  11. except ImportError:
  12. import pathlib2 as pathlib
  13. __metaclass__ = type
  14. class SiteDir:
  15. @staticmethod
  16. @contextlib.contextmanager
  17. def site_dir():
  18. tmpdir = tempfile.mkdtemp()
  19. sys.path[:0] = [tmpdir]
  20. try:
  21. yield pathlib.Path(tmpdir)
  22. finally:
  23. sys.path.remove(tmpdir)
  24. shutil.rmtree(tmpdir)
  25. def setUp(self):
  26. self.fixtures = ExitStack()
  27. self.addCleanup(self.fixtures.close)
  28. self.site_dir = self.fixtures.enter_context(self.site_dir())