(self)
| 116 | |
| 117 | @os_helper.skip_unless_working_chmod |
| 118 | def test_mode(self): |
| 119 | with open(TESTFN, 'w'): |
| 120 | pass |
| 121 | if os.name == 'posix': |
| 122 | os.chmod(TESTFN, 0o700) |
| 123 | st_mode, modestr = self.get_mode() |
| 124 | self.assertEqual(modestr, '-rwx------') |
| 125 | self.assertS_IS("REG", st_mode) |
| 126 | imode = self.statmod.S_IMODE(st_mode) |
| 127 | self.assertEqual(imode, |
| 128 | self.statmod.S_IRWXU) |
| 129 | self.assertEqual(self.statmod.filemode(imode), |
| 130 | '?rwx------') |
| 131 | |
| 132 | os.chmod(TESTFN, 0o070) |
| 133 | st_mode, modestr = self.get_mode() |
| 134 | self.assertEqual(modestr, '----rwx---') |
| 135 | self.assertS_IS("REG", st_mode) |
| 136 | self.assertEqual(self.statmod.S_IMODE(st_mode), |
| 137 | self.statmod.S_IRWXG) |
| 138 | |
| 139 | os.chmod(TESTFN, 0o007) |
| 140 | st_mode, modestr = self.get_mode() |
| 141 | self.assertEqual(modestr, '-------rwx') |
| 142 | self.assertS_IS("REG", st_mode) |
| 143 | self.assertEqual(self.statmod.S_IMODE(st_mode), |
| 144 | self.statmod.S_IRWXO) |
| 145 | |
| 146 | os.chmod(TESTFN, 0o444) |
| 147 | st_mode, modestr = self.get_mode() |
| 148 | self.assertS_IS("REG", st_mode) |
| 149 | self.assertEqual(modestr, '-r--r--r--') |
| 150 | self.assertEqual(self.statmod.S_IMODE(st_mode), 0o444) |
| 151 | else: |
| 152 | os.chmod(TESTFN, 0o500) |
| 153 | st_mode, modestr = self.get_mode() |
| 154 | self.assertEqual(modestr[:3], '-r-') |
| 155 | self.assertS_IS("REG", st_mode) |
| 156 | self.assertEqual(self.statmod.S_IMODE(st_mode), 0o444) |
| 157 | |
| 158 | os.chmod(TESTFN, 0o700) |
| 159 | st_mode, modestr = self.get_mode() |
| 160 | self.assertStartsWith(modestr, '-rw') |
| 161 | self.assertS_IS("REG", st_mode) |
| 162 | self.assertEqual(self.statmod.S_IFMT(st_mode), |
| 163 | self.statmod.S_IFREG) |
| 164 | self.assertEqual(self.statmod.S_IMODE(st_mode), 0o666) |
| 165 | |
| 166 | def test_filemode_does_not_misclassify_random_bits(self): |
| 167 | # gh-144050 regression test |
nothing calls this directly
no test coverage detected