summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-12-28 18:49:04 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2013-12-28 18:49:04 (GMT)
commit156b3610b883f3d14c1a3d115f00a7e5d2437132 (patch)
tree08a1fada997730f1bf6455d3bc5e1cbe73529fdb /Lib/test
parent68816ef0583c2284f53126a198a011f7d1eff3a5 (diff)
downloadcpython-156b3610b883f3d14c1a3d115f00a7e5d2437132.zip
cpython-156b3610b883f3d14c1a3d115f00a7e5d2437132.tar.gz
cpython-156b3610b883f3d14c1a3d115f00a7e5d2437132.tar.bz2
Issue #19918: Fix PurePath.relative_to() under Windows.
Diffstat (limited to 'Lib/test')
-rwxr-xr-xLib/test/test_pathlib.py85
1 files changed, 57 insertions, 28 deletions
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index bdcba9f..b6deedb 100755
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -536,9 +536,14 @@ class _BasePurePathTest(object):
P = self.cls
p = P('a/b')
self.assertRaises(TypeError, p.relative_to)
+ self.assertRaises(TypeError, p.relative_to, b'a')
self.assertEqual(p.relative_to(P()), P('a/b'))
+ self.assertEqual(p.relative_to(''), P('a/b'))
self.assertEqual(p.relative_to(P('a')), P('b'))
+ self.assertEqual(p.relative_to('a'), P('b'))
+ self.assertEqual(p.relative_to('a/'), P('b'))
self.assertEqual(p.relative_to(P('a/b')), P())
+ self.assertEqual(p.relative_to('a/b'), P())
# With several args
self.assertEqual(p.relative_to('a', 'b'), P())
# Unrelated paths
@@ -548,13 +553,18 @@ class _BasePurePathTest(object):
self.assertRaises(ValueError, p.relative_to, P('/a'))
p = P('/a/b')
self.assertEqual(p.relative_to(P('/')), P('a/b'))
+ self.assertEqual(p.relative_to('/'), P('a/b'))
self.assertEqual(p.relative_to(P('/a')), P('b'))
+ self.assertEqual(p.relative_to('/a'), P('b'))
+ self.assertEqual(p.relative_to('/a/'), P('b'))
self.assertEqual(p.relative_to(P('/a/b')), P())
+ self.assertEqual(p.relative_to('/a/b'), P())
# Unrelated paths
self.assertRaises(ValueError, p.relative_to, P('/c'))
self.assertRaises(ValueError, p.relative_to, P('/a/b/c'))
self.assertRaises(ValueError, p.relative_to, P('/a/c'))
self.assertRaises(ValueError, p.relative_to, P())
+ self.assertRaises(ValueError, p.relative_to, '')
self.assertRaises(ValueError, p.relative_to, P('a'))
def test_pickling_common(self):
@@ -917,42 +927,61 @@ class PureWindowsPathTest(_BasePurePathTest, unittest.TestCase):
def test_relative_to(self):
P = self.cls
- p = P('c:a/b')
- self.assertEqual(p.relative_to(P('c:')), P('a/b'))
- self.assertEqual(p.relative_to(P('c:a')), P('b'))
- self.assertEqual(p.relative_to(P('c:a/b')), P())
+ p = P('C:Foo/Bar')
+ self.assertEqual(p.relative_to(P('c:')), P('Foo/Bar'))
+ self.assertEqual(p.relative_to('c:'), P('Foo/Bar'))
+ self.assertEqual(p.relative_to(P('c:foO')), P('Bar'))
+ self.assertEqual(p.relative_to('c:foO'), P('Bar'))
+ self.assertEqual(p.relative_to('c:foO/'), P('Bar'))
+ self.assertEqual(p.relative_to(P('c:foO/baR')), P())
+ self.assertEqual(p.relative_to('c:foO/baR'), P())
# Unrelated paths
self.assertRaises(ValueError, p.relative_to, P())
+ self.assertRaises(ValueError, p.relative_to, '')
self.assertRaises(ValueError, p.relative_to, P('d:'))
- self.assertRaises(ValueError, p.relative_to, P('a'))
- self.assertRaises(ValueError, p.relative_to, P('/a'))
- self.assertRaises(ValueError, p.relative_to, P('c:a/b/c'))
- self.assertRaises(ValueError, p.relative_to, P('c:a/c'))
- self.assertRaises(ValueError, p.relative_to, P('c:/a'))
- p = P('c:/a/b')
- self.assertEqual(p.relative_to(P('c:')), P('/a/b'))
- self.assertEqual(p.relative_to(P('c:/')), P('a/b'))
- self.assertEqual(p.relative_to(P('c:/a')), P('b'))
- self.assertEqual(p.relative_to(P('c:/a/b')), P())
+ self.assertRaises(ValueError, p.relative_to, P('/'))
+ self.assertRaises(ValueError, p.relative_to, P('Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('/Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('C:/Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('C:Foo/Bar/Baz'))
+ self.assertRaises(ValueError, p.relative_to, P('C:Foo/Baz'))
+ p = P('C:/Foo/Bar')
+ self.assertEqual(p.relative_to(P('c:')), P('/Foo/Bar'))
+ self.assertEqual(p.relative_to('c:'), P('/Foo/Bar'))
+ self.assertEqual(str(p.relative_to(P('c:'))), '\\Foo\\Bar')
+ self.assertEqual(str(p.relative_to('c:')), '\\Foo\\Bar')
+ self.assertEqual(p.relative_to(P('c:/')), P('Foo/Bar'))
+ self.assertEqual(p.relative_to('c:/'), P('Foo/Bar'))
+ self.assertEqual(p.relative_to(P('c:/foO')), P('Bar'))
+ self.assertEqual(p.relative_to('c:/foO'), P('Bar'))
+ self.assertEqual(p.relative_to('c:/foO/'), P('Bar'))
+ self.assertEqual(p.relative_to(P('c:/foO/baR')), P())
+ self.assertEqual(p.relative_to('c:/foO/baR'), P())
# Unrelated paths
- self.assertRaises(ValueError, p.relative_to, P('c:/c'))
- self.assertRaises(ValueError, p.relative_to, P('c:/a/b/c'))
- self.assertRaises(ValueError, p.relative_to, P('c:/a/c'))
- self.assertRaises(ValueError, p.relative_to, P('c:a'))
+ self.assertRaises(ValueError, p.relative_to, P('C:/Baz'))
+ self.assertRaises(ValueError, p.relative_to, P('C:/Foo/Bar/Baz'))
+ self.assertRaises(ValueError, p.relative_to, P('C:/Foo/Baz'))
+ self.assertRaises(ValueError, p.relative_to, P('C:Foo'))
self.assertRaises(ValueError, p.relative_to, P('d:'))
self.assertRaises(ValueError, p.relative_to, P('d:/'))
- self.assertRaises(ValueError, p.relative_to, P('/a'))
- self.assertRaises(ValueError, p.relative_to, P('//c/a'))
+ self.assertRaises(ValueError, p.relative_to, P('/'))
+ self.assertRaises(ValueError, p.relative_to, P('/Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('//C/Foo'))
# UNC paths
- p = P('//a/b/c/d')
- self.assertEqual(p.relative_to(P('//a/b')), P('c/d'))
- self.assertEqual(p.relative_to(P('//a/b/c')), P('d'))
- self.assertEqual(p.relative_to(P('//a/b/c/d')), P())
+ p = P('//Server/Share/Foo/Bar')
+ self.assertEqual(p.relative_to(P('//sErver/sHare')), P('Foo/Bar'))
+ self.assertEqual(p.relative_to('//sErver/sHare'), P('Foo/Bar'))
+ self.assertEqual(p.relative_to('//sErver/sHare/'), P('Foo/Bar'))
+ self.assertEqual(p.relative_to(P('//sErver/sHare/Foo')), P('Bar'))
+ self.assertEqual(p.relative_to('//sErver/sHare/Foo'), P('Bar'))
+ self.assertEqual(p.relative_to('//sErver/sHare/Foo/'), P('Bar'))
+ self.assertEqual(p.relative_to(P('//sErver/sHare/Foo/Bar')), P())
+ self.assertEqual(p.relative_to('//sErver/sHare/Foo/Bar'), P())
# Unrelated paths
- self.assertRaises(ValueError, p.relative_to, P('/a/b/c'))
- self.assertRaises(ValueError, p.relative_to, P('c:/a/b/c'))
- self.assertRaises(ValueError, p.relative_to, P('//z/b/c'))
- self.assertRaises(ValueError, p.relative_to, P('//a/z/c'))
+ self.assertRaises(ValueError, p.relative_to, P('/Server/Share/Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('c:/Server/Share/Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('//z/Share/Foo'))
+ self.assertRaises(ValueError, p.relative_to, P('//Server/z/Foo'))
def test_is_absolute(self):
P = self.cls