From: Barney Gale Date: Sat, 1 Jul 2023 12:33:29 +0000 (+0100) Subject: GH-89812: Improve test for `pathlib.Path.stat()` (GH-106064) X-Git-Tag: v3.13.0a1~1572 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c2622a0d82078a7ab17597707b4dd42446a043ae;p=thirdparty%2FPython%2Fcpython.git GH-89812: Improve test for `pathlib.Path.stat()` (GH-106064) Make assertions about the `st_mode`, `st_ino` and `st_dev` attributes of the stat results from two files and a directory, rather than checking if `chmod()` affects `st_mode` (which is already tested elsewhere). --- diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 5be5a77721ba..464a835212d4 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -2145,15 +2145,25 @@ class PathTest(unittest.TestCase): # Non-strict self.assertEqual(r.resolve(strict=False), p / '3' / '4') - @os_helper.skip_unless_working_chmod def test_stat(self): - p = self.cls(BASE) / 'fileA' - st = p.stat() - self.assertEqual(p.stat(), st) - # Change file mode by flipping write bit. - p.chmod(st.st_mode ^ 0o222) - self.addCleanup(p.chmod, st.st_mode) - self.assertNotEqual(p.stat(), st) + statA = self.cls(BASE).joinpath('fileA').stat() + statB = self.cls(BASE).joinpath('dirB', 'fileB').stat() + statC = self.cls(BASE).joinpath('dirC').stat() + # st_mode: files are the same, directory differs. + self.assertIsInstance(statA.st_mode, int) + self.assertEqual(statA.st_mode, statB.st_mode) + self.assertNotEqual(statA.st_mode, statC.st_mode) + self.assertNotEqual(statB.st_mode, statC.st_mode) + # st_ino: all different, + self.assertIsInstance(statA.st_ino, int) + self.assertNotEqual(statA.st_ino, statB.st_ino) + self.assertNotEqual(statA.st_ino, statC.st_ino) + self.assertNotEqual(statB.st_ino, statC.st_ino) + # st_dev: all the same. + self.assertIsInstance(statA.st_dev, int) + self.assertEqual(statA.st_dev, statB.st_dev) + self.assertEqual(statA.st_dev, statC.st_dev) + # other attributes not used by pathlib. def test_stat_no_follow_symlinks(self): if not self.can_symlink: