[Python-checkins] cpython (merge 3.5 -> default): Issue #27048: Prevents distutils failing on Windows when environment variables
steve.dower
python-checkins at python.org
Fri Jun 17 12:34:54 EDT 2016
https://hg.python.org/cpython/rev/bb22ae1e1bcd
changeset: 102074:bb22ae1e1bcd
parent: 102072:cbe977fd306f
parent: 102073:15900c612ca7
user: Steve Dower <steve.dower at microsoft.com>
date: Fri Jun 17 09:33:11 2016 -0700
summary:
Issue #27048: Prevents distutils failing on Windows when environment variables contain non-ASCII characters
files:
Lib/distutils/_msvccompiler.py | 6 +--
Lib/distutils/tests/test_msvccompiler.py | 18 ++++++++++++
Misc/NEWS | 3 ++
3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/Lib/distutils/_msvccompiler.py b/Lib/distutils/_msvccompiler.py
--- a/Lib/distutils/_msvccompiler.py
+++ b/Lib/distutils/_msvccompiler.py
@@ -86,11 +86,9 @@
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 {}"
diff --git a/Lib/distutils/tests/test_msvccompiler.py b/Lib/distutils/tests/test_msvccompiler.py
--- a/Lib/distutils/tests/test_msvccompiler.py
+++ b/Lib/distutils/tests/test_msvccompiler.py
@@ -83,6 +83,24 @@
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)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
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
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list