Commit a3fd0b26 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #24950: Fixed expanduser tests when the users home directory in pwd is "/".

Based on patch by SilentGhost.
parent 929d7f86
...@@ -2062,7 +2062,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase): ...@@ -2062,7 +2062,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
import pwd import pwd
pwdent = pwd.getpwuid(os.getuid()) pwdent = pwd.getpwuid(os.getuid())
username = pwdent.pw_name username = pwdent.pw_name
userhome = pwdent.pw_dir.rstrip('/') userhome = pwdent.pw_dir.rstrip('/') or '/'
# find arbitrary different user (if exists) # find arbitrary different user (if exists)
for pwdent in pwd.getpwall(): for pwdent in pwd.getpwall():
othername = pwdent.pw_name othername = pwdent.pw_name
......
...@@ -216,6 +216,13 @@ class PosixPathTest(unittest.TestCase): ...@@ -216,6 +216,13 @@ class PosixPathTest(unittest.TestCase):
def test_expanduser(self): def test_expanduser(self):
self.assertEqual(posixpath.expanduser("foo"), "foo") self.assertEqual(posixpath.expanduser("foo"), "foo")
self.assertEqual(posixpath.expanduser(b"foo"), b"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: try:
import pwd import pwd
except ImportError: except ImportError:
...@@ -239,14 +246,12 @@ class PosixPathTest(unittest.TestCase): ...@@ -239,14 +246,12 @@ class PosixPathTest(unittest.TestCase):
self.assertIsInstance(posixpath.expanduser(b"~foo/"), bytes) self.assertIsInstance(posixpath.expanduser(b"~foo/"), bytes)
with support.EnvironmentVarGuard() as env: 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 # expanduser should fall back to using the password database
del env['HOME'] del env['HOME']
home = pwd.getpwuid(os.getuid()).pw_dir home = pwd.getpwuid(os.getuid()).pw_dir
# $HOME can end with a trailing /, so strip it (see #17809) # $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): def test_normpath(self):
self.assertEqual(posixpath.normpath(""), ".") self.assertEqual(posixpath.normpath(""), ".")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment