mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
GH-44626, GH-105476: Fix ntpath.isabs()
handling of part-absolute paths (#113829)
On Windows, `os.path.isabs()` now returns `False` when given a path that starts with exactly one (back)slash. This is more compatible with other functions in `os.path`, and with Microsoft's own documentation. Also adjust `pathlib.PureWindowsPath.is_absolute()` to call `ntpath.isabs()`, which corrects its handling of partial UNC/device paths like `//foo`. Co-authored-by: Jon Foster <jon@jon-foster.co.uk>
This commit is contained in:
parent
dac1da2121
commit
e4ff131e01
9 changed files with 51 additions and 33 deletions
|
@ -227,10 +227,18 @@ class TestNtpath(NtpathTestCase):
|
|||
tester('ntpath.split("//conky/mountpoint/")', ('//conky/mountpoint/', ''))
|
||||
|
||||
def test_isabs(self):
|
||||
tester('ntpath.isabs("foo\\bar")', 0)
|
||||
tester('ntpath.isabs("foo/bar")', 0)
|
||||
tester('ntpath.isabs("c:\\")', 1)
|
||||
tester('ntpath.isabs("c:\\foo\\bar")', 1)
|
||||
tester('ntpath.isabs("c:/foo/bar")', 1)
|
||||
tester('ntpath.isabs("\\\\conky\\mountpoint\\")', 1)
|
||||
tester('ntpath.isabs("\\foo")', 1)
|
||||
tester('ntpath.isabs("\\foo\\bar")', 1)
|
||||
|
||||
# gh-44626: paths with only a drive or root are not absolute.
|
||||
tester('ntpath.isabs("\\foo\\bar")', 0)
|
||||
tester('ntpath.isabs("/foo/bar")', 0)
|
||||
tester('ntpath.isabs("c:foo\\bar")', 0)
|
||||
tester('ntpath.isabs("c:foo/bar")', 0)
|
||||
|
||||
# gh-96290: normal UNC paths and device paths without trailing backslashes
|
||||
tester('ntpath.isabs("\\\\conky\\mountpoint")', 1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue