]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-89812: Miscellaneous pathlib test improvements (GH-106063)
authorBarney Gale <barney.gale@gmail.com>
Sat, 1 Jul 2023 12:29:02 +0000 (13:29 +0100)
committerGitHub <noreply@github.com>
Sat, 1 Jul 2023 12:29:02 +0000 (12:29 +0000)
- Split out dedicated test for unbuffered `open()`
- Split out dedicated test for `is_mount()` at the filesystem root
- Avoid `os.stat()` when checking that empty paths point to '.'
- Remove unnecessary `rmtree()` call
- Remove unused `assertSame()` method

Lib/test/test_pathlib.py

index 441a7bcd4d419974b618385924aa81f58dbcb2a9..5be5a77721baa83dbdd0f1eded2a9a80380275e9 100644 (file)
@@ -1628,11 +1628,6 @@ class PathTest(unittest.TestCase):
             # Broken symlink (pointing to itself).
             os.symlink('brokenLinkLoop',  join('brokenLinkLoop'))
 
-    def assertSame(self, path_a, path_b):
-        self.assertTrue(os.path.samefile(str(path_a), str(path_b)),
-                        "%r and %r don't point to the same file" %
-                        (path_a, path_b))
-
     def assertFileNotFound(self, func, *args, **kwargs):
         with self.assertRaises(FileNotFoundError) as cm:
             func(*args, **kwargs)
@@ -1664,7 +1659,7 @@ class PathTest(unittest.TestCase):
     def test_empty_path(self):
         # The empty path points to '.'
         p = self.cls('')
-        self.assertEqual(p.stat(), os.stat('.'))
+        self.assertEqual(str(p), '.')
 
     def test_exists(self):
         P = self.cls
@@ -1693,9 +1688,6 @@ class PathTest(unittest.TestCase):
         with (p / 'fileA').open('rb') as f:
             self.assertIsInstance(f, io.BufferedIOBase)
             self.assertEqual(f.read().strip(), b"this is file A")
-        with (p / 'fileA').open('rb', buffering=0) as f:
-            self.assertIsInstance(f, io.RawIOBase)
-            self.assertEqual(f.read().strip(), b"this is file A")
 
     def test_read_write_bytes(self):
         p = self.cls(BASE)
@@ -2017,7 +2009,6 @@ class PathTest(unittest.TestCase):
         P = self.cls
         base = P(BASE) / 'permissions'
         base.mkdir()
-        self.addCleanup(os_helper.rmtree, base)
 
         for i in range(100):
             link = base / f"link{i}"
@@ -2045,8 +2036,8 @@ class PathTest(unittest.TestCase):
         recursion_limit = 50
         # directory_depth > recursion_limit
         directory_depth = recursion_limit + 10
-        base = pathlib.Path(os_helper.TESTFN, 'deep')
-        path = pathlib.Path(base, *(['d'] * directory_depth))
+        base = self.cls(BASE, 'deep')
+        path = self.cls(base, *(['d'] * directory_depth))
         path.mkdir(parents=True)
 
         with set_recursion_limit(recursion_limit):
@@ -2242,18 +2233,12 @@ class PathTest(unittest.TestCase):
 
     def test_is_mount(self):
         P = self.cls(BASE)
-        if os.name == 'nt':
-            R = self.cls('c:\\')
-        else:
-            R = self.cls('/')
         self.assertFalse((P / 'fileA').is_mount())
         self.assertFalse((P / 'dirA').is_mount())
         self.assertFalse((P / 'non-existing').is_mount())
         self.assertFalse((P / 'fileA' / 'bah').is_mount())
-        self.assertTrue(R.is_mount())
         if self.can_symlink:
             self.assertFalse((P / 'linkA').is_mount())
-        self.assertIs((R / '\udfff').is_mount(), False)
 
     def test_is_symlink(self):
         P = self.cls(BASE)
@@ -2496,6 +2481,12 @@ class PathTest(unittest.TestCase):
         for dirpath, dirnames, filenames in p.walk():
             self.assertEqual(42, dirpath.session_id)
 
+    def test_open_unbuffered(self):
+        p = self.cls(BASE)
+        with (p / 'fileA').open('rb', buffering=0) as f:
+            self.assertIsInstance(f, io.RawIOBase)
+            self.assertEqual(f.read().strip(), b"this is file A")
+
     def test_resolve_nonexist_relative_issue38671(self):
         p = self.cls('non', 'exist')
 
@@ -2896,6 +2887,14 @@ class PathTest(unittest.TestCase):
         self.assertIs(self.cls('/dev/null\udfff').is_char_device(), False)
         self.assertIs(self.cls('/dev/null\x00').is_char_device(), False)
 
+    def test_is_mount_root(self):
+        if os.name == 'nt':
+            R = self.cls('c:\\')
+        else:
+            R = self.cls('/')
+        self.assertTrue(R.is_mount())
+        self.assertFalse((R / '\udfff').is_mount())
+
     def test_passing_kwargs_deprecated(self):
         with self.assertWarns(DeprecationWarning):
             self.cls(foo="bar")