diff --git a/test/test_bytes2human.py b/test/test_bytes2human.py index b1994500c..6fcddcac2 100644 --- a/test/test_bytes2human.py +++ b/test/test_bytes2human.py @@ -1,6 +1,5 @@ import os.path import shutil -import sys import tempfile from test.picardtestcase import PicardTestCase @@ -13,15 +12,10 @@ class Testbytes2human(PicardTestCase): def setUp(self): super().setUp() # we are using temporary locales for tests - self.tmp_path = tempfile.mkdtemp() - if sys.hexversion >= 0x020700F0: - self.addCleanup(shutil.rmtree, self.tmp_path) + self.tmp_path = tempfile.mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, self.tmp_path) self.localedir = os.path.join(self.tmp_path, 'locale') - def tearDown(self): - if sys.hexversion < 0x020700F0: - shutil.rmtree(self.tmp_path) - def test_00(self): # testing with default C locale, english lang = 'C' diff --git a/test/test_config.py b/test/test_config.py index 0957eaff9..01056c881 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -39,16 +39,26 @@ class TestPicardConfigCommon(PicardTestCase): def setUp(self): super().setUp() - self.tmp_directory = mkdtemp() + + self.tmp_directory = mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, self.tmp_directory) + self.configpath = os.path.join(self.tmp_directory, 'test.ini') shutil.copy(os.path.join('test', 'data', 'test.ini'), self.configpath) + self.addCleanup(os.remove, self.configpath) + self.config = Config.from_file(None, self.configpath) + self.addCleanup(self.cleanup_config_obj) + self.config.application["version"] = "testing" logging.disable(logging.ERROR) Option.registry = {} - def tearDown(self): - shutil.rmtree(self.tmp_directory) + def cleanup_config_obj(self): + # Ensure QSettings do not recreate the file on exit + self.config.sync() + del self.config + self.config = None class TestPicardConfig(TestPicardConfigCommon): diff --git a/test/test_coverart_utils.py b/test/test_coverart_utils.py index fb59b32b3..c7f7db1d9 100644 --- a/test/test_coverart_utils.py +++ b/test/test_coverart_utils.py @@ -14,9 +14,9 @@ class CaaTypeTranslationTest(PicardTestCase): def setUp(self): super().setUp() # we are using temporary locales for tests - self.tmp_path = tempfile.mkdtemp() - self.localedir = os.path.join(self.tmp_path, 'locale') + self.tmp_path = tempfile.mkdtemp(suffix=self.__class__.__name__) self.addCleanup(shutil.rmtree, self.tmp_path) + self.localedir = os.path.join(self.tmp_path, 'locale') setup_gettext(self.localedir, "C") def test_translating_unknown_types_returns_input(self): diff --git a/test/test_emptydir.py b/test/test_emptydir.py index 60a6825a3..233fb43ea 100644 --- a/test/test_emptydir.py +++ b/test/test_emptydir.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import os.path +import shutil from tempfile import ( mkdtemp, mkstemp, @@ -10,73 +11,83 @@ import unittest from picard.util import emptydir -class EmptyDirTest(unittest.TestCase): +class EmptyDirTestCommon(unittest.TestCase): + + def create_temp_dir(self, extra_files=(), extra_dirs=(), ignore_errors=False): + tempdir = mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, tempdir, ignore_errors=ignore_errors) + for f in extra_files: + open(os.path.join(tempdir, f), 'a').close() + for f in extra_dirs: + os.mkdir(os.path.join(tempdir, f)) + return tempdir + + +class EmptyDirTest(EmptyDirTestCommon): def test_is_empty_dir_really_empty(self): - dir = _create_temp_dir() - self.assertTrue(emptydir.is_empty_dir(dir)) + tempdir = self.create_temp_dir() + self.assertTrue(emptydir.is_empty_dir(tempdir)) def test_is_empty_dir_only_junk_files(self): - dir = _create_temp_dir(extra_files=emptydir.JUNK_FILES) - self.assertTrue(len(os.listdir(dir)) > 0) - self.assertTrue(emptydir.is_empty_dir(dir)) + tempdir = self.create_temp_dir(extra_files=emptydir.JUNK_FILES) + self.assertTrue(len(os.listdir(tempdir)) > 0) + self.assertTrue(emptydir.is_empty_dir(tempdir)) def test_is_empty_dir_not_empty(self): - dir = _create_temp_dir(extra_files=['.notempty']) - self.assertEqual(1, len(os.listdir(dir))) - self.assertFalse(emptydir.is_empty_dir(dir)) + tempdir = self.create_temp_dir(extra_files=['.notempty']) + self.assertEqual(1, len(os.listdir(tempdir))) + self.assertFalse(emptydir.is_empty_dir(tempdir)) def test_is_empty_dir_custom_ignore_files(self): ignored_files = ['.empty'] - dir = _create_temp_dir(extra_files=ignored_files) - self.assertEqual(1, len(os.listdir(dir))) - self.assertTrue(emptydir.is_empty_dir(dir, ignored_files=ignored_files)) + tempdir = self.create_temp_dir(extra_files=ignored_files) + self.assertEqual(1, len(os.listdir(tempdir))) + self.assertTrue(emptydir.is_empty_dir(tempdir, ignored_files=ignored_files)) def test_is_empty_dir_not_empty_child_dir(self): - dir = _create_temp_dir(extra_dirs=['childdir']) - self.assertEqual(1, len(os.listdir(dir))) - self.assertFalse(emptydir.is_empty_dir(dir)) + tempdir = self.create_temp_dir(extra_dirs=['childdir']) + self.assertEqual(1, len(os.listdir(tempdir))) + self.assertFalse(emptydir.is_empty_dir(tempdir)) def test_is_empty_dir_on_file(self): fd, file_ = mkstemp() + self.addCleanup(os.remove, file_) self.assertRaises(NotADirectoryError, emptydir.is_empty_dir, file_) + os.close(fd) -class RmEmptyDirTest(unittest.TestCase): +class RmEmptyDirTest(EmptyDirTestCommon): def test_rm_empty_dir_really_empty(self): - dir = _create_temp_dir() - self.assertTrue(os.path.isdir(dir)) - emptydir.rm_empty_dir(dir) - self.assertFalse(os.path.exists(dir)) + tempdir = self.create_temp_dir(ignore_errors=True) + self.assertTrue(os.path.isdir(tempdir)) + emptydir.rm_empty_dir(tempdir) + self.assertFalse(os.path.exists(tempdir)) def test_rm_empty_dir_only_junk_files(self): - dir = _create_temp_dir(extra_files=emptydir.JUNK_FILES) - self.assertTrue(os.path.isdir(dir)) - emptydir.rm_empty_dir(dir) - self.assertFalse(os.path.exists(dir)) + tempdir = self.create_temp_dir(extra_files=emptydir.JUNK_FILES, ignore_errors=True) + self.assertTrue(os.path.isdir(tempdir)) + emptydir.rm_empty_dir(tempdir) + self.assertFalse(os.path.exists(tempdir)) def test_rm_empty_dir_not_empty(self): - dir = _create_temp_dir(['.notempty']) - self.assertEqual(1, len(os.listdir(dir))) - self.assertRaises(emptydir.SkipRemoveDir, emptydir.rm_empty_dir, dir) + tempdir = self.create_temp_dir(['.notempty']) + self.assertEqual(1, len(os.listdir(tempdir))) + self.assertRaises(emptydir.SkipRemoveDir, emptydir.rm_empty_dir, tempdir) def test_rm_empty_dir_is_special(self): - dir = _create_temp_dir() + tempdir = self.create_temp_dir() orig_portected_dirs = emptydir.PROTECTED_DIRECTORIES - emptydir.PROTECTED_DIRECTORIES.add(os.path.realpath(dir)) - self.assertRaises(emptydir.SkipRemoveDir, emptydir.rm_empty_dir, dir) + emptydir.PROTECTED_DIRECTORIES.add(os.path.realpath(tempdir)) + self.assertRaises(emptydir.SkipRemoveDir, emptydir.rm_empty_dir, tempdir) emptydir.PROTECTED_DIRECTORIES = orig_portected_dirs def test_is_empty_dir_on_file(self): fd, file_ = mkstemp() + self.addCleanup(os.remove, file_) self.assertRaises(NotADirectoryError, emptydir.rm_empty_dir, file_) + os.close(fd) + -def _create_temp_dir(extra_files=(), extra_dirs=()): - dir = mkdtemp() - for f in extra_files: - open(os.path.join(dir, f), 'a').close() - for f in extra_dirs: - os.mkdir(os.path.join(dir, f)) - return dir diff --git a/test/test_file.py b/test/test_file.py index 052e9c76e..4377bbd93 100644 --- a/test/test_file.py +++ b/test/test_file.py @@ -43,13 +43,11 @@ class TestPreserveTimes(PicardTestCase): def setUp(self): super().setUp() - self.tmp_directory = mkdtemp() + self.tmp_directory = mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, self.tmp_directory) filepath = os.path.join(self.tmp_directory, 'a.mp3') self.file = File(filepath) - def tearDown(self): - shutil.rmtree(self.tmp_directory) - def _create_testfile(self): # create a dummy file with open(self.file.filename, 'w') as f: diff --git a/test/test_filesystem.py b/test/test_filesystem.py index c9a3dded1..ac2ec6a3e 100644 --- a/test/test_filesystem.py +++ b/test/test_filesystem.py @@ -22,14 +22,12 @@ class TestFileSystem(PicardTestCase): def setUp(self): super().setUp() - self.src_directory = mkdtemp() + self.src_directory = mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, self.src_directory) self.tgt_directory = mkdtemp() + self.addCleanup(shutil.rmtree, self.tgt_directory) config.setting = settings.copy() - def tearDown(self): - shutil.rmtree(self.src_directory) - shutil.rmtree(self.tgt_directory) - def _prepare_files(self, src_rel_path='', tgt_rel_path=''): """Prepare src files and tgt filenames for a test.""" with suppress(FileExistsError): diff --git a/test/test_plugins.py b/test/test_plugins.py index 3797dd731..79410546b 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -110,11 +110,8 @@ class TestPicardPluginsCommonTmpDir(TestPicardPluginsCommon): def setUp(self): super().setUp() - self.tmp_directory = mkdtemp() - - def tearDown(self): - super().tearDown() - shutil.rmtree(self.tmp_directory) + self.tmp_directory = mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, self.tmp_directory) class TestPicardPluginManager(TestPicardPluginsCommon): diff --git a/test/test_releaseversions.py b/test/test_releaseversions.py index d8536602a..4717b9a8b 100644 --- a/test/test_releaseversions.py +++ b/test/test_releaseversions.py @@ -1,6 +1,5 @@ import os.path import shutil -import sys import tempfile from test.picardtestcase import ( @@ -26,16 +25,11 @@ class ReleaseTest(PicardTestCase): def setUp(self): super().setUp() # we are using temporary locales for tests - self.tmp_path = tempfile.mkdtemp() - if sys.hexversion >= 0x020700F0: - self.addCleanup(shutil.rmtree, self.tmp_path) + self.tmp_path = tempfile.mkdtemp(suffix=self.__class__.__name__) + self.addCleanup(shutil.rmtree, self.tmp_path) self.localedir = os.path.join(self.tmp_path, 'locale') setup_gettext(self.localedir, 'C') - def tearDown(self): - if sys.hexversion < 0x020700F0: - shutil.rmtree(self.tmp_path) - def test_1(self): config.setting = settings.copy() rlist = load_test_json('release_group_2.json')