summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pathlib/test_pathlib_abc.py
diff options
context:
space:
mode:
authorBarney Gale <barney.gale@gmail.com>2023-12-22 15:11:16 (GMT)
committerGitHub <noreply@github.com>2023-12-22 15:11:16 (GMT)
commit237e2cff00cca49db47bcb7ea13683a4d9ad1ea5 (patch)
treef1d2f5db8d04d263b2c2b3808f31a800df4a45ac /Lib/test/test_pathlib/test_pathlib_abc.py
parent45e09f921be55e23bed19b5db4c95ce7bd7aad6b (diff)
downloadcpython-237e2cff00cca49db47bcb7ea13683a4d9ad1ea5.zip
cpython-237e2cff00cca49db47bcb7ea13683a4d9ad1ea5.tar.gz
cpython-237e2cff00cca49db47bcb7ea13683a4d9ad1ea5.tar.bz2
GH-110109: Fix misleading `pathlib._abc.PurePathBase` repr (#113376)
`PurePathBase.__repr__()` produces a string like `MyPath('/foo')`. This repr is incorrect/misleading when a subclass's `__init__()` method is customized, which I expect to be the very common. This commit moves the `__repr__()` method to `PurePath`, leaving `PurePathBase` with the default `object` repr. No user-facing changes because the `pathlib._abc` module remains private.
Diffstat (limited to 'Lib/test/test_pathlib/test_pathlib_abc.py')
-rw-r--r--Lib/test/test_pathlib/test_pathlib_abc.py13
1 files changed, 1 insertions, 12 deletions
diff --git a/Lib/test/test_pathlib/test_pathlib_abc.py b/Lib/test/test_pathlib/test_pathlib_abc.py
index a272973..6748def 100644
--- a/Lib/test/test_pathlib/test_pathlib_abc.py
+++ b/Lib/test/test_pathlib/test_pathlib_abc.py
@@ -31,6 +31,7 @@ class PurePathBaseTest(unittest.TestCase):
self.assertFalse(hasattr(P, '__fspath__'))
self.assertFalse(hasattr(P, '__bytes__'))
self.assertIs(P.__reduce__, object.__reduce__)
+ self.assertIs(P.__repr__, object.__repr__)
self.assertIs(P.__hash__, object.__hash__)
self.assertIs(P.__eq__, object.__eq__)
self.assertIs(P.__lt__, object.__lt__)
@@ -227,18 +228,6 @@ class DummyPurePathTest(unittest.TestCase):
self.assertEqual(P(pathstr).as_posix(), pathstr)
# Other tests for as_posix() are in test_equivalences().
- def test_repr_common(self):
- for pathstr in ('a', 'a/b', 'a/b/c', '/', '/a/b', '/a/b/c'):
- with self.subTest(pathstr=pathstr):
- p = self.cls(pathstr)
- clsname = p.__class__.__name__
- r = repr(p)
- # The repr() is in the form ClassName("forward-slashes path").
- self.assertTrue(r.startswith(clsname + '('), r)
- self.assertTrue(r.endswith(')'), r)
- inner = r[len(clsname) + 1 : -1]
- self.assertEqual(eval(inner), p.as_posix())
-
def test_eq_common(self):
P = self.cls
self.assertEqual(P('a/b'), P('a/b'))