Skip to content

Commit

Permalink
bpo-31955: Fix distutils CCompiler.set_executable() for Unicode (GH-4316
Browse files Browse the repository at this point in the history
)

Fix CCompiler.set_executable() of distutils to handle properly Unicode strings.
  • Loading branch information
PavelStishenko authored and vstinner committed Nov 8, 2017
1 parent cd66d6d commit 8494829
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Lib/distutils/ccompiler.py
Expand Up @@ -160,7 +160,7 @@ class (via the 'executables' class attribute), but most will have:
self.set_executable(key, args[key])

def set_executable(self, key, value):
if isinstance(value, str):
if isinstance(value, basestring):
setattr(self, key, split_quoted(value))
else:
setattr(self, key, value)
Expand Down
24 changes: 24 additions & 0 deletions Lib/distutils/tests/test_ccompiler.py
Expand Up @@ -24,6 +24,30 @@ def library_option(self, lib):

class CCompilerTestCase(support.EnvironGuard, unittest.TestCase):

def test_set_executables(self):
class MyCCompiler(CCompiler):
executables = {'compiler': '', 'compiler_cxx': '', 'linker': ''}

compiler = MyCCompiler()

# set executable as list
compiler.set_executables(compiler=['env', 'OMPI_MPICC=clang', 'mpicc'])
self.assertEqual(compiler.compiler, ['env',
'OMPI_MPICC=clang',
'mpicc'])

# set executable as string
compiler.set_executables(compiler_cxx='env OMPI_MPICXX=clang++ mpicxx')
self.assertEqual(compiler.compiler_cxx, ['env',
'OMPI_MPICXX=clang++',
'mpicxx'])

# set executable as unicode string
compiler.set_executables(linker=u'env OMPI_MPICXX=clang++ mpiCC')
self.assertEqual(compiler.linker, [u'env',
u'OMPI_MPICXX=clang++',
u'mpiCC'])

def test_gen_lib_options(self):
compiler = FakeCompiler()
libdirs = ['lib1', 'lib2']
Expand Down
@@ -0,0 +1 @@
Fix CCompiler.set_executable() of distutils to handle properly Unicode strings.

0 comments on commit 8494829

Please sign in to comment.