bpo-33660: Fix PosixPath to resolve a relative path on root (GH-21975)

(cherry picked from commit 94ad6c674f)

Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
This commit is contained in:
Miss Islington (bot) 2020-08-26 17:47:10 -07:00 committed by GitHub
parent 57b698886b
commit 7475aa2c59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 1 deletions

View file

@ -329,7 +329,10 @@ class _PosixFlavour(_Flavour):
# parent dir
path, _, _ = path.rpartition(sep)
continue
newpath = path + sep + name
if path.endswith(sep):
newpath = path + name
else:
newpath = path + sep + name
if newpath in seen:
# Already seen this path
path = seen[newpath]

View file

@ -2214,6 +2214,15 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
st = os.stat(join('other_new_file'))
self.assertEqual(stat.S_IMODE(st.st_mode), 0o644)
def test_resolve_root(self):
current_directory = os.getcwd()
try:
os.chdir('/')
p = self.cls('spam')
self.assertEqual(str(p.resolve()), '/spam')
finally:
os.chdir(current_directory)
def test_touch_mode(self):
old_mask = os.umask(0)
self.addCleanup(os.umask, old_mask)

View file

@ -0,0 +1,2 @@
Fix pathlib.PosixPath to resolve a relative path located on the root
directory properly.