diff options
author | Barney Gale <barney.gale@gmail.com> | 2025-03-09 17:02:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-09 17:02:37 (GMT) |
commit | 475f933ed8b1c9546f1b5497a2241140c7065b5f (patch) | |
tree | d09ed5bdbee1ee536ff46e52ba19ce8ac5889761 /Lib/test/test_pathlib/support/lexical_path.py | |
parent | bbd6d17ef85e5de885cdfab0ae567184ba1550ff (diff) | |
download | cpython-475f933ed8b1c9546f1b5497a2241140c7065b5f.zip cpython-475f933ed8b1c9546f1b5497a2241140c7065b5f.tar.gz cpython-475f933ed8b1c9546f1b5497a2241140c7065b5f.tar.bz2 |
GH-130614: pathlib ABCs: revise test suite for path joining (#130988)
Test `pathlib.types._JoinablePath` in a dedicated test module. These tests
cover `LexicalPath`, `PurePath` and `Path`, where `LexicalPath` is defined
in a new `test.test_pathlib.support` package.
Diffstat (limited to 'Lib/test/test_pathlib/support/lexical_path.py')
-rw-r--r-- | Lib/test/test_pathlib/support/lexical_path.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Lib/test/test_pathlib/support/lexical_path.py b/Lib/test/test_pathlib/support/lexical_path.py new file mode 100644 index 0000000..687d76f --- /dev/null +++ b/Lib/test/test_pathlib/support/lexical_path.py @@ -0,0 +1,33 @@ +""" +Simple implementation of JoinablePath, for use in pathlib tests. +""" + +import os.path +import pathlib.types + + +class LexicalPath(pathlib.types._JoinablePath): + __slots__ = ('_segments',) + parser = os.path + + def __init__(self, *pathsegments): + self._segments = pathsegments + + def __hash__(self): + return hash(str(self)) + + def __eq__(self, other): + if not isinstance(other, LexicalPath): + return NotImplemented + return str(self) == str(other) + + def __str__(self): + if not self._segments: + return '' + return self.parser.join(*self._segments) + + def __repr__(self): + return f'{type(self).__name__}({str(self)!r})' + + def with_segments(self, *pathsegments): + return type(self)(*pathsegments) |