|
1 | 1 | """Tests for distutils.sysconfig."""
|
| 2 | +import contextlib |
2 | 3 | import os
|
3 | 4 | import shutil
|
4 | 5 | import subprocess
|
@@ -74,29 +75,94 @@ def test_srcdir_independent_of_cwd(self):
|
74 | 75 | os.chdir(cwd)
|
75 | 76 | self.assertEqual(srcdir, srcdir2)
|
76 | 77 |
|
77 |
| - @unittest.skipUnless(get_default_compiler() == 'unix', |
78 |
| - 'not testing if default compiler is not unix') |
79 |
| - def test_customize_compiler(self): |
80 |
| - os.environ['AR'] = 'my_ar' |
81 |
| - os.environ['CC'] = 'my_cc' |
82 |
| - os.environ['ARFLAGS'] = '--myarflags' |
83 |
| - os.environ['CFLAGS'] = '--mycflags' |
84 |
| - |
| 78 | + def customize_compiler(self): |
85 | 79 | # make sure AR gets caught
|
86 | 80 | class compiler:
|
87 | 81 | compiler_type = 'unix'
|
88 | 82 |
|
89 | 83 | def set_executables(self, **kw):
|
90 | 84 | self.exes = kw
|
91 | 85 |
|
92 |
| - # Make sure that sysconfig._config_vars is initialized |
93 |
| - sysconfig.get_config_vars() |
| 86 | + sysconfig_vars = { |
| 87 | + 'AR': 'sc_ar', |
| 88 | + 'CC': 'sc_cc', |
| 89 | + 'CXX': 'sc_cxx', |
| 90 | + 'ARFLAGS': '--sc-arflags', |
| 91 | + 'CFLAGS': '--sc-cflags', |
| 92 | + 'CCSHARED': '--sc-ccshared', |
| 93 | + 'LDSHARED': 'sc_ldshared', |
| 94 | + 'SHLIB_SUFFIX': 'sc_shutil_suffix', |
| 95 | + } |
94 | 96 |
|
95 | 97 | comp = compiler()
|
96 |
| - with swap_item(sysconfig._config_vars, 'CFLAGS', '--sysconfig-cflags'): |
| 98 | + with contextlib.ExitStack() as cm: |
| 99 | + for key, value in sysconfig_vars.items(): |
| 100 | + cm.enter_context(swap_item(sysconfig._config_vars, key, value)) |
97 | 101 | sysconfig.customize_compiler(comp)
|
98 |
| - self.assertEqual(comp.exes['archiver'], 'my_ar --myarflags') |
99 |
| - self.assertEqual(comp.exes['compiler'], 'my_cc --sysconfig-cflags --mycflags') |
| 102 | + |
| 103 | + return comp |
| 104 | + |
| 105 | + @unittest.skipUnless(get_default_compiler() == 'unix', |
| 106 | + 'not testing if default compiler is not unix') |
| 107 | + def test_customize_compiler(self): |
| 108 | + # Make sure that sysconfig._config_vars is initialized |
| 109 | + sysconfig.get_config_vars() |
| 110 | + |
| 111 | + os.environ['AR'] = 'env_ar' |
| 112 | + os.environ['CC'] = 'env_cc' |
| 113 | + os.environ['CPP'] = 'env_cpp' |
| 114 | + os.environ['CXX'] = 'env_cxx --env-cxx-flags' |
| 115 | + os.environ['LDSHARED'] = 'env_ldshared' |
| 116 | + os.environ['LDFLAGS'] = '--env-ldflags' |
| 117 | + os.environ['ARFLAGS'] = '--env-arflags' |
| 118 | + os.environ['CFLAGS'] = '--env-cflags' |
| 119 | + os.environ['CPPFLAGS'] = '--env-cppflags' |
| 120 | + |
| 121 | + comp = self.customize_compiler() |
| 122 | + self.assertEqual(comp.exes['archiver'], |
| 123 | + 'env_ar --env-arflags') |
| 124 | + self.assertEqual(comp.exes['preprocessor'], |
| 125 | + 'env_cpp --env-cppflags') |
| 126 | + self.assertEqual(comp.exes['compiler'], |
| 127 | + 'env_cc --sc-cflags --env-cflags --env-cppflags') |
| 128 | + self.assertEqual(comp.exes['compiler_so'], |
| 129 | + ('env_cc --sc-cflags ' |
| 130 | + '--env-cflags ''--env-cppflags --sc-ccshared')) |
| 131 | + self.assertEqual(comp.exes['compiler_cxx'], |
| 132 | + 'env_cxx --env-cxx-flags') |
| 133 | + self.assertEqual(comp.exes['linker_exe'], |
| 134 | + 'env_cc') |
| 135 | + self.assertEqual(comp.exes['linker_so'], |
| 136 | + ('env_ldshared --env-ldflags --env-cflags' |
| 137 | + ' --env-cppflags')) |
| 138 | + self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix') |
| 139 | + |
| 140 | + del os.environ['AR'] |
| 141 | + del os.environ['CC'] |
| 142 | + del os.environ['CPP'] |
| 143 | + del os.environ['CXX'] |
| 144 | + del os.environ['LDSHARED'] |
| 145 | + del os.environ['LDFLAGS'] |
| 146 | + del os.environ['ARFLAGS'] |
| 147 | + del os.environ['CFLAGS'] |
| 148 | + del os.environ['CPPFLAGS'] |
| 149 | + |
| 150 | + comp = self.customize_compiler() |
| 151 | + self.assertEqual(comp.exes['archiver'], |
| 152 | + 'sc_ar --sc-arflags') |
| 153 | + self.assertEqual(comp.exes['preprocessor'], |
| 154 | + 'sc_cc -E') |
| 155 | + self.assertEqual(comp.exes['compiler'], |
| 156 | + 'sc_cc --sc-cflags') |
| 157 | + self.assertEqual(comp.exes['compiler_so'], |
| 158 | + 'sc_cc --sc-cflags --sc-ccshared') |
| 159 | + self.assertEqual(comp.exes['compiler_cxx'], |
| 160 | + 'sc_cxx') |
| 161 | + self.assertEqual(comp.exes['linker_exe'], |
| 162 | + 'sc_cc') |
| 163 | + self.assertEqual(comp.exes['linker_so'], |
| 164 | + 'sc_ldshared') |
| 165 | + self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix') |
100 | 166 |
|
101 | 167 | def test_parse_makefile_base(self):
|
102 | 168 | self.makefile = TESTFN
|
|
0 commit comments