gh-117503: Fix support of non-ASCII user names in posixpath.expanduser() (GH-117504)

They are now supported in bytes paths as well as in string paths.
This commit is contained in:
Serhiy Storchaka 2024-04-17 12:53:40 +03:00 committed by GitHub
parent 44890b209e
commit 51132da0c4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 1 deletions

View File

@ -262,7 +262,7 @@ def expanduser(path):
return path
name = path[1:i]
if isinstance(name, bytes):
name = name.decode('ascii')
name = os.fsdecode(name)
try:
pwent = pwd.getpwnam(name)
except KeyError:

View File

@ -344,6 +344,17 @@ class PosixPathTest(unittest.TestCase):
for path in ('~', '~/.local', '~vstinner/'):
self.assertEqual(posixpath.expanduser(path), path)
@unittest.skipIf(sys.platform == "vxworks",
"no home directory on VxWorks")
def test_expanduser_pwd2(self):
pwd = import_helper.import_module('pwd')
for e in pwd.getpwall():
name = e.pw_name
home = e.pw_dir
self.assertEqual(posixpath.expanduser('~' + name), home)
self.assertEqual(posixpath.expanduser(os.fsencode('~' + name)),
os.fsencode(home))
NORMPATH_CASES = [
("", "."),
("/", "/"),

View File

@ -0,0 +1,2 @@
Fix support of non-ASCII user names in bytes paths in
:func:`os.path.expanduser` on Posix.