bpo-36235: Enhance distutils test_customize_compiler() (GH-12403) (GH… · python/cpython@8c380e9 (original) (raw)
`@@ -51,29 +51,98 @@ def test_get_python_inc(self):
`
51
51
`python_h = os.path.join(inc_dir, "Python.h")
`
52
52
`self.assertTrue(os.path.isfile(python_h), python_h)
`
53
53
``
54
``
`-
@unittest.skipUnless(get_default_compiler() == 'unix',
`
55
``
`-
'not testing if default compiler is not unix')
`
56
``
`-
def test_customize_compiler(self):
`
57
``
`-
os.environ['AR'] = 'my_ar'
`
58
``
`-
os.environ['CC'] = 'my_cc'
`
59
``
`-
os.environ['ARFLAGS'] = '--myarflags'
`
60
``
`-
os.environ['CFLAGS'] = '--mycflags'
`
61
``
-
``
54
`+
def customize_compiler(self):
`
62
55
`# make sure AR gets caught
`
63
56
`class compiler:
`
64
57
`compiler_type = 'unix'
`
65
58
``
66
59
`def set_executables(self, **kw):
`
67
60
`self.exes = kw
`
68
61
``
69
``
`-
Make sure that sysconfig._config_vars is initialized
`
70
``
`-
sysconfig.get_config_vars()
`
``
62
`+
sysconfig_vars = {
`
``
63
`+
'AR': 'sc_ar',
`
``
64
`+
'CC': 'sc_cc',
`
``
65
`+
'CXX': 'sc_cxx',
`
``
66
`+
'ARFLAGS': '--sc-arflags',
`
``
67
`+
'CFLAGS': '--sc-cflags',
`
``
68
`+
'CCSHARED': '--sc-ccshared',
`
``
69
`+
'LDSHARED': 'sc_ldshared',
`
``
70
`+
'SO': 'sc_shutil_suffix',
`
``
71
`+
}
`
71
72
``
72
73
`comp = compiler()
`
73
``
`-
with swap_item(sysconfig._config_vars, 'CFLAGS', '--sysconfig-cflags'):
`
``
74
`+
old_vars = dict(sysconfig._config_vars)
`
``
75
`+
try:
`
``
76
`+
for key, value in sysconfig_vars.items():
`
``
77
`+
sysconfig._config_vars[key] = value
`
74
78
`sysconfig.customize_compiler(comp)
`
75
``
`-
self.assertEqual(comp.exes['archiver'], 'my_ar --myarflags')
`
76
``
`-
self.assertEqual(comp.exes['compiler'], 'my_cc --sysconfig-cflags --mycflags')
`
``
79
`+
finally:
`
``
80
`+
sysconfig._config_vars.clear()
`
``
81
`+
sysconfig._config_vars.update(old_vars)
`
``
82
+
``
83
`+
return comp
`
``
84
+
``
85
`+
@unittest.skipUnless(get_default_compiler() == 'unix',
`
``
86
`+
'not testing if default compiler is not unix')
`
``
87
`+
def test_customize_compiler(self):
`
``
88
`+
Make sure that sysconfig._config_vars is initialized
`
``
89
`+
sysconfig.get_config_vars()
`
``
90
+
``
91
`+
os.environ['AR'] = 'env_ar'
`
``
92
`+
os.environ['CC'] = 'env_cc'
`
``
93
`+
os.environ['CPP'] = 'env_cpp'
`
``
94
`+
os.environ['CXX'] = 'env_cxx --env-cxx-flags'
`
``
95
`+
os.environ['LDSHARED'] = 'env_ldshared'
`
``
96
`+
os.environ['LDFLAGS'] = '--env-ldflags'
`
``
97
`+
os.environ['ARFLAGS'] = '--env-arflags'
`
``
98
`+
os.environ['CFLAGS'] = '--env-cflags'
`
``
99
`+
os.environ['CPPFLAGS'] = '--env-cppflags'
`
``
100
+
``
101
`+
comp = self.customize_compiler()
`
``
102
`+
self.assertEqual(comp.exes['archiver'],
`
``
103
`+
'env_ar --env-arflags')
`
``
104
`+
self.assertEqual(comp.exes['preprocessor'],
`
``
105
`+
'env_cpp --env-cppflags')
`
``
106
`+
self.assertEqual(comp.exes['compiler'],
`
``
107
`+
'env_cc --sc-cflags --env-cflags --env-cppflags')
`
``
108
`+
self.assertEqual(comp.exes['compiler_so'],
`
``
109
`+
('env_cc --sc-cflags '
`
``
110
`+
'--env-cflags ''--env-cppflags --sc-ccshared'))
`
``
111
`+
self.assertEqual(comp.exes['compiler_cxx'],
`
``
112
`+
'env_cxx --env-cxx-flags')
`
``
113
`+
self.assertEqual(comp.exes['linker_exe'],
`
``
114
`+
'env_cc')
`
``
115
`+
self.assertEqual(comp.exes['linker_so'],
`
``
116
`+
('env_ldshared --env-ldflags --env-cflags'
`
``
117
`+
' --env-cppflags'))
`
``
118
`+
self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix')
`
``
119
+
``
120
`+
del os.environ['AR']
`
``
121
`+
del os.environ['CC']
`
``
122
`+
del os.environ['CPP']
`
``
123
`+
del os.environ['CXX']
`
``
124
`+
del os.environ['LDSHARED']
`
``
125
`+
del os.environ['LDFLAGS']
`
``
126
`+
del os.environ['ARFLAGS']
`
``
127
`+
del os.environ['CFLAGS']
`
``
128
`+
del os.environ['CPPFLAGS']
`
``
129
+
``
130
`+
comp = self.customize_compiler()
`
``
131
`+
self.assertEqual(comp.exes['archiver'],
`
``
132
`+
'sc_ar --sc-arflags')
`
``
133
`+
self.assertEqual(comp.exes['preprocessor'],
`
``
134
`+
'sc_cc -E')
`
``
135
`+
self.assertEqual(comp.exes['compiler'],
`
``
136
`+
'sc_cc --sc-cflags')
`
``
137
`+
self.assertEqual(comp.exes['compiler_so'],
`
``
138
`+
'sc_cc --sc-cflags --sc-ccshared')
`
``
139
`+
self.assertEqual(comp.exes['compiler_cxx'],
`
``
140
`+
'sc_cxx')
`
``
141
`+
self.assertEqual(comp.exes['linker_exe'],
`
``
142
`+
'sc_cc')
`
``
143
`+
self.assertEqual(comp.exes['linker_so'],
`
``
144
`+
'sc_ldshared')
`
``
145
`+
self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix')
`
77
146
``
78
147
`def test_parse_makefile_base(self):
`
79
148
`self.makefile = test.test_support.TESTFN
`