]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-110109: Test pure functionality of `pathlib.Path` user subclasses (#112242)
authorBarney Gale <barney.gale@gmail.com>
Sat, 18 Nov 2023 17:06:10 +0000 (17:06 +0000)
committerGitHub <noreply@github.com>
Sat, 18 Nov 2023 17:06:10 +0000 (17:06 +0000)
Add `PurePathTest` as a superclass of `PathTest`, and therefore also
`PathSubclassTest`. This adds coverage of pure functionality in user
subclasses of `pathlib.Path`.

Remove `PosixPathAsPureTest` and `WindowsPathAsPureTest`, as they
now duplicate `PosixPathTest` and `WindowsPathTest`.

This makes the MROs of test unit classes match the MROs of pathlib
classes.

Lib/test/test_pathlib.py

index 597483df4a5097b0dbeed5b3250dd44eb51a1ade..7083e9ebba669059ef51f3d3a21b338f3d7326f8 100644 (file)
@@ -1569,15 +1569,6 @@ class PurePathSubclassTest(PurePathTest):
     test_repr_roundtrips = None
 
 
-@only_posix
-class PosixPathAsPureTest(PurePosixPathTest):
-    cls = pathlib.PosixPath
-
-@only_nt
-class WindowsPathAsPureTest(PureWindowsPathTest):
-    cls = pathlib.WindowsPath
-
-
 #
 # Tests for the virtual classes.
 #
@@ -1771,6 +1762,7 @@ class DummyPathTest(unittest.TestCase):
     #
 
     def setUp(self):
+        super().setUp()
         pathmod = self.cls.pathmod
         p = self.cls(BASE)
         p.mkdir(parents=True)
@@ -2793,7 +2785,7 @@ class DummyPathWithSymlinksTest(DummyPathTest):
 # Tests for the concrete classes.
 #
 
-class PathTest(DummyPathTest):
+class PathTest(DummyPathTest, PurePathTest):
     """Tests for the FS-accessing functionalities of the Path classes."""
     cls = pathlib.Path
     can_symlink = os_helper.can_symlink()
@@ -3409,7 +3401,7 @@ class PathTest(DummyPathTest):
 
 
 @only_posix
-class PosixPathTest(PathTest):
+class PosixPathTest(PathTest, PurePosixPathTest):
     cls = pathlib.PosixPath
 
     def test_absolute(self):
@@ -3585,7 +3577,7 @@ class PosixPathTest(PathTest):
 
 
 @only_nt
-class WindowsPathTest(PathTest):
+class WindowsPathTest(PathTest, PureWindowsPathTest):
     cls = pathlib.WindowsPath
 
     def test_absolute(self):