mirror of https://github.com/python/cpython
Issue #24950: Fixed expanduser tests when the users home directory in pwd is "/".
Based on patch by SilentGhost.
This commit is contained in:
commit
0e120525f0
|
@ -2062,7 +2062,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
|
|||
import pwd
|
||||
pwdent = pwd.getpwuid(os.getuid())
|
||||
username = pwdent.pw_name
|
||||
userhome = pwdent.pw_dir.rstrip('/')
|
||||
userhome = pwdent.pw_dir.rstrip('/') or '/'
|
||||
# find arbitrary different user (if exists)
|
||||
for pwdent in pwd.getpwall():
|
||||
othername = pwdent.pw_name
|
||||
|
|
|
@ -214,6 +214,13 @@ class PosixPathTest(unittest.TestCase):
|
|||
def test_expanduser(self):
|
||||
self.assertEqual(posixpath.expanduser("foo"), "foo")
|
||||
self.assertEqual(posixpath.expanduser(b"foo"), b"foo")
|
||||
with support.EnvironmentVarGuard() as env:
|
||||
for home in '/', '', '//', '///':
|
||||
with self.subTest(home=home):
|
||||
env['HOME'] = home
|
||||
self.assertEqual(posixpath.expanduser("~"), "/")
|
||||
self.assertEqual(posixpath.expanduser("~/"), "/")
|
||||
self.assertEqual(posixpath.expanduser("~/foo"), "/foo")
|
||||
try:
|
||||
import pwd
|
||||
except ImportError:
|
||||
|
@ -237,14 +244,12 @@ class PosixPathTest(unittest.TestCase):
|
|||
self.assertIsInstance(posixpath.expanduser(b"~foo/"), bytes)
|
||||
|
||||
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
|
||||
# $HOME can end with a trailing /, so strip it (see #17809)
|
||||
self.assertEqual(posixpath.expanduser("~"), home.rstrip("/"))
|
||||
home = home.rstrip("/") or '/'
|
||||
self.assertEqual(posixpath.expanduser("~"), home)
|
||||
|
||||
def test_normpath(self):
|
||||
self.assertEqual(posixpath.normpath(""), ".")
|
||||
|
|
Loading…
Reference in New Issue