Issue #27048: Prevents distutils failing on Windows when environment variables contain non-ASCII characters
This commit is contained in:
commit
99d66f917a
|
@ -86,11 +86,9 @@ def _get_vc_env(plat_spec):
|
|||
|
||||
try:
|
||||
out = subprocess.check_output(
|
||||
'"{}" {} && set'.format(vcvarsall, plat_spec),
|
||||
shell=True,
|
||||
'cmd /u /c "{}" {} && set'.format(vcvarsall, plat_spec),
|
||||
stderr=subprocess.STDOUT,
|
||||
universal_newlines=True,
|
||||
)
|
||||
).decode('utf-16le', errors='replace')
|
||||
except subprocess.CalledProcessError as exc:
|
||||
log.error(exc.output)
|
||||
raise DistutilsPlatformError("Error executing {}"
|
||||
|
|
|
@ -83,6 +83,24 @@ class msvccompilerTestCase(support.TempdirManager,
|
|||
self.assertFalse(os.path.isfile(os.path.join(
|
||||
tempdir, os.path.basename(dll))))
|
||||
|
||||
def test_get_vc_env_unicode(self):
|
||||
import distutils._msvccompiler as _msvccompiler
|
||||
|
||||
test_var = 'ṰḖṤṪ┅ṼẨṜ'
|
||||
test_value = '₃⁴₅'
|
||||
|
||||
# Ensure we don't early exit from _get_vc_env
|
||||
old_distutils_use_sdk = os.environ.pop('DISTUTILS_USE_SDK', None)
|
||||
os.environ[test_var] = test_value
|
||||
try:
|
||||
env = _msvccompiler._get_vc_env('x86')
|
||||
self.assertIn(test_var.lower(), env)
|
||||
self.assertEqual(test_value, env[test_var.lower()])
|
||||
finally:
|
||||
os.environ.pop(test_var)
|
||||
if old_distutils_use_sdk:
|
||||
os.environ['DISTUTILS_USE_SDK'] = old_distutils_use_sdk
|
||||
|
||||
def test_suite():
|
||||
return unittest.makeSuite(msvccompilerTestCase)
|
||||
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.6.0 alpha 3
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #27048: Prevents distutils failing on Windows when environment
|
||||
variables contain non-ASCII characters
|
||||
|
||||
- Issue #27330: Fixed possible leaks in the ctypes module.
|
||||
|
||||
- Issue #27238: Got rid of bare excepts in the turtle module. Original patch
|
||||
|
|
Loading…
Reference in New Issue