[Python-checkins] bpo-36235: Enhance distutils test_customize_compiler() (GH-12403) (GH-12415)

Victor Stinner webhook-mailer at python.org
Mon Mar 18 13:34:36 EDT 2019


https://github.com/python/cpython/commit/dd1cfefd67f254ce44f33995922e347c9d3f7b4e
commit: dd1cfefd67f254ce44f33995922e347c9d3f7b4e
branch: 3.7
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-03-18T18:34:11+01:00
summary:

bpo-36235: Enhance distutils test_customize_compiler() (GH-12403) (GH-12415)

The test test_customize_compiler() now mocks all sysconfig variables
and all environment variables used by customize_compiler().

(cherry picked from commit 72c7b372cf145fded93a9a776acc742a60090f95)

files:
M Lib/distutils/tests/test_sysconfig.py

diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py
index 4bf6a067d4d9..245a6c86b111 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 @@ def test_srcdir_independent_of_cwd(self):
             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 compiler:
             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



More information about the Python-checkins mailing list