| |
| |
| |
| |
| |
|
|
| import os |
| import tempfile |
|
|
|
|
| class TempDirMixin: |
| """Mixin to provide easy access to temp dir. |
| """ |
|
|
| temp_dir_ = None |
|
|
| @classmethod |
| def get_base_temp_dir(cls): |
| |
| |
| key = "AUDIOCRAFT_TEST_DIR" |
| if key in os.environ: |
| return os.environ[key] |
| if cls.temp_dir_ is None: |
| cls.temp_dir_ = tempfile.TemporaryDirectory() |
| return cls.temp_dir_.name |
|
|
| @classmethod |
| def tearDownClass(cls): |
| if cls.temp_dir_ is not None: |
| try: |
| cls.temp_dir_.cleanup() |
| cls.temp_dir_ = None |
| except PermissionError: |
| |
| |
| |
| |
| pass |
| super().tearDownClass() |
|
|
| @property |
| def id(self): |
| return self.__class__.__name__ |
|
|
| def get_temp_path(self, *paths): |
| temp_dir = os.path.join(self.get_base_temp_dir(), self.id) |
| path = os.path.join(temp_dir, *paths) |
| os.makedirs(os.path.dirname(path), exist_ok=True) |
| return path |
|
|
| def get_temp_dir(self, *paths): |
| temp_dir = os.path.join(self.get_base_temp_dir(), self.id) |
| path = os.path.join(temp_dir, *paths) |
| os.makedirs(path, exist_ok=True) |
| return path |
|
|