bpo-33660: Fix PosixPath to resolve a relative path on root (#21974)

(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:51:44 -07:00 committed by GitHub
parent 9de6be4e2a
commit 211e4c6e9c
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

@ -2347,6 +2347,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.