mirror of https://github.com/python/cpython
gh-114709: Fix exceptions raised by posixpath.commonpath (#114710)
Fix the exceptions raised by posixpath.commonpath Raise ValueError, not IndexError when passed an empty iterable. Raise TypeError, not ValueError when passed None.
This commit is contained in:
parent
f9154f8f23
commit
371c970886
|
@ -79,7 +79,7 @@ the :mod:`glob` module.)
|
|||
|
||||
.. function:: commonpath(paths)
|
||||
|
||||
Return the longest common sub-path of each pathname in the sequence
|
||||
Return the longest common sub-path of each pathname in the iterable
|
||||
*paths*. Raise :exc:`ValueError` if *paths* contain both absolute
|
||||
and relative pathnames, the *paths* are on the different drives or
|
||||
if *paths* is empty. Unlike :func:`commonprefix`, this returns a
|
||||
|
@ -90,7 +90,7 @@ the :mod:`glob` module.)
|
|||
.. versionadded:: 3.5
|
||||
|
||||
.. versionchanged:: 3.6
|
||||
Accepts a sequence of :term:`path-like objects <path-like object>`.
|
||||
Accepts an iterable of :term:`path-like objects <path-like object>`.
|
||||
|
||||
|
||||
.. function:: commonprefix(list)
|
||||
|
|
|
@ -546,10 +546,11 @@ def relpath(path, start=None):
|
|||
def commonpath(paths):
|
||||
"""Given a sequence of path names, returns the longest common sub-path."""
|
||||
|
||||
paths = tuple(map(os.fspath, paths))
|
||||
|
||||
if not paths:
|
||||
raise ValueError('commonpath() arg is an empty sequence')
|
||||
|
||||
paths = tuple(map(os.fspath, paths))
|
||||
if isinstance(paths[0], bytes):
|
||||
sep = b'/'
|
||||
curdir = b'.'
|
||||
|
|
|
@ -703,7 +703,9 @@ class PosixPathTest(unittest.TestCase):
|
|||
self.assertRaises(exc, posixpath.commonpath,
|
||||
[os.fsencode(p) for p in paths])
|
||||
|
||||
self.assertRaises(TypeError, posixpath.commonpath, None)
|
||||
self.assertRaises(ValueError, posixpath.commonpath, [])
|
||||
self.assertRaises(ValueError, posixpath.commonpath, iter([]))
|
||||
check_error(ValueError, ['/usr', 'usr'])
|
||||
check_error(ValueError, ['usr', '/usr'])
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
:func:`posixpath.commonpath()` now raises a :exc:`ValueError` exception when
|
||||
passed an empty iterable. Previously, :exc:`IndexError` was raised.
|
||||
|
||||
:func:`posixpath.commonpath()` now raises a :exc:`TypeError` exception when
|
||||
passed ``None``. Previously, :exc:`ValueError` was raised.
|
Loading…
Reference in New Issue