summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-03-18 16:19:02 (GMT)
committerGitHub <noreply@github.com>2019-03-18 16:19:02 (GMT)
commit72c7b372cf145fded93a9a776acc742a60090f95 (patch)
tree190823a6760f08bf7983f160947cba6fff21e0cd /Lib
parent9e06d2b865beb62e54a4da39eb191f9fb8385282 (diff)
downloadcpython-72c7b372cf145fded93a9a776acc742a60090f95.zip
cpython-72c7b372cf145fded93a9a776acc742a60090f95.tar.gz
cpython-72c7b372cf145fded93a9a776acc742a60090f95.tar.bz2
bpo-36235: Enhance distutils test_customize_compiler() (GH-12403)
The test test_customize_compiler() now mocks all sysconfig variables and all environment variables used by customize_compiler().
Diffstat (limited to 'Lib')
-rw-r--r--Lib/distutils/tests/test_sysconfig.py92
1 files changed, 79 insertions, 13 deletions
diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py
index 4bf6a06..245a6c8 100644
--- a/Lib/distutils/tests/test_sysconfig.py
+++ b/Lib/distutils/tests/test_sysconfig.py
@@ -1,4 +1,5 @@
"""Tests for distutils.sysconfig."""
+import contextlib
import os
import shutil
import subprocess
@@ -74,14 +75,7 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
os.chdir(cwd)
self.assertEqual(srcdir, srcdir2)
- @unittest.skipUnless(get_default_compiler() == 'unix',
- 'not testing if default compiler is not unix')
- def test_customize_compiler(self):
- os.environ['AR'] = 'my_ar'
- os.environ['CC'] = 'my_cc'
- os.environ['ARFLAGS'] = '--myarflags'
- os.environ['CFLAGS'] = '--mycflags'
-
+ def customize_compiler(self):
# make sure AR gets caught
class compiler:
compiler_type = 'unix'
@@ -89,14 +83,86 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
def set_executables(self, **kw):
self.exes = kw
- # Make sure that sysconfig._config_vars is initialized
- sysconfig.get_config_vars()
+ sysconfig_vars = {
+ 'AR': 'sc_ar',
+ 'CC': 'sc_cc',
+ 'CXX': 'sc_cxx',
+ 'ARFLAGS': '--sc-arflags',
+ 'CFLAGS': '--sc-cflags',
+ 'CCSHARED': '--sc-ccshared',
+ 'LDSHARED': 'sc_ldshared',
+ 'SHLIB_SUFFIX': 'sc_shutil_suffix',
+ }
comp = compiler()
- with swap_item(sysconfig._config_vars, 'CFLAGS', '--sysconfig-cflags'):
+ with contextlib.ExitStack() as cm:
+ for key, value in sysconfig_vars.items():
+ cm.enter_context(swap_item(sysconfig._config_vars, key, value))
sysconfig.customize_compiler(comp)
- self.assertEqual(comp.exes['archiver'], 'my_ar --myarflags')
- self.assertEqual(comp.exes['compiler'], 'my_cc --sysconfig-cflags --mycflags')
+
+ return comp
+
+ @unittest.skipUnless(get_default_compiler() == 'unix',
+ 'not testing if default compiler is not unix')
+ def test_customize_compiler(self):
+ # Make sure that sysconfig._config_vars is initialized
+ sysconfig.get_config_vars()
+
+ os.environ['AR'] = 'env_ar'
+ os.environ['CC'] = 'env_cc'
+ os.environ['CPP'] = 'env_cpp'
+ os.environ['CXX'] = 'env_cxx --env-cxx-flags'
+ os.environ['LDSHARED'] = 'env_ldshared'
+ os.environ['LDFLAGS'] = '--env-ldflags'
+ os.environ['ARFLAGS'] = '--env-arflags'
+ os.environ['CFLAGS'] = '--env-cflags'
+ os.environ['CPPFLAGS'] = '--env-cppflags'
+
+ comp = self.customize_compiler()
+ self.assertEqual(comp.exes['archiver'],
+ 'env_ar --env-arflags')
+ self.assertEqual(comp.exes['preprocessor'],
+ 'env_cpp --env-cppflags')
+ self.assertEqual(comp.exes['compiler'],
+ 'env_cc --sc-cflags --env-cflags --env-cppflags')
+ self.assertEqual(comp.exes['compiler_so'],
+ ('env_cc --sc-cflags '
+ '--env-cflags ''--env-cppflags --sc-ccshared'))
+ self.assertEqual(comp.exes['compiler_cxx'],
+ 'env_cxx --env-cxx-flags')
+ self.assertEqual(comp.exes['linker_exe'],
+ 'env_cc')
+ self.assertEqual(comp.exes['linker_so'],
+ ('env_ldshared --env-ldflags --env-cflags'
+ ' --env-cppflags'))
+ self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix')
+
+ del os.environ['AR']
+ del os.environ['CC']
+ del os.environ['CPP']
+ del os.environ['CXX']
+ del os.environ['LDSHARED']
+ del os.environ['LDFLAGS']
+ del os.environ['ARFLAGS']
+ del os.environ['CFLAGS']
+ del os.environ['CPPFLAGS']
+
+ comp = self.customize_compiler()
+ self.assertEqual(comp.exes['archiver'],
+ 'sc_ar --sc-arflags')
+ self.assertEqual(comp.exes['preprocessor'],
+ 'sc_cc -E')
+ self.assertEqual(comp.exes['compiler'],
+ 'sc_cc --sc-cflags')
+ self.assertEqual(comp.exes['compiler_so'],
+ 'sc_cc --sc-cflags --sc-ccshared')
+ self.assertEqual(comp.exes['compiler_cxx'],
+ 'sc_cxx')
+ self.assertEqual(comp.exes['linker_exe'],
+ 'sc_cc')
+ self.assertEqual(comp.exes['linker_so'],
+ 'sc_ldshared')
+ self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix')
def test_parse_makefile_base(self):
self.makefile = TESTFN