You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
51 lines
1.6 KiB
2 years ago
|
import os.path
|
||
|
import tempfile
|
||
|
|
||
|
#code is from:https://github.com/pytorch/audio/blob/main/test/torchaudio_unittest/common_utils/case_utils.py
|
||
|
|
||
|
|
||
|
def name_func(func, _, params):
|
||
|
return f'{func.__name__}_{"_".join(str(arg) for arg in params.args)}'
|
||
|
|
||
|
|
||
|
class TempDirMixin:
|
||
|
"""Mixin to provide easy access to temp dir"""
|
||
|
|
||
|
temp_dir_ = None
|
||
|
|
||
|
@classmethod
|
||
|
def get_base_temp_dir(cls):
|
||
|
# If PADDLEAUDIO_TEST_TEMP_DIR is set, use it instead of temporary directory.
|
||
|
# this is handy for debugging.
|
||
|
key = "PADDLEAUDIO_TEST_TEMP_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:
|
||
|
# On Windows there is a know issue with `shutil.rmtree`,
|
||
|
# which fails intermittenly.
|
||
|
#
|
||
|
# https://github.com/python/cpython/issues/74168
|
||
|
#
|
||
|
# We observed this on CircleCI, where Windows job raises
|
||
|
# PermissionError.
|
||
|
#
|
||
|
# Following the above thread, we ignore it.
|
||
|
pass
|
||
|
super().tearDownClass()
|
||
|
|
||
|
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
|