Skip to content

Commit 15216b9

Browse files
committed
Add test for default filter of tarfile.extractall
1 parent 2d67e8e commit 15216b9

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

Lib/test/test_tarfile.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,28 @@ def format_mtime(mtime):
722722
tar.close()
723723
os_helper.rmtree(DIR)
724724

725+
@staticmethod
726+
@unittest.mock.patch("tarfile.data_filter", wraps=tarfile.data_filter)
727+
@unittest.mock.patch("tarfile.tar_filter", wraps=tarfile.tar_filter)
728+
@unittest.mock.patch("tarfile.fully_trusted_filter", wraps=tarfile.fully_trusted_filter)
729+
def test_extractall_default_filter(mock_ft_filter: unittest.mock.Mock,
730+
mock_tar_filter: unittest.mock.Mock,
731+
mock_data_filter: unittest.mock.Mock):
732+
tar = tarfile.open(tarname, encoding="iso8859-1")
733+
DIR = os.path.join(TEMPDIR, "extractall_default_filter")
734+
os.mkdir(DIR)
735+
try:
736+
directories = [t for t in tar if t.isdir()]
737+
tar.extractall(DIR, directories)
738+
739+
# Test that the default filter is now "data", and the other filter types are not used.
740+
mock_data_filter.assert_called()
741+
mock_ft_filter.assert_not_called()
742+
mock_tar_filter.assert_not_called()
743+
finally:
744+
tar.close()
745+
os_helper.rmtree(DIR)
746+
725747
@os_helper.skip_unless_working_chmod
726748
def test_extract_directory(self):
727749
dirtype = "ustar/dirtype"

0 commit comments

Comments
 (0)