aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_pathlib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_pathlib')
-rw-r--r--Lib/test/test_pathlib/test_pathlib.py41
-rw-r--r--Lib/test/test_pathlib/test_pathlib_abc.py48
2 files changed, 63 insertions, 26 deletions
diff --git a/Lib/test/test_pathlib/test_pathlib.py b/Lib/test/test_pathlib/test_pathlib.py
index 6e421222126..04e6280509e 100644
--- a/Lib/test/test_pathlib/test_pathlib.py
+++ b/Lib/test/test_pathlib/test_pathlib.py
@@ -140,6 +140,8 @@ class PurePathTest(test_pathlib_abc.DummyPurePathTest):
# The empty path points to '.'
p = self.cls('')
self.assertEqual(str(p), '.')
+ # Special case for the empty path.
+ self._check_str('.', ('',))
def test_parts_interning(self):
P = self.cls
@@ -300,6 +302,40 @@ class PurePathTest(test_pathlib_abc.DummyPurePathTest):
self.assertEqual(q, p)
self.assertEqual(repr(q), r)
+ def test_name_empty(self):
+ P = self.cls
+ self.assertEqual(P('').name, '')
+ self.assertEqual(P('.').name, '')
+ self.assertEqual(P('/a/b/.').name, 'b')
+
+ def test_stem_empty(self):
+ P = self.cls
+ self.assertEqual(P('').stem, '')
+ self.assertEqual(P('.').stem, '')
+
+ def test_with_name_empty(self):
+ P = self.cls
+ self.assertRaises(ValueError, P('').with_name, 'd.xml')
+ self.assertRaises(ValueError, P('.').with_name, 'd.xml')
+ self.assertRaises(ValueError, P('/').with_name, 'd.xml')
+ self.assertRaises(ValueError, P('a/b').with_name, '')
+ self.assertRaises(ValueError, P('a/b').with_name, '.')
+
+ def test_with_stem_empty(self):
+ P = self.cls
+ self.assertRaises(ValueError, P('').with_stem, 'd')
+ self.assertRaises(ValueError, P('.').with_stem, 'd')
+ self.assertRaises(ValueError, P('/').with_stem, 'd')
+ self.assertRaises(ValueError, P('a/b').with_stem, '')
+ self.assertRaises(ValueError, P('a/b').with_stem, '.')
+
+ def test_with_suffix_empty(self):
+ # Path doesn't have a "filename" component.
+ P = self.cls
+ self.assertRaises(ValueError, P('').with_suffix, '.gz')
+ self.assertRaises(ValueError, P('.').with_suffix, '.gz')
+ self.assertRaises(ValueError, P('/').with_suffix, '.gz')
+
def test_relative_to_several_args(self):
P = self.cls
p = P('a/b')
@@ -313,6 +349,11 @@ class PurePathTest(test_pathlib_abc.DummyPurePathTest):
with self.assertWarns(DeprecationWarning):
p.is_relative_to('a', 'b')
+ def test_match_empty(self):
+ P = self.cls
+ self.assertRaises(ValueError, P('a').match, '')
+ self.assertRaises(ValueError, P('a').match, '.')
+
class PurePosixPathTest(PurePathTest):
cls = pathlib.PurePosixPath
diff --git a/Lib/test/test_pathlib/test_pathlib_abc.py b/Lib/test/test_pathlib/test_pathlib_abc.py
index b088be87141..7c8a0f4687f 100644
--- a/Lib/test/test_pathlib/test_pathlib_abc.py
+++ b/Lib/test/test_pathlib/test_pathlib_abc.py
@@ -153,8 +153,6 @@ class DummyPurePathTest(unittest.TestCase):
# Canonicalized paths roundtrip.
for pathstr in ('a', 'a/b', 'a/b/c', '/', '/a/b', '/a/b/c'):
self._check_str(pathstr, (pathstr,))
- # Special case for the empty path.
- self._check_str('.', ('',))
# Other tests for str() are in test_equivalences().
def test_as_posix_common(self):
@@ -166,7 +164,6 @@ class DummyPurePathTest(unittest.TestCase):
def test_match_empty(self):
P = self.cls
self.assertRaises(ValueError, P('a').match, '')
- self.assertRaises(ValueError, P('a').match, '.')
def test_match_common(self):
P = self.cls
@@ -206,7 +203,6 @@ class DummyPurePathTest(unittest.TestCase):
self.assertTrue(P('a/b/c.py').match('**'))
self.assertTrue(P('/a/b/c.py').match('**'))
self.assertTrue(P('/a/b/c.py').match('/**'))
- self.assertTrue(P('/a/b/c.py').match('**/'))
self.assertTrue(P('/a/b/c.py').match('/a/**'))
self.assertTrue(P('/a/b/c.py').match('**/*.py'))
self.assertTrue(P('/a/b/c.py').match('/**/*.py'))
@@ -270,17 +266,17 @@ class DummyPurePathTest(unittest.TestCase):
self.assertEqual(len(par), 3)
self.assertEqual(par[0], P('a/b'))
self.assertEqual(par[1], P('a'))
- self.assertEqual(par[2], P('.'))
- self.assertEqual(par[-1], P('.'))
+ self.assertEqual(par[2], P(''))
+ self.assertEqual(par[-1], P(''))
self.assertEqual(par[-2], P('a'))
self.assertEqual(par[-3], P('a/b'))
self.assertEqual(par[0:1], (P('a/b'),))
self.assertEqual(par[:2], (P('a/b'), P('a')))
self.assertEqual(par[:-1], (P('a/b'), P('a')))
- self.assertEqual(par[1:], (P('a'), P('.')))
- self.assertEqual(par[::2], (P('a/b'), P('.')))
- self.assertEqual(par[::-1], (P('.'), P('a'), P('a/b')))
- self.assertEqual(list(par), [P('a/b'), P('a'), P('.')])
+ self.assertEqual(par[1:], (P('a'), P('')))
+ self.assertEqual(par[::2], (P('a/b'), P('')))
+ self.assertEqual(par[::-1], (P(''), P('a'), P('a/b')))
+ self.assertEqual(list(par), [P('a/b'), P('a'), P('')])
with self.assertRaises(IndexError):
par[-4]
with self.assertRaises(IndexError):
@@ -334,8 +330,8 @@ class DummyPurePathTest(unittest.TestCase):
def test_name_empty(self):
P = self.cls
self.assertEqual(P('').name, '')
- self.assertEqual(P('.').name, '')
- self.assertEqual(P('/a/b/.').name, 'b')
+ self.assertEqual(P('.').name, '.')
+ self.assertEqual(P('/a/b/.').name, '.')
def test_name_common(self):
P = self.cls
@@ -387,7 +383,7 @@ class DummyPurePathTest(unittest.TestCase):
def test_stem_empty(self):
P = self.cls
self.assertEqual(P('').stem, '')
- self.assertEqual(P('.').stem, '')
+ self.assertEqual(P('.').stem, '.')
def test_stem_common(self):
P = self.cls
@@ -412,11 +408,11 @@ class DummyPurePathTest(unittest.TestCase):
def test_with_name_empty(self):
P = self.cls
- self.assertRaises(ValueError, P('').with_name, 'd.xml')
- self.assertRaises(ValueError, P('.').with_name, 'd.xml')
- self.assertRaises(ValueError, P('/').with_name, 'd.xml')
- self.assertRaises(ValueError, P('a/b').with_name, '')
- self.assertRaises(ValueError, P('a/b').with_name, '.')
+ self.assertEqual(P('').with_name('d.xml'), P('d.xml'))
+ self.assertEqual(P('.').with_name('d.xml'), P('d.xml'))
+ self.assertEqual(P('/').with_name('d.xml'), P('/d.xml'))
+ self.assertEqual(P('a/b').with_name(''), P('a/'))
+ self.assertEqual(P('a/b').with_name('.'), P('a/.'))
def test_with_name_seps(self):
P = self.cls
@@ -436,11 +432,11 @@ class DummyPurePathTest(unittest.TestCase):
def test_with_stem_empty(self):
P = self.cls
- self.assertRaises(ValueError, P('').with_stem, 'd')
- self.assertRaises(ValueError, P('.').with_stem, 'd')
- self.assertRaises(ValueError, P('/').with_stem, 'd')
- self.assertRaises(ValueError, P('a/b').with_stem, '')
- self.assertRaises(ValueError, P('a/b').with_stem, '.')
+ self.assertEqual(P('').with_stem('d'), P('d'))
+ self.assertEqual(P('.').with_stem('d'), P('d'))
+ self.assertEqual(P('/').with_stem('d'), P('/d'))
+ self.assertEqual(P('a/b').with_stem(''), P('a/'))
+ self.assertEqual(P('a/b').with_stem('.'), P('a/.'))
def test_with_stem_seps(self):
P = self.cls
@@ -461,9 +457,9 @@ class DummyPurePathTest(unittest.TestCase):
def test_with_suffix_empty(self):
P = self.cls
# Path doesn't have a "filename" component.
- self.assertRaises(ValueError, P('').with_suffix, '.gz')
- self.assertRaises(ValueError, P('.').with_suffix, '.gz')
- self.assertRaises(ValueError, P('/').with_suffix, '.gz')
+ self.assertEqual(P('').with_suffix('.gz'), P('.gz'))
+ self.assertEqual(P('.').with_suffix('.gz'), P('..gz'))
+ self.assertEqual(P('/').with_suffix('.gz'), P('/.gz'))
def test_with_suffix_seps(self):
P = self.cls