diff options
Diffstat (limited to 'tests/utils_tests/test_archive.py')
| -rw-r--r-- | tests/utils_tests/test_archive.py | 61 |
1 files changed, 32 insertions, 29 deletions
diff --git a/tests/utils_tests/test_archive.py b/tests/utils_tests/test_archive.py index 4eb47d2fad..10f8e56198 100644 --- a/tests/utils_tests/test_archive.py +++ b/tests/utils_tests/test_archive.py @@ -32,20 +32,21 @@ class TestArchive(unittest.TestCase): os.chdir(self.old_cwd) def test_extract_function(self): - for entry in os.scandir(self.testdir): - with self.subTest(entry.name), tempfile.TemporaryDirectory() as tmpdir: - if ( - (entry.name.endswith('.bz2') and not HAS_BZ2) or - (entry.name.endswith(('.lzma', '.xz')) and not HAS_LZMA) - ): - continue - archive.extract(entry.path, tmpdir) - self.assertTrue(os.path.isfile(os.path.join(tmpdir, '1'))) - self.assertTrue(os.path.isfile(os.path.join(tmpdir, '2'))) - self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', '1'))) - self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', '2'))) - self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', 'bar', '1'))) - self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', 'bar', '2'))) + with os.scandir(self.testdir) as entries: + for entry in entries: + with self.subTest(entry.name), tempfile.TemporaryDirectory() as tmpdir: + if ( + (entry.name.endswith('.bz2') and not HAS_BZ2) or + (entry.name.endswith(('.lzma', '.xz')) and not HAS_LZMA) + ): + continue + archive.extract(entry.path, tmpdir) + self.assertTrue(os.path.isfile(os.path.join(tmpdir, '1'))) + self.assertTrue(os.path.isfile(os.path.join(tmpdir, '2'))) + self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', '1'))) + self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', '2'))) + self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', 'bar', '1'))) + self.assertTrue(os.path.isfile(os.path.join(tmpdir, 'foo', 'bar', '2'))) @unittest.skipIf(sys.platform == 'win32', 'Python on Windows has a limited os.chmod().') def test_extract_file_permissions(self): @@ -53,21 +54,23 @@ class TestArchive(unittest.TestCase): mask = stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO umask = os.umask(0) os.umask(umask) # Restore the original umask. - for entry in os.scandir(self.testdir): - if ( - entry.name.startswith('leadpath_') or - (entry.name.endswith('.bz2') and not HAS_BZ2) or - (entry.name.endswith(('.lzma', '.xz')) and not HAS_LZMA) - ): - continue - with self.subTest(entry.name), tempfile.TemporaryDirectory() as tmpdir: - archive.extract(entry.path, tmpdir) - # An executable file in the archive has executable permissions. - filepath = os.path.join(tmpdir, 'executable') - self.assertEqual(os.stat(filepath).st_mode & mask, 0o775) - # A file is readable even if permission data is missing. - filepath = os.path.join(tmpdir, 'no_permissions') - self.assertEqual(os.stat(filepath).st_mode & mask, 0o666 & ~umask) + with os.scandir(self.testdir) as entries: + for entry in entries: + if ( + entry.name.startswith('leadpath_') or + (entry.name.endswith('.bz2') and not HAS_BZ2) or + (entry.name.endswith(('.lzma', '.xz')) and not HAS_LZMA) + ): + continue + with self.subTest(entry.name), tempfile.TemporaryDirectory() as tmpdir: + archive.extract(entry.path, tmpdir) + # An executable file in the archive has executable + # permissions. + filepath = os.path.join(tmpdir, 'executable') + self.assertEqual(os.stat(filepath).st_mode & mask, 0o775) + # A file is readable even if permission data is missing. + filepath = os.path.join(tmpdir, 'no_permissions') + self.assertEqual(os.stat(filepath).st_mode & mask, 0o666 & ~umask) class TestArchiveInvalid(SimpleTestCase): |
