mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
[3.12] gh-117503: Fix support of non-ASCII user names in posixpath.expanduser() (GH-117504) (GH-117970)
They are now supported in bytes paths as well as in string paths.
(cherry picked from commit 51132da0c4
)
This commit is contained in:
parent
ac48fdeb0d
commit
96b29b32c1
3 changed files with 14 additions and 1 deletions
|
@ -290,7 +290,7 @@ def expanduser(path):
|
||||||
return path
|
return path
|
||||||
name = path[1:i]
|
name = path[1:i]
|
||||||
if isinstance(name, bytes):
|
if isinstance(name, bytes):
|
||||||
name = str(name, 'ASCII')
|
name = os.fsdecode(name)
|
||||||
try:
|
try:
|
||||||
pwent = pwd.getpwnam(name)
|
pwent = pwd.getpwnam(name)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
|
@ -334,6 +334,17 @@ class PosixPathTest(unittest.TestCase):
|
||||||
for path in ('~', '~/.local', '~vstinner/'):
|
for path in ('~', '~/.local', '~vstinner/'):
|
||||||
self.assertEqual(posixpath.expanduser(path), path)
|
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 = [
|
NORMPATH_CASES = [
|
||||||
("", "."),
|
("", "."),
|
||||||
("/", "/"),
|
("/", "/"),
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fix support of non-ASCII user names in bytes paths in
|
||||||
|
:func:`os.path.expanduser` on Posix.
|
Loading…
Add table
Add a link
Reference in a new issue