diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-05-03 18:17:03 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-05-03 18:17:03 (GMT) |
commit | a3fd0b26ba7d302475e051b698c86f512d0e7a14 (patch) | |
tree | 182105d3ba29f726e1aa0f41f2c40382ffdc7243 | |
parent | 929d7f86d50b21ac10ad7fea73d3b9c4cf63b18a (diff) | |
download | cpython-a3fd0b26ba7d302475e051b698c86f512d0e7a14.zip cpython-a3fd0b26ba7d302475e051b698c86f512d0e7a14.tar.gz cpython-a3fd0b26ba7d302475e051b698c86f512d0e7a14.tar.bz2 |
Issue #24950: Fixed expanduser tests when the users home directory in pwd is "/".
Based on patch by SilentGhost.
-rw-r--r-- | Lib/test/test_pathlib.py | 2 | ||||
-rw-r--r-- | Lib/test/test_posixpath.py | 13 |
2 files changed, 10 insertions, 5 deletions
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 247a6b3..0ea4aef 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -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 diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py index 9d20471..acf1102 100644 --- a/Lib/test/test_posixpath.py +++ b/Lib/test/test_posixpath.py @@ -216,6 +216,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: @@ -239,14 +246,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(""), ".") |