summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_posixpath.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-03-31 12:31:53 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-03-31 12:31:53 (GMT)
commit38220931433ab2d83892170e96a4d66764ce5338 (patch)
tree29fe3fe23b61b7627a30da3de0bc218fa9cdaa04 /Lib/test/test_posixpath.py
parentdd83bd2f9c8c328dc6b7655f33581e09df0e3611 (diff)
downloadcpython-38220931433ab2d83892170e96a4d66764ce5338.zip
cpython-38220931433ab2d83892170e96a4d66764ce5338.tar.gz
cpython-38220931433ab2d83892170e96a4d66764ce5338.tar.bz2
Issue #10395: Added os.path.commonpath(). Implemented in posixpath and ntpath.
Based on patch by Rafik Draoui.
Diffstat (limited to 'Lib/test/test_posixpath.py')
-rw-r--r--Lib/test/test_posixpath.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index b2454794..ece3555 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -522,6 +522,60 @@ class PosixPathTest(unittest.TestCase):
finally:
os.getcwdb = real_getcwdb
+ def test_commonpath(self):
+ def check(paths, expected):
+ self.assertEqual(posixpath.commonpath(paths), expected)
+ self.assertEqual(posixpath.commonpath([os.fsencode(p) for p in paths]),
+ os.fsencode(expected))
+ def check_error(exc, paths):
+ self.assertRaises(exc, posixpath.commonpath, paths)
+ self.assertRaises(exc, posixpath.commonpath,
+ [os.fsencode(p) for p in paths])
+
+ self.assertRaises(ValueError, posixpath.commonpath, [])
+ check_error(ValueError, ['/usr', 'usr'])
+ check_error(ValueError, ['usr', '/usr'])
+
+ check(['/usr/local'], '/usr/local')
+ check(['/usr/local', '/usr/local'], '/usr/local')
+ check(['/usr/local/', '/usr/local'], '/usr/local')
+ check(['/usr/local/', '/usr/local/'], '/usr/local')
+ check(['/usr//local', '//usr/local'], '/usr/local')
+ check(['/usr/./local', '/./usr/local'], '/usr/local')
+ check(['/', '/dev'], '/')
+ check(['/usr', '/dev'], '/')
+ check(['/usr/lib/', '/usr/lib/python3'], '/usr/lib')
+ check(['/usr/lib/', '/usr/lib64/'], '/usr')
+
+ check(['/usr/lib', '/usr/lib64'], '/usr')
+ check(['/usr/lib/', '/usr/lib64'], '/usr')
+
+ check(['spam'], 'spam')
+ check(['spam', 'spam'], 'spam')
+ check(['spam', 'alot'], '')
+ check(['and/jam', 'and/spam'], 'and')
+ check(['and//jam', 'and/spam//'], 'and')
+ check(['and/./jam', './and/spam'], 'and')
+ check(['and/jam', 'and/spam', 'alot'], '')
+ check(['and/jam', 'and/spam', 'and'], 'and')
+
+ check([''], '')
+ check(['', 'spam/alot'], '')
+ check_error(ValueError, ['', '/spam/alot'])
+
+ self.assertRaises(TypeError, posixpath.commonpath,
+ [b'/usr/lib/', '/usr/lib/python3'])
+ self.assertRaises(TypeError, posixpath.commonpath,
+ [b'/usr/lib/', 'usr/lib/python3'])
+ self.assertRaises(TypeError, posixpath.commonpath,
+ [b'usr/lib/', '/usr/lib/python3'])
+ self.assertRaises(TypeError, posixpath.commonpath,
+ ['/usr/lib/', b'/usr/lib/python3'])
+ self.assertRaises(TypeError, posixpath.commonpath,
+ ['/usr/lib/', b'usr/lib/python3'])
+ self.assertRaises(TypeError, posixpath.commonpath,
+ ['usr/lib/', b'/usr/lib/python3'])
+
class PosixCommonTest(test_genericpath.CommonTest, unittest.TestCase):
pathmodule = posixpath