@@ -722,6 +722,28 @@ def format_mtime(mtime):
722722tar .close ()
723723os_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
726748def test_extract_directory (self ):
727749dirtype = "ustar/dirtype"