diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-04-23 22:55:39 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-04-23 22:55:39 (GMT) |
commit | ce2d24d54987a73fd584ae299d3349f534943c65 (patch) | |
tree | 24366e82ffd0cb5266d325034205765a5321d544 /Lib | |
parent | 13bb71c38f1830f3fabd45b51bb3747aa841b1cb (diff) | |
download | cpython-ce2d24d54987a73fd584ae299d3349f534943c65.zip cpython-ce2d24d54987a73fd584ae299d3349f534943c65.tar.gz cpython-ce2d24d54987a73fd584ae299d3349f534943c65.tar.bz2 |
Fix test_undecodable_env of test_subproces for non-ASCII directory
This test was introduced by r80421 (issue #8391).
The fix: copy the environment variables instead of starting Python in an empty
environement. In an empty environment, the locale is C and Python uses ASCII
for the default file system encoding. The non-ASCII directory will be encoded
using surrogates, but Python3 is unable to load a module or package with a
filename using surrogates.
See issue #8242 for more information about running Python3 with a non-ascii
directory in an empty environement.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_subprocess.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index ce53932..be163fc 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -807,9 +807,11 @@ class POSIXProcessTestCase(BaseTestCase): # test str with surrogates script = "import os; print(repr(os.getenv(%s)))" % repr(key) + env = os.environ.copy() + env[key] = value stdout = subprocess.check_output( [sys.executable, "-c", script], - env={key: value}) + env=env) stdout = stdout.rstrip(b'\n\r') self.assertEquals(stdout, value_repr) @@ -817,9 +819,11 @@ class POSIXProcessTestCase(BaseTestCase): key = key.encode("ascii", "surrogateescape") value = value.encode("ascii", "surrogateescape") script = "import os; print(repr(os.getenv(%s)))" % repr(key) + env = os.environ.copy() + env[key] = value stdout = subprocess.check_output( [sys.executable, "-c", script], - env={key: value}) + env=env) stdout = stdout.rstrip(b'\n\r') self.assertEquals(stdout, value_repr) |