To: python-checkins at python.org Subject: bpo-33660: Fix PosixPath to resolve a relative path on root Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 https://github.com/python/cpython/commit/94ad6c674f7687ef22853cb8d42b440d6b42= ddc8 commit: 94ad6c674f7687ef22853cb8d42b440d6b42ddc8 branch: master author: Dong-hee Na <donghee.na92 at gmail.com> committer: =C5=81ukasz Langa <lukasz at langa.pl> date: 2020-08-27T02:24:38+02:00 summary: bpo-33660: Fix PosixPath to resolve a relative path on root 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 9f5e27b91178e..babc443dd3b30 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -329,7 +329,10 @@ def _resolve(path, rest): # parent dir path, _, _ =3D path.rpartition(sep) continue - newpath =3D path + sep + name + if path.endswith(sep): + newpath =3D path + name + else: + newpath =3D path + sep + name if newpath in seen: # Already seen this path path =3D seen[newpath] diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 04f7c3d86671b..2cb6738a295b6 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -2349,6 +2349,15 @@ def test_open_mode(self): st =3D os.stat(join('other_new_file')) self.assertEqual(stat.S_IMODE(st.st_mode), 0o644) =20 + def test_resolve_root(self): + current_directory =3D os.getcwd() + try: + os.chdir('/') + p =3D self.cls('spam') + self.assertEqual(str(p.resolve()), '/spam') + finally: + os.chdir(current_directory) + def test_touch_mode(self): old_mask =3D 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.rs= t 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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4