GH-110109: Test pure functionality of pathlib.Path user subclasses (#112242)

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.
This commit is contained in:
Barney Gale 2023-11-18 17:06:10 +00:00 committed by GitHub
parent 9c7c8bacc1
commit 607b5e30c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

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