mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #6815: os.path.expandvars() now supports non-ASCII environment
variables names and values.
This commit is contained in:
parent
61e2493b83
commit
dbb101909d
5 changed files with 96 additions and 42 deletions
|
@ -248,7 +248,6 @@ class CommonTest(GenericTest):
|
|||
self.assertEqual(expandvars("$[foo]bar"), "$[foo]bar")
|
||||
self.assertEqual(expandvars("$bar bar"), "$bar bar")
|
||||
self.assertEqual(expandvars("$?bar"), "$?bar")
|
||||
self.assertEqual(expandvars("${foo}bar"), "barbar")
|
||||
self.assertEqual(expandvars("$foo}bar"), "bar}bar")
|
||||
self.assertEqual(expandvars("${foo"), "${foo")
|
||||
self.assertEqual(expandvars("${{foo}}"), "baz1}")
|
||||
|
@ -261,13 +260,40 @@ class CommonTest(GenericTest):
|
|||
self.assertEqual(expandvars(b"$[foo]bar"), b"$[foo]bar")
|
||||
self.assertEqual(expandvars(b"$bar bar"), b"$bar bar")
|
||||
self.assertEqual(expandvars(b"$?bar"), b"$?bar")
|
||||
self.assertEqual(expandvars(b"${foo}bar"), b"barbar")
|
||||
self.assertEqual(expandvars(b"$foo}bar"), b"bar}bar")
|
||||
self.assertEqual(expandvars(b"${foo"), b"${foo")
|
||||
self.assertEqual(expandvars(b"${{foo}}"), b"baz1}")
|
||||
self.assertEqual(expandvars(b"$foo$foo"), b"barbar")
|
||||
self.assertEqual(expandvars(b"$bar$bar"), b"$bar$bar")
|
||||
|
||||
@unittest.skipUnless(support.FS_NONASCII, 'need support.FS_NONASCII')
|
||||
def test_expandvars_nonascii(self):
|
||||
if self.pathmodule.__name__ == 'macpath':
|
||||
self.skipTest('macpath.expandvars is a stub')
|
||||
expandvars = self.pathmodule.expandvars
|
||||
def check(value, expected):
|
||||
self.assertEqual(expandvars(value), expected)
|
||||
with support.EnvironmentVarGuard() as env:
|
||||
env.clear()
|
||||
nonascii = support.FS_NONASCII
|
||||
env['spam'] = nonascii
|
||||
env[nonascii] = 'ham' + nonascii
|
||||
check(nonascii, nonascii)
|
||||
check('$spam bar', '%s bar' % nonascii)
|
||||
check('${spam}bar', '%sbar' % nonascii)
|
||||
check('${%s}bar' % nonascii, 'ham%sbar' % nonascii)
|
||||
check('$bar%s bar' % nonascii, '$bar%s bar' % nonascii)
|
||||
check('$spam}bar', '%s}bar' % nonascii)
|
||||
|
||||
check(os.fsencode(nonascii), os.fsencode(nonascii))
|
||||
check(b'$spam bar', os.fsencode('%s bar' % nonascii))
|
||||
check(b'${spam}bar', os.fsencode('%sbar' % nonascii))
|
||||
check(os.fsencode('${%s}bar' % nonascii),
|
||||
os.fsencode('ham%sbar' % nonascii))
|
||||
check(os.fsencode('$bar%s bar' % nonascii),
|
||||
os.fsencode('$bar%s bar' % nonascii))
|
||||
check(b'$spam}bar', os.fsencode('%s}bar' % nonascii))
|
||||
|
||||
def test_abspath(self):
|
||||
self.assertIn("foo", self.pathmodule.abspath("foo"))
|
||||
with warnings.catch_warnings():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue