mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-102950: Adjust tarfile filter tests for systems that don't set the sticky bit (GH-103831)
Also remove expilcit `type=tarfile.DIRTYPE`, the slash at the end is enough.
This commit is contained in:
parent
8330580800
commit
c8c3956d90
1 changed files with 25 additions and 5 deletions
|
@ -3635,15 +3635,35 @@ class TestExtractionFilters(unittest.TestCase):
|
|||
arc.add('exec_group_other', mode='?rw-rwxrwx')
|
||||
arc.add('read_group_only', mode='?---r-----')
|
||||
arc.add('no_bits', mode='?---------')
|
||||
arc.add('dir/', mode='?---rwsrwt', type=tarfile.DIRTYPE)
|
||||
arc.add('dir/', mode='?---rwsrwt')
|
||||
|
||||
# On some systems, setting the sticky bit is a no-op.
|
||||
# Check if that's the case.
|
||||
tmp_filename = os.path.join(TEMPDIR, "tmp.file")
|
||||
with open(tmp_filename, 'w'):
|
||||
pass
|
||||
os.chmod(tmp_filename, os.stat(tmp_filename).st_mode | stat.S_ISVTX)
|
||||
have_sticky_files = (os.stat(tmp_filename).st_mode & stat.S_ISVTX)
|
||||
os.unlink(tmp_filename)
|
||||
|
||||
os.mkdir(tmp_filename)
|
||||
os.chmod(tmp_filename, os.stat(tmp_filename).st_mode | stat.S_ISVTX)
|
||||
have_sticky_dirs = (os.stat(tmp_filename).st_mode & stat.S_ISVTX)
|
||||
os.rmdir(tmp_filename)
|
||||
|
||||
with self.check_context(arc.open(), 'fully_trusted'):
|
||||
self.expect_file('all_bits', mode='?rwsrwsrwt')
|
||||
if have_sticky_files:
|
||||
self.expect_file('all_bits', mode='?rwsrwsrwt')
|
||||
else:
|
||||
self.expect_file('all_bits', mode='?rwsrwsrwx')
|
||||
self.expect_file('perm_bits', mode='?rwxrwxrwx')
|
||||
self.expect_file('exec_group_other', mode='?rw-rwxrwx')
|
||||
self.expect_file('read_group_only', mode='?---r-----')
|
||||
self.expect_file('no_bits', mode='?---------')
|
||||
self.expect_file('dir', type=tarfile.DIRTYPE, mode='?---rwsrwt')
|
||||
if have_sticky_dirs:
|
||||
self.expect_file('dir/', mode='?---rwsrwt')
|
||||
else:
|
||||
self.expect_file('dir/', mode='?---rwsrwx')
|
||||
|
||||
with self.check_context(arc.open(), 'tar'):
|
||||
self.expect_file('all_bits', mode='?rwxr-xr-x')
|
||||
|
@ -3651,7 +3671,7 @@ class TestExtractionFilters(unittest.TestCase):
|
|||
self.expect_file('exec_group_other', mode='?rw-r-xr-x')
|
||||
self.expect_file('read_group_only', mode='?---r-----')
|
||||
self.expect_file('no_bits', mode='?---------')
|
||||
self.expect_file('dir/', type=tarfile.DIRTYPE, mode='?---r-xr-x')
|
||||
self.expect_file('dir/', mode='?---r-xr-x')
|
||||
|
||||
with self.check_context(arc.open(), 'data'):
|
||||
normal_dir_mode = stat.filemode(stat.S_IMODE(
|
||||
|
@ -3661,7 +3681,7 @@ class TestExtractionFilters(unittest.TestCase):
|
|||
self.expect_file('exec_group_other', mode='?rw-r--r--')
|
||||
self.expect_file('read_group_only', mode='?rw-r-----')
|
||||
self.expect_file('no_bits', mode='?rw-------')
|
||||
self.expect_file('dir/', type=tarfile.DIRTYPE, mode=normal_dir_mode)
|
||||
self.expect_file('dir/', mode=normal_dir_mode)
|
||||
|
||||
def test_pipe(self):
|
||||
# Test handling of a special file
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue