mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
GH-130614: pathlib ABCs: revise test suite for Posix path joining (#131017)
Test Posix-flavoured `pathlib.types._JoinablePath` in a dedicated test module. These tests cover `LexicalPosixPath`, `PurePosixPath` and `PosixPath`, where `LexicalPosixPath` is a simple implementation of `_JoinablePath` for use in tests.
This commit is contained in:
parent
93fc3d34f9
commit
5a484714c3
3 changed files with 55 additions and 23 deletions
|
@ -4,6 +4,7 @@ Simple implementation of JoinablePath, for use in pathlib tests.
|
|||
|
||||
import os.path
|
||||
import pathlib.types
|
||||
import posixpath
|
||||
|
||||
|
||||
class LexicalPath(pathlib.types._JoinablePath):
|
||||
|
@ -31,3 +32,8 @@ class LexicalPath(pathlib.types._JoinablePath):
|
|||
|
||||
def with_segments(self, *pathsegments):
|
||||
return type(self)(*pathsegments)
|
||||
|
||||
|
||||
class LexicalPosixPath(LexicalPath):
|
||||
__slots__ = ()
|
||||
parser = posixpath
|
||||
|
|
49
Lib/test/test_pathlib/test_join_posix.py
Normal file
49
Lib/test/test_pathlib/test_join_posix.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
"""
|
||||
Tests for Posix-flavoured pathlib.types._JoinablePath
|
||||
"""
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from pathlib import PurePosixPath, PosixPath
|
||||
from test.test_pathlib.support.lexical_path import LexicalPosixPath
|
||||
|
||||
|
||||
class JoinTestBase:
|
||||
def test_join(self):
|
||||
P = self.cls
|
||||
p = P('//a')
|
||||
pp = p.joinpath('b')
|
||||
self.assertEqual(pp, P('//a/b'))
|
||||
pp = P('/a').joinpath('//c')
|
||||
self.assertEqual(pp, P('//c'))
|
||||
pp = P('//a').joinpath('/c')
|
||||
self.assertEqual(pp, P('/c'))
|
||||
|
||||
def test_div(self):
|
||||
# Basically the same as joinpath().
|
||||
P = self.cls
|
||||
p = P('//a')
|
||||
pp = p / 'b'
|
||||
self.assertEqual(pp, P('//a/b'))
|
||||
pp = P('/a') / '//c'
|
||||
self.assertEqual(pp, P('//c'))
|
||||
pp = P('//a') / '/c'
|
||||
self.assertEqual(pp, P('/c'))
|
||||
|
||||
|
||||
class LexicalPosixPathJoinTest(JoinTestBase, unittest.TestCase):
|
||||
cls = LexicalPosixPath
|
||||
|
||||
|
||||
class PurePosixPathJoinTest(JoinTestBase, unittest.TestCase):
|
||||
cls = PurePosixPath
|
||||
|
||||
|
||||
if os.name != 'nt':
|
||||
class PosixPathJoinTest(JoinTestBase, unittest.TestCase):
|
||||
cls = PosixPath
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
|
@ -108,17 +108,6 @@ class JoinablePathTest(unittest.TestCase):
|
|||
self._check_str_subclass('\\\\some\\share\\a')
|
||||
self._check_str_subclass('\\\\some\\share\\a\\b.txt')
|
||||
|
||||
@needs_posix
|
||||
def test_join_posix(self):
|
||||
P = self.cls
|
||||
p = P('//a')
|
||||
pp = p.joinpath('b')
|
||||
self.assertEqual(pp, P('//a/b'))
|
||||
pp = P('/a').joinpath('//c')
|
||||
self.assertEqual(pp, P('//c'))
|
||||
pp = P('//a').joinpath('/c')
|
||||
self.assertEqual(pp, P('/c'))
|
||||
|
||||
@needs_windows
|
||||
def test_join_windows(self):
|
||||
P = self.cls
|
||||
|
@ -157,18 +146,6 @@ class JoinablePathTest(unittest.TestCase):
|
|||
pp = P('//./BootPartition').joinpath('Windows')
|
||||
self.assertEqual(pp, P('//./BootPartition/Windows'))
|
||||
|
||||
@needs_posix
|
||||
def test_div_posix(self):
|
||||
# Basically the same as joinpath().
|
||||
P = self.cls
|
||||
p = P('//a')
|
||||
pp = p / 'b'
|
||||
self.assertEqual(pp, P('//a/b'))
|
||||
pp = P('/a') / '//c'
|
||||
self.assertEqual(pp, P('//c'))
|
||||
pp = P('//a') / '/c'
|
||||
self.assertEqual(pp, P('/c'))
|
||||
|
||||
@needs_windows
|
||||
def test_div_windows(self):
|
||||
# Basically the same as joinpath().
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue