perm = []
for index, table in enumerate(_filemode_table):
for bit, char in table:
- if mode & bit == bit:
- perm.append(char)
- break
+ if index == 0:
+ if S_IFMT(mode) == bit:
+ perm.append(char)
+ break
+ else:
+ if mode & bit == bit:
+ perm.append(char)
+ break
else:
if index == 0:
# Unknown filetype
self.statmod.S_IFREG)
self.assertEqual(self.statmod.S_IMODE(st_mode), 0o666)
+ def test_filemode_does_not_misclassify_random_bits(self):
+ # gh-144050 regression test
+ self.assertEqual(self.statmod.filemode(0o77777)[0], "?")
+ self.assertEqual(self.statmod.filemode(0o177777)[0], "?")
+
@os_helper.skip_unless_working_chmod
def test_directory(self):
os.mkdir(TESTFN)