bpo-38081: Fixes ntpath.realpath('NUL') (GH-15899)
This commit is contained in:
parent
455122a009
commit
92521fea5d
|
@ -535,9 +535,10 @@ else:
|
|||
try:
|
||||
path = _nt_readlink(path)
|
||||
except OSError as ex:
|
||||
# Stop on file (2) or directory (3) not found, or
|
||||
# paths that are not reparse points (4390)
|
||||
if ex.winerror in (2, 3, 4390):
|
||||
# Stop on incorrect function (1), file (2) or
|
||||
# directory (3) not found, or paths that are
|
||||
# not reparse points (4390)
|
||||
if ex.winerror in (1, 2, 3, 4390):
|
||||
break
|
||||
raise
|
||||
except ValueError:
|
||||
|
@ -553,9 +554,9 @@ else:
|
|||
except OSError:
|
||||
pass
|
||||
|
||||
# Allow file (2) or directory (3) not found, invalid syntax (123),
|
||||
# and symlinks that cannot be followed (1921)
|
||||
allowed_winerror = 2, 3, 123, 1921
|
||||
# Allow file (2) or directory (3) not found, incorrect parameter (87),
|
||||
# invalid syntax (123), and symlinks that cannot be followed (1921)
|
||||
allowed_winerror = 2, 3, 87, 123, 1921
|
||||
|
||||
# Non-strict algorithm is to find as much of the target directory
|
||||
# as we can and join the rest.
|
||||
|
|
|
@ -400,6 +400,10 @@ class TestNtpath(NtpathTestCase):
|
|||
self.assertPathEqual(ntpath.realpath("\\\\?\\" + ABSTFN + "3.link"),
|
||||
"\\\\?\\" + ABSTFN + "3.")
|
||||
|
||||
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
||||
def test_realpath_nul(self):
|
||||
tester("ntpath.realpath('NUL')", r'\\.\NUL')
|
||||
|
||||
def test_expandvars(self):
|
||||
with support.EnvironmentVarGuard() as env:
|
||||
env.clear()
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Prevent error calling :func:`os.path.realpath` on ``'NUL'``.
|
Loading…
Reference in New Issue