summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorJesus Cea <jcea@jcea.es>2012-05-10 03:10:50 (GMT)
committerJesus Cea <jcea@jcea.es>2012-05-10 03:10:50 (GMT)
commit7f0d88860f04d6411dbc1218bf78d9ec5ce153b8 (patch)
tree8c08d2d132666b6f9924d6e7d1f0acbd6e3c0d4a /Lib
parentd576c711a510204604f707e1cbf773b4a39f21a3 (diff)
downloadcpython-7f0d88860f04d6411dbc1218bf78d9ec5ce153b8.zip
cpython-7f0d88860f04d6411dbc1218bf78d9ec5ce153b8.tar.gz
cpython-7f0d88860f04d6411dbc1218bf78d9ec5ce153b8.tar.bz2
Closes #14768: os.path.expanduser('~/a') doesn't works correctly when HOME is '/'
Diffstat (limited to 'Lib')
-rw-r--r--Lib/posixpath.py4
-rw-r--r--Lib/test/test_posixpath.py1
2 files changed, 3 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