From 7f0d88860f04d6411dbc1218bf78d9ec5ce153b8 Mon Sep 17 00:00:00 2001 From: Jesus Cea Date: Thu, 10 May 2012 05:10:50 +0200 Subject: Closes #14768: os.path.expanduser('~/a') doesn't works correctly when HOME is '/' --- Lib/posixpath.py | 4 ++-- Lib/test/test_posixpath.py | 1 + Misc/ACKS | 1 + Misc/NEWS | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/posixpath.py b/Lib/posixpath.py index c9829e1..9570a36 100644 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@ -266,8 +266,8 @@ def expanduser(path): root = b'/' else: root = '/' - userhome = userhome.rstrip(root) or userhome - return userhome + path[i:] + userhome = userhome.rstrip(root) + return (userhome + path[i:]) or root # Expand paths containing shell variable substitutions. diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py index bb4559c..a7a3e4a 100644 --- a/Lib/test/test_posixpath.py +++ b/Lib/test/test_posixpath.py @@ -298,6 +298,7 @@ class PosixPathTest(unittest.TestCase): with support.EnvironmentVarGuard() as env: env['HOME'] = '/' self.assertEqual(posixpath.expanduser("~"), "/") + self.assertEqual(posixpath.expanduser("~/foo"), "/foo") # expanduser should fall back to using the password database del env['HOME'] home = pwd.getpwuid(os.getuid()).pw_dir diff --git a/Misc/ACKS b/Misc/ACKS index 6d8b6dd..780c06f 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -308,6 +308,7 @@ Doug Fort John Fouhy Martin Franklin Robin Friedrich +Bradley Froehle Ivan Frohne Jim Fulton Tadayoshi Funaba diff --git a/Misc/NEWS b/Misc/NEWS index b6bc463..c4901b0 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -63,6 +63,8 @@ Core and Builtins Library ------- +- Issue #14768: os.path.expanduser('~/a') doesn't works correctly when HOME is '/'. + - Issue #14741: Fix missing support for Ellipsis ('...') in parser module. - Issue #14697: Fix missing support for set displays and set comprehensions in -- cgit v0.12