[Python-checkins] bpo-33660: Fix PosixPath to resolve a relative path on root (GH-21975)
Miss Islington (bot)
webhook-mailer at python.org
Wed Aug 26 20:47:20 EDT 2020
https://github.com/python/cpython/commit/7475aa2c590e33a47f5e79e4079bca0645e93f2f
commit: 7475aa2c590e33a47f5e79e4079bca0645e93f2f
branch: 3.8
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2020-08-27T02:47:10+02:00
summary:
bpo-33660: Fix PosixPath to resolve a relative path on root (GH-21975)
(cherry picked from commit 94ad6c674f7687ef22853cb8d42b440d6b42ddc8)
Co-authored-by: Dong-hee Na <donghee.na92 at gmail.com>
files:
A Misc/NEWS.d/next/Library/2018-06-12-23-30-41.bpo-33660.AdDn5Z.rst
M Lib/pathlib.py
M Lib/test/test_pathlib.py
diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index ff8bac94bc0be..4f72bab3bdbbc 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -329,7 +329,10 @@ def _resolve(path, rest):
# 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]
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index 36226948222d6..e9f928a986555 100644
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -2214,6 +2214,15 @@ def test_open_mode(self):
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)
diff --git a/Misc/NEWS.d/next/Library/2018-06-12-23-30-41.bpo-33660.AdDn5Z.rst b/Misc/NEWS.d/next/Library/2018-06-12-23-30-41.bpo-33660.AdDn5Z.rst
new file mode 100644
index 0000000000000..cce3dbb1c6ea5
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-06-12-23-30-41.bpo-33660.AdDn5Z.rst
@@ -0,0 +1,2 @@
+Fix pathlib.PosixPath to resolve a relative path located on the root
+directory properly.
More information about the Python-checkins
mailing list