bpo-30177: pathlib: include the full path in resolve(strict=False) (#1893)

This commit is contained in:
Antoine Pietri 2017-06-07 17:29:17 +02:00 committed by Steve Dower
parent ff48739ed0
commit add98eb4fe
3 changed files with 21 additions and 20 deletions

View file

@ -183,19 +183,18 @@ class _WindowsFlavour(_Flavour):
if strict:
return self._ext_to_normal(_getfinalpathname(s))
else:
tail_parts = [] # End of the path after the first one not found
while True:
try:
s = self._ext_to_normal(_getfinalpathname(s))
except FileNotFoundError:
previous_s = s
s = os.path.dirname(s)
s, tail = os.path.split(s)
tail_parts.append(tail)
if previous_s == s:
return path
else:
if previous_s is None:
return s
else:
return s + os.path.sep + os.path.basename(previous_s)
return os.path.join(s, *reversed(tail_parts))
# Means fallback on absolute
return None
@ -326,12 +325,10 @@ class _PosixFlavour(_Flavour):
try:
target = accessor.readlink(newpath)
except OSError as e:
if e.errno != EINVAL:
if strict:
raise
else:
return newpath
# Not a symlink
if e.errno != EINVAL and strict:
raise
# Not a symlink, or non-strict mode. We just leave the path
# untouched.
path = newpath
else:
seen[newpath] = None # not resolved symlink