From 27f2c678cbf2e07371a7161fcd8cf0cade22bddc Mon Sep 17 00:00:00 2001 From: Ryan de Kleer Date: Thu, 15 Sep 2022 16:26:15 -0700 Subject: [PATCH] Use tmp dir for test output `shutil.rmtree` would fail in `TestUtils.test_clean_output_dir` on some filesystems if an application with a filewatcher had the pelican project open while the test ran. Using `tempfile.mkdtmp` for test directories circumvents this. --- pelican/tests/test_utils.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pelican/tests/test_utils.py b/pelican/tests/test_utils.py index ee5146df..449a6814 100644 --- a/pelican/tests/test_utils.py +++ b/pelican/tests/test_utils.py @@ -20,6 +20,14 @@ from pelican.writers import Writer class TestUtils(LoggedTestCase): _new_attribute = 'new_value' + def setUp(self): + super().setUp() + self.temp_output = mkdtemp(prefix='pelicantests.') + + def tearDown(self): + super().tearDown() + shutil.rmtree(self.temp_output) + @utils.deprecated_attribute( old='_old_attribute', new='_new_attribute', since=(3, 1, 0), remove=(4, 1, 3)) @@ -468,7 +476,7 @@ class TestUtils(LoggedTestCase): def test_clean_output_dir(self): retention = () - test_directory = os.path.join(os.path.dirname(__file__), + test_directory = os.path.join(self.temp_output, 'clean_output') content = os.path.join(os.path.dirname(__file__), 'content') shutil.copytree(content, test_directory) @@ -479,14 +487,14 @@ class TestUtils(LoggedTestCase): def test_clean_output_dir_not_there(self): retention = () - test_directory = os.path.join(os.path.dirname(__file__), + test_directory = os.path.join(self.temp_output, 'does_not_exist') utils.clean_output_dir(test_directory, retention) self.assertFalse(os.path.exists(test_directory)) def test_clean_output_dir_is_file(self): retention = () - test_directory = os.path.join(os.path.dirname(__file__), + test_directory = os.path.join(self.temp_output, 'this_is_a_file') f = open(test_directory, 'w') f.write('')