Issues (11)

tools/fused/iuwandbox_pp.py (2 issues)

1
#!/usr/bin/env python
2
#
3
# iuwandbox_pp.py
4
#
5
# Copyright (C) 2018, Takazumi Shirayanagi
6
# This software is released under the new BSD License,
7
# see LICENSE
8
#
9
10
import os
11
import sys
12
import codecs
13
import re
14
import collections
15
from iutest_pp_strip import IutestPreprocessor
16
from iutest_pp_strip import UNUSED_
17
18
predefined_macros = {
19
    '__WANDBOX__': '1',
20
    'NULL': '0',
21
    'IUTEST_USE_GTEST': None,
22
    'IUTEST_BUILD_DOXYGEN': None,
23
    '_IUTEST_DEBUG': None,
24
    '__CYGWIN__': None,
25
    'IUTEST_OS_CYGWIN': None,
26
    '__MINGW__': None,
27
    '__MINGW32__': None,
28
    '__MINGW64__': None,
29
    '__linux__': '1',
30
    '__arm__': None,
31
    '__ARMCC_VERSION': None,
32
    '__AVR32__': None,
33
    '__avr32__': None,
34
    'IUTEST_OS_AVR32': None,
35
    'ANDROID': None,
36
    '__ANDROID__': None,
37
    'IUTEST_OS_LINUX_ANDROID': None,
38
    '__APPLE__': None,
39
    '__APPLE_CC__': None,
40
    'IUTEST_OS_IOS': None,
41
    'IUTEST_OS_MAC': None,
42
    '__INTEL_COMPILER': None,
43
    '__BORLANDC__': None,
44
    '__CUDACC__': None,
45
    '__IBMCPP__': None,
46
    'COMPILER_ICC': None,
47
    '_MSC_VER': None,
48
    '_MSC_FULL_VER': None,
49
    '_MSVC_LANG': None,
50
    '_WIN32': None,
51
    'WIN32': None,
52
    '__WIN32__': None,
53
    'UNICODE': None,
54
    'WINAPI_FAMILY': None,
55
    '__AFX_H__': None,
56
    '__MWERKS__': None,
57
    '__FreeBSD__': None,
58
    'sun': None,
59
    '__sun': None,
60
    '__MAC_OS_X_VERSION_MIN_REQUIRED': None,
61
    '_STLPORT_VERSION': None,
62
    '_BSD_SOURCE': None,
63
    '__USE_MINGW_ANSI_STDIO': None,
64
    '__GLIBCPP__': None,
65
    'MAX_PATH': None,
66
    'PATH_MAX': None,
67
    'IUTEST_OS_WINDOWS': None,
68
    'IUTEST_OS_WINDOWS_MINGW': None,
69
    'IUTEST_OS_WINDOWS_MOBILE': None,
70
    'IUTEST_OS_WINDOWS_PHONE': None,
71
    'IUTEST_OS_WINDOWS_RT': None,
72
    'IUTEST_OS_WINDOWS_WINE': None,
73
    'IUTEST_NO_UTIL_ASSERTION_GTEST_COMPATIBLE': '1',
74
    'IUTEST_NO_TWO_PHASE_NAME_LOOKUP': None,
75
    'IUTEST_NO_FUNCTION_TEMPLATE_ORDERING': None,
76
    'IUTEST_NO_INCLASS_MEMBER_INITIALIZATION': None,
77
    'IUTEST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS': None,
78
    'IUTEST_NO_SFINAE': None,
79
    'IUTEST_NO_TEMPLATE_PARTIAL_SPECIALIZATION': None,
80
    'IUTEST_NO_TEMPLATE_TEMPLATES': None,
81
    'IUTEST_NO_VOID_RETURNS': None,
82
    'IUTEST_NO_ARGUMENT_DEPENDENT_LOOKUP': None,
83
    'IUTEST_NO_PRIVATE_IN_AGGREGATE': None,
84
    'IUTEST_NO_VARIADIC_MACROS': None,
85
    'IUTEST_NO_UNITEST_AD_HOC_TEST_RESULT_ACCESSOR': None,
86
    'IUTEST_NO_TESTCASE_AD_HOC_TEST_RESULT_ACCESSOR': None,
87
    'IUTEST_NO_LAMBDA_SCOPE_RESOLUTION': None,
88
    'IUTEST_NO_GETENV': None,
89
    'IUTEST_NO_PUTENV': None,
90
    'IUTEST_NO_SETENV': None,
91
    'IUTEST_NO_GETCWD': None,
92
    'IUTEST_NOT_SUPPORT_STOPWATCH': None,
93
    'IUTEST_HAS_CXX_HDR_CHARCONV': '0',
94
    'IUTEST_HAS_WANT_SECURE_LIB': '0',
95
    'IUTEST_HAS_MS_EXTENSIONS': '0',
96
    'IUTEST_HAS_MS_CXX_MODULE': '0',
97
    'IUTEST_HAS_CATCH_SEH_EXCEPTION_ASSERTION': '0',
98
    'MS_CPP_UNITTESTFRAMEWORK': None,
99
    'IUTEST_EXPLICIT_INSTANTIATION_ACCESS_PRIVATE_MEMBER_FUNCTION': '1',
100
    'IUTEST_EXPLICIT_INSTANTIATION_ACCESS_PRIVATE_STATIC_MEMBER_FUNCTION': '1',
101
    '__native_client__': None,
102
    'IUTEST_OS_NACL': None,
103
    'IUTEST_HAS_INVALID_PARAMETER_HANDLER': '0',
104
    '__clang_analyzer__': None,
105
    'IUTEST_ANALYSIS_ASSUME_DELEGATE': None,
106
    'IUTEST_MBS_CODE': '0',
107
    'IUTEST_USE_EXTERNAL_STD_TUPLE': '0',
108
    'IUTEST_USE_EXTERNAL_TR1_TUPLE': '0',
109
    'IUTEST_USE_CXX_FILESYSTEM': '0',
110
    'IUTEST_HAS_TESTSUITE': '1',
111
    'IUTEST_HAS_TESTCASE': '1',
112
    'IUTEST_CXX_NOEXCEPT': UNUSED_,
113
    'IUTEST_CXX_NOEXCEPT_AS': UNUSED_,
114
    'IUTEST_CXX_NOTHROW': UNUSED_,
115
    'IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY': UNUSED_,
116
    'IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL': UNUSED_,
117
    'IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST': UNUSED_,
118
    'IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_FLOAT_CONVERSION': UNUSED_,
119
    'IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION': UNUSED_,
120
    'IUTEST_PRAGMA_WARN_DISABLE_NARROWING': UNUSED_,
121
    'IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM': UNUSED_,
122
    'IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN': UNUSED_,
123
    'IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN': UNUSED_,
124
    'IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION': UNUSED_,
125
    'IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE': None,
126
    'IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE': None,
127
    'IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION': None,
128
    'IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL': None,
129
    'IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE': None,
130
    'IUTEST_MAKE_ASSERTIONRESULT_': UNUSED_,
131
    'IUTEST_COND_LIKELY': UNUSED_,
132
    'IUTEST_COND_UNLIKELY': UNUSED_,
133
    'IUTEST_ATTRIBUTE_LIKELY_': '',
134
    'IUTEST_ATTRIBUTE_UNLIKELY_': '',
135
    'IUTEST_ATTRIBUTE_UNUSED_': None,
136
    'IUTEST_ATTRIBUTE_NORETURN_': None,
137
    'IUTEST_ATTRIBUTE_FORMAT_PRINTF': None,
138
    'IUTEST_ATTRIBUTE_FORMAT': None,
139
    # no overridable
140
    'IUTEST_SUCCEED': None,
141
    'IUTEST_FAIL': None,
142
    'IUTEST_ADD_FAILURE': None,
143
    'IUTEST_ADD_FAILURE_AT': None,
144
    'IUTEST_SKIP': None,
145
    'IUTEST_ASSERT': None,
146
    'IUTEST_ASSERT_NOT': None,
147
    'IUTEST_ASSERT_THAT': None,
148
    'IUTEST_ASSERT_EQ': None,
149
    'IUTEST_ASSERT_ALMOST_EQ': None,
150
    'IUTEST_ASSERT_NE': None,
151
    'IUTEST_ASSERT_LT': None,
152
    'IUTEST_ASSERT_LE': None,
153
    'IUTEST_ASSERT_GT': None,
154
    'IUTEST_ASSERT_GE': None,
155
    'IUTEST_ASSERT_TRUE': None,
156
    'IUTEST_ASSERT_FALSE': None,
157
    'IUTEST_ASSERT_NULL': None,
158
    'IUTEST_ASSERT_NOTNULL': None,
159
    'IUTEST_ASSERT_SAME': None,
160
    'IUTEST_ASSERT_FLOAT_EQ': None,
161
    'IUTEST_ASSERT_DOUBLE_EQ': None,
162
    'IUTEST_ASSERT_LONG_DOUBLE_EQ': None,
163
    'IUTEST_ASSERT_NEAR': None,
164
    'IUTEST_ASSERT_STREQ': None,
165
    'IUTEST_ASSERT_STRNE': None,
166
    'IUTEST_ASSERT_STRCASEEQ': None,
167
    'IUTEST_ASSERT_STRCASENE': None,
168
    'IUTEST_ASSERT_THROW': None,
169
    'IUTEST_ASSERT_THROW_VALUE_EQ': None,
170
    'IUTEST_ASSERT_THROW_VALUE_NE': None,
171
    'IUTEST_ASSERT_THROW_VALUE_STREQ': None,
172
    'IUTEST_ASSERT_THROW_VALUE_STRCASEEQ': None,
173
    'IUTEST_ASSERT_ANY_THROW': None,
174
    'IUTEST_ASSERT_NO_THROW': None,
175
    'IUTEST_ASSERT_NO_FAILURE': None,
176
    'IUTEST_ASSERT_NO_FATAL_FAILURE': None,
177
    'IUTEST_ASSERT_FAIL': None,
178
    'IUTEST_ASSERT_EQ_COLLECTIONS': None,
179
    'IUTEST_ASSERT_NE_COLLECTIONS': None,
180
    'IUTEST_ASSERT_EQ_RANGE': None,
181
    'IUTEST_ASSERT_NE_RANGE': None,
182
    'IUTEST_ASSERT_STRLNEQ': None,
183
    'IUTEST_ASSERT_STRIN': None,
184
    'IUTEST_ASSERT_STRNOTIN': None,
185
    'IUTEST_ASSERT_MATCHES_REGEXEQ': None,
186
    'IUTEST_ASSERT_MATCHES_REGEXNE': None,
187
    'IUTEST_ASSERT_CONTAINS_REGEXEQ': None,
188
    'IUTEST_ASSERT_CONTAINS_REGEXNE': None,
189
    'IUTEST_EXPECT': None,
190
    'IUTEST_EXPECT_NOT': None,
191
    'IUTEST_EXPECT_THAT': None,
192
    'IUTEST_EXPECT_EQ': None,
193
    'IUTEST_EXPECT_ALMOST_EQ': None,
194
    'IUTEST_EXPECT_NE': None,
195
    'IUTEST_EXPECT_LT': None,
196
    'IUTEST_EXPECT_LE': None,
197
    'IUTEST_EXPECT_GT': None,
198
    'IUTEST_EXPECT_GE': None,
199
    'IUTEST_EXPECT_TRUE': None,
200
    'IUTEST_EXPECT_FALSE': None,
201
    'IUTEST_EXPECT_NULL': None,
202
    'IUTEST_EXPECT_NOTNULL': None,
203
    'IUTEST_EXPECT_SAME': None,
204
    'IUTEST_EXPECT_FLOAT_EQ': None,
205
    'IUTEST_EXPECT_DOUBLE_EQ': None,
206
    'IUTEST_EXPECT_LONG_DOUBLE_EQ': None,
207
    'IUTEST_EXPECT_NEAR': None,
208
    'IUTEST_EXPECT_STREQ': None,
209
    'IUTEST_EXPECT_STRNE': None,
210
    'IUTEST_EXPECT_STRCASEEQ': None,
211
    'IUTEST_EXPECT_STRCASENE': None,
212
    'IUTEST_EXPECT_THROW': None,
213
    'IUTEST_EXPECT_THROW_VALUE_EQ': None,
214
    'IUTEST_EXPECT_THROW_VALUE_NE': None,
215
    'IUTEST_EXPECT_THROW_VALUE_STREQ': None,
216
    'IUTEST_EXPECT_THROW_VALUE_STRCASEEQ': None,
217
    'IUTEST_EXPECT_ANY_THROW': None,
218
    'IUTEST_EXPECT_NO_THROW': None,
219
    'IUTEST_EXPECT_NO_FAILURE': None,
220
    'IUTEST_EXPECT_NO_FATAL_FAILURE': None,
221
    'IUTEST_EXPECT_FAIL': None,
222
    'IUTEST_EXPECT_EQ_COLLECTIONS': None,
223
    'IUTEST_EXPECT_NE_COLLECTIONS': None,
224
    'IUTEST_EXPECT_EQ_RANGE': None,
225
    'IUTEST_EXPECT_NE_RANGE': None,
226
    'IUTEST_EXPECT_STRLNEQ': None,
227
    'IUTEST_EXPECT_STRIN': None,
228
    'IUTEST_EXPECT_STRNOTIN': None,
229
    'IUTEST_EXPECT_MATCHES_REGEXEQ': None,
230
    'IUTEST_EXPECT_MATCHES_REGEXNE': None,
231
    'IUTEST_EXPECT_CONTAINS_REGEXEQ': None,
232
    'IUTEST_EXPECT_CONTAINS_REGEXNE': None,
233
    'IUTEST_INFORM': None,
234
    'IUTEST_INFORM_NOT': None,
235
    'IUTEST_INFORM_THAT': None,
236
    'IUTEST_INFORM_EQ': None,
237
    'IUTEST_INFORM_ALMOST_EQ': None,
238
    'IUTEST_INFORM_NE': None,
239
    'IUTEST_INFORM_LT': None,
240
    'IUTEST_INFORM_LE': None,
241
    'IUTEST_INFORM_GT': None,
242
    'IUTEST_INFORM_GE': None,
243
    'IUTEST_INFORM_TRUE': None,
244
    'IUTEST_INFORM_FALSE': None,
245
    'IUTEST_INFORM_NULL': None,
246
    'IUTEST_INFORM_NOTNULL': None,
247
    'IUTEST_INFORM_SAME': None,
248
    'IUTEST_INFORM_FLOAT_EQ': None,
249
    'IUTEST_INFORM_DOUBLE_EQ': None,
250
    'IUTEST_INFORM_LONG_DOUBLE_EQ': None,
251
    'IUTEST_INFORM_NEAR': None,
252
    'IUTEST_INFORM_STREQ': None,
253
    'IUTEST_INFORM_STRNE': None,
254
    'IUTEST_INFORM_STRCASEEQ': None,
255
    'IUTEST_INFORM_STRCASENE': None,
256
    'IUTEST_INFORM_THROW': None,
257
    'IUTEST_INFORM_THROW_VALUE_EQ': None,
258
    'IUTEST_INFORM_THROW_VALUE_NE': None,
259
    'IUTEST_INFORM_THROW_VALUE_STREQ': None,
260
    'IUTEST_INFORM_THROW_VALUE_STRCASEEQ': None,
261
    'IUTEST_INFORM_ANY_THROW': None,
262
    'IUTEST_INFORM_NO_THROW': None,
263
    'IUTEST_INFORM_NO_FAILURE': None,
264
    'IUTEST_INFORM_NO_FATAL_FAILURE': None,
265
    'IUTEST_INFORM_FAIL': None,
266
    'IUTEST_INFORM_EQ_COLLECTIONS': None,
267
    'IUTEST_INFORM_NE_COLLECTIONS': None,
268
    'IUTEST_INFORM_EQ_RANGE': None,
269
    'IUTEST_INFORM_NE_RANGE': None,
270
    'IUTEST_INFORM_STRLNEQ': None,
271
    'IUTEST_INFORM_STRIN': None,
272
    'IUTEST_INFORM_STRNOTIN': None,
273
    'IUTEST_INFORM_MATCHES_REGEXEQ': None,
274
    'IUTEST_INFORM_MATCHES_REGEXNE': None,
275
    'IUTEST_INFORM_CONTAINS_REGEXEQ': None,
276
    'IUTEST_INFORM_CONTAINS_REGEXNE': None,
277
    'IUTEST_ASSUME': None,
278
    'IUTEST_ASSUME_NOT': None,
279
    'IUTEST_ASSUME_THAT': None,
280
    'IUTEST_ASSUME_EQ': None,
281
    'IUTEST_ASSUME_ALMOST_EQ': None,
282
    'IUTEST_ASSUME_NE': None,
283
    'IUTEST_ASSUME_LT': None,
284
    'IUTEST_ASSUME_LE': None,
285
    'IUTEST_ASSUME_GT': None,
286
    'IUTEST_ASSUME_GE': None,
287
    'IUTEST_ASSUME_TRUE': None,
288
    'IUTEST_ASSUME_FALSE': None,
289
    'IUTEST_ASSUME_NULL': None,
290
    'IUTEST_ASSUME_NOTNULL': None,
291
    'IUTEST_ASSUME_SAME': None,
292
    'IUTEST_ASSUME_FLOAT_EQ': None,
293
    'IUTEST_ASSUME_DOUBLE_EQ': None,
294
    'IUTEST_ASSUME_LONG_DOUBLE_EQ': None,
295
    'IUTEST_ASSUME_NEAR': None,
296
    'IUTEST_ASSUME_STREQ': None,
297
    'IUTEST_ASSUME_STRNE': None,
298
    'IUTEST_ASSUME_STRCASEEQ': None,
299
    'IUTEST_ASSUME_STRCASENE': None,
300
    'IUTEST_ASSUME_THROW': None,
301
    'IUTEST_ASSUME_THROW_VALUE_EQ': None,
302
    'IUTEST_ASSUME_THROW_VALUE_NE': None,
303
    'IUTEST_ASSUME_THROW_VALUE_STREQ': None,
304
    'IUTEST_ASSUME_THROW_VALUE_STRCASEEQ': None,
305
    'IUTEST_ASSUME_ANY_THROW': None,
306
    'IUTEST_ASSUME_NO_THROW': None,
307
    'IUTEST_ASSUME_NO_FAILURE': None,
308
    'IUTEST_ASSUME_NO_FATAL_FAILURE': None,
309
    'IUTEST_ASSUME_FAIL': None,
310
    'IUTEST_ASSUME_EQ_COLLECTIONS': None,
311
    'IUTEST_ASSUME_NE_COLLECTIONS': None,
312
    'IUTEST_ASSUME_EQ_RANGE': None,
313
    'IUTEST_ASSUME_NE_RANGE': None,
314
    'IUTEST_ASSUME_STRLNEQ': None,
315
    'IUTEST_ASSUME_STRIN': None,
316
    'IUTEST_ASSUME_STRNOTIN': None,
317
    'IUTEST_ASSUME_MATCHES_REGEXEQ': None,
318
    'IUTEST_ASSUME_MATCHES_REGEXNE': None,
319
    'IUTEST_ASSUME_CONTAINS_REGEXEQ': None,
320
    'IUTEST_ASSUME_CONTAINS_REGEXNE': None,
321
    'IUTEST_VPRINTF': None,
322
    'IUTEST_REMOVE_LEGACY_TEST_CASEAPI_': None,
323
    'IUTEST_HAS_CXX11': None,
324
    'IUTEST_HAS_CXX14': None,
325
    'IUTEST_HAS_CXX1Z': None,
326
    'IUTEST_HAS_CXX17': None,
327
    'IUTEST_HAS_CXX2A': None,
328
    'IUTEST_HAS_CXX20': None,
329
    'IUTEST_HAS_ATTRIBUTE': None,
330
    'IUTEST_HAS_AUTO': None,
331
    'IUTEST_HAS_CHAR8_T': None,
332
    'IUTEST_HAS_CHAR16_T': None,
333
    'IUTEST_HAS_CHAR32_T': None,
334
    'IUTEST_HAS_CONCEPTS': None,
335
    'IUTEST_HAS_CONSTEXPR': None,
336
    'IUTEST_HAS_CONSTEXPR_IF': None,
337
    'IUTEST_HAS_DECLTYPE': None,
338
    'IUTEST_HAS_DELETED_FUNCTIONS': None,
339
    'IUTEST_HAS_DEFAULT_FUNCTIONS': None,
340
    'IUTEST_HAS_EXCEPTIONS': None,
341
    'IUTEST_HAS_EXPLICIT_CONVERSION': None,
342
    'IUTEST_HAS_INITIALIZER_LIST': None,
343
    'IUTEST_HAS_INLINE_VARIABLE': None,
344
    'IUTEST_HAS_INT128': None,
345
    'IUTEST_HAS_LAMBDA': None,
346
    'IUTEST_HAS_NOEXCEPT': None,
347
    'IUTEST_HAS_NULLPTR': None,
348
    'IUTEST_HAS_OVERRIDE_AND_FINAL': None,
349
    'IUTEST_HAS_RTTI': None,
350
    'IUTEST_HAS_RVALUE_REFS': None,
351
    'IUTEST_HAS_STATIC_ASSERT': None,
352
    'IUTEST_HAS_STD_FILESYSTEM': None,
353
    'IUTEST_HAS_VARIADIC_TEMPLATES': None,
354
    'IUTEST_WCHAR_UNSIGNED': None,
355
    'IUTEST_HAS_MATCHER_VARIADIC': None,
356
    'IUTEST_HAS_REGEX': None,
357
    'IUTEST_HAS_MATCHER_ELEMENTSAREARRAYFORWARD': None,
358
    'IUTEST_HAS_MATCHER_ELEMENTSARE': None,
359
    'IUTEST_HAS_VARIADIC_PAIRWISE': None,
360
    'IUTEST_HAS_VARIADIC_COMBINE': None,
361
    'IUTEST_HAS_VARIADIC_VALUES': None,
362
    'IUTEST_HAS_PAIRWISE': None,
363
    'IUTEST_HAS_COMBINE': None,
364
    'IUTEST_HAS_BITWISE_EXPRESSION_DECOMPOSE': None,
365
    'IUTEST_USE_THROW_ON_ASSERTION_FAILURE': None,
366
    'IUTEST_HAS_SPI_LAMBDA_SUPPORT': None,
367
    'IUTEST_HAS_LAMBDA_STATEMENTS': None,
368
    'IUTEST_HAS_PEEP_FUNC': None,
369
    'IUTEST_HAS_PEEP_STATIC_FUNC': None,
370
    'IUTEST_HAS_PEEP_CLASS': None,
371
    'IUTEST_HAS_VARIADIC_PRED': None,
372
    'IUTEST_HAS_TYPED_TEST_APPEND_TYPENAME': None,
373
    'IUTEST_HAS_LONG_DOUBLE': None,
374
    'IUTEST_HAS_CLOCK': None,
375
    'IUTEST_HAS_CHAR16_T_PRINTABLE': None,
376
    'IUTEST_HAS_CHAR32_T_PRINTABLE': None,
377
    'IUTEST_USE_OWN_STRING_VIEW': None,
378
    'IUTEST_HAS_HDR_CXXABI': None,
379
    'IUTEST_HAS_CXX_HDR_ANY': None,
380
    'IUTEST_HAS_CXX_HDR_FILESYSTEM': None,
381
    'IUTEST_HAS_CXX_HDR_OPTIONAL': None,
382
    'IUTEST_HAS_CXX_HDR_STRING_VIEW': None,
383
    'IUTEST_HAS_CXX_HDR_TYPE_TARITS': None,
384
    'IUTEST_HAS_CXX_HDR_VARIANT': None,
385
    'IUTEST_HAS_CXX_HDR_VERSION': None,
386
    'IUTEST_PP_MSVC_TRADITIONAL': None,
387
}
388
389
iutest_config_macro = {
390
    'IUTEST_HAS_LIB': '0',
391
    'IUTEST_HAS_PARAM_TEST': '1',
392
    'IUTEST_HAS_TYPED_TEST': '1',
393
    'IUTEST_HAS_TYPED_TEST_P': '1',
394
    'IUTEST_TYPED_TEST_P_STRICT': '1',
395
    'IUTEST_HAS_MATCHERS': '1',
396
    'IUTEST_HAS_VALUESGEN': '1',
397
    'IUTEST_HAS_RANDOMVALUES': '1',
398
    'IUTEST_HAS_CONCAT': '1',
399
    'IUTEST_HAS_CSVPARAMS': '1',
400
    'IUTEST_HAS_TESTNAME_ALIAS_JP': '0',
401
    'IUTEST_HAS_TESTFIXTURE_ALIAS_BY_TUPLE': '1',
402
    'IUTEST_HAS_AUTOFIXTURE_PARAM_TEST': '1',
403
    'IUTEST_HAS_ANY_PARAM_TEST': '1',
404
    'IUTEST_HAS_PARAM_TEST_PARAM_NAME_GENERATOR': '1',
405
    'IUTEST_HAS_IF_EXISTS': '0',
406
    'IUTEST_HAS_ANALYSIS_ASSUME': '0',
407
    'IUTEST_HAS_IGNORE_TEST': '0',
408
    'IUTEST_HAS_MINIDUMP': '0',
409
    'IUTEST_HAS_STRSTREAM': '0',
410
    'IUTEST_HAS_STRINGSTREAM': '1',
411
    'IUTEST_HAS_IOMANIP': '1',
412
    'IUTEST_HAS_CTIME': '1',
413
    'IUTEST_HAS_GETTIMEOFDAY': '1',
414
    'IUTEST_HAS_HDR_SYSTIME': '1',
415
    'IUTEST_HAS_FOPEN': '1',
416
    'IUTEST_HAS_FILE_STAT': '1',
417
    'IUTEST_HAS_CLASS_MEMBER_TEMPLATE_SPECIALIZATION': '0',
418
    'IUTEST_HAS_GENERIC': '0',
419
    'IUTEST_HAS_MEMORY_SANITIZER': '0',
420
    'IUTEST_HAS_ADDRESS_SANITIZER': '0',
421
    'IUTEST_HAS_THREAD_SANITIZER': '0',
422
    'IUTEST_HAS_SEH': '0',
423
    'IUTEST_USE_OWN_LIST': '0',
424
    'IUTEST_HAS_MATCHER_FLOATINGPOINT_NEAR': '1',
425
    'IUTEST_HAS_MATCHER_EACH': '1',
426
    'IUTEST_HAS_MATCHER_POINTWISE': '1',
427
    'IUTEST_HAS_GENRAND': '1',
428
    'IUTEST_HAS_PACKAGE': '1',
429
    'IUTEST_HAS_PEEP': '1',
430
    'IUTEST_HAS_SOCKET': '1',
431
    'IUTEST_HAS_PRINT_TO': '1',
432
    'IUTEST_HAS_ARITHMETIC_EXPRESSION_DECOMPOSE': '1',
433
    'IUTEST_HAS_STATIC_ASSERT_TYPEEQ': '1',
434
    'IUTEST_HAS_ASSERTION_RETURN': '1',
435
    'IUTEST_HAS_ASSERTION_NOEQUALTO_OBJECT': '1',
436
    'IUTEST_HAS_TESTNAME_ALIAS': '1',
437
    'IUTEST_HAS_REPORT_SKIPPED': '1',
438
    'IUTEST_HAS_STREAM_BUFFER': '1',
439
    'IUTEST_HAS_STREAM_RESULT': '0',
440
    'IUTEST_HAS_BIGGESTINT_OSTREAM': '1',
441
    'IUTEST_CHECK_STRICT': '0',
442
    'IUTEST_HAS_COLORCONSOLE': '0',
443
    'IUTEST_FORCE_COLORCONSOLE': '0',
444
    'IUTEST_HAS_ATTRIBUTE_LIKELY_UNLIKELY': '0',
445
    'IUTEST_HAS_BUILTIN_EXPECT': '0',
446
    'IUTEST_HAS_PARAM_METHOD_TEST': '1',
447
    'IUTEST_HAS_MATCHER_OPTIONAL': '1',
448
    'IUTEST_TYPED_TEST_APPEND_TYPENAME': '0',
449
    'IUTEST_HAS_FILENO': '0',
450
}
451
452
expands_macros = [
453
    'IUTEST_IPP_INLINE',
454
    'IUTEST_ATTRIBUTE_DEPRECATED_',
455
    'IUTEST_ATTRIBUTE_PURE_',
456
    'IUTEST_ATTRIBUTE_INIT_PRIORITY_',
457
    'IUTEST_ATTRIBUTE_LIKELY_',
458
    'IUTEST_ATTRIBUTE_UNLIKELY_',
459
    'IUTEST_HAS_ATTRIBUTE_DEPRECATED',
460
    'IUTEST_CXX_MODULE_EXPORT',
461
    'IUTEST_ATTRIBUTE_NO_SANITIZE_MEMORY',
462
    'IUTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS',
463
    'IUTEST_ATTRIBUTE_NO_SANITIZE_THREAD',
464
    'IUTEST_ATTRIBUTE_NO_SANITIZE_ALL',
465
    'IUTEST_HAS_TESTSUITE',
466
    'IUTEST_HAS_TESTCASE',
467
]
468
469
# expand function macros
470
expand_function_macros = [
471
    'IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN',
472
    'IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END',
473
    'IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_BEGIN',
474
    'IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_END',
475
    'IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN',
476
    'IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_END',
477
    'IUTEST_PRAGMA_MSC_WARN_PUSH',
478
    'IUTEST_PRAGMA_MSC_WARN_DISABLE',
479
    'IUTEST_PRAGMA_MSC_WARN_POP',
480
    'IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_BEGIN',
481
    'IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_END',
482
    'IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_BEGIN',
483
    'IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_END',
484
    'IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY',
485
    'IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL',
486
    'IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST',
487
    'IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_FLOAT_CONVERSION',
488
    'IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION',
489
    'IUTEST_PRAGMA_WARN_DISABLE_NARROWING',
490
    'IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM',
491
    'IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN',
492
    'IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN',
493
    'IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION',
494
    'IUTEST_WORKAROUND_MSC_STLSTREAM_C4250',
495
    'IUTEST_EXPLICIT_TEMPLATE_TYPE_',
496
    'IUTEST_IF_EXISTS',
497
    'IUTEST_IF_NOT_EXISTS',
498
    'IUTEST_STATIC_EXISTS',
499
    'IUTEST_STATIC_ASSERT_IF_EXISTS',
500
    'IUTEST_STATIC_ASSERT_IF_NOT_EXISTS',
501
    'IUTEST_ANALYSIS_ASSUME',
502
    'IUTEST_PP_ENUM_CASE_RETURN_STRING',
503
    'IUTEST_CLASS_INITIALIZE',
504
    'IUTEST_CLASS_CLEANUP',
505
    'IUTEST_METHOD_INITIALIZE',
506
    'IUTEST_METHOD_CLEANUP',
507
    'IUTEST_PRAGMA_MESSAGE',
508
    'IUTEST_TEST_COMPILEERROR',
509
    'IUTEST_TEST_STATICASSERT',
510
    # 'IUTEST_MAKE_ASSERTIONRESULT_',
511
]
512
513
#
514
has_features = {
515
}
516
517
has_include = {
518
}
519
520
rename_macro = {
521
    'IUTEST_ASSERT_FAILURE': 'II_A_FAIL',
522
    'IUTEST_EXPECT_FAILURE': 'II_E_FAIL',
523
    'IUTEST_INFORM_FAILURE': 'II_I_FAIL',
524
    'IUTEST_ASSUME_FAILURE': 'II_M_FAIL',
525
    'IUTEST_ASSERT_FAILURE_AT': 'II_A_FAIL_AT',
526
    'IUTEST_EXPECT_FAILURE_AT': 'II_E_FAIL_AT',
527
    'IUTEST_INFORM_FAILURE_AT': 'II_I_FAIL_AT',
528
    'IUTEST_ASSUME_FAILURE_AT': 'II_M_FAIL_AT',
529
    'IUTEST_ATTRIBUTE_UNUSED_': 'II_ATR_U',
530
    'IUTEST_ATTRIBUTE_NORETURN_': 'II_ATR_NR',
531
    'IUTEST_ATTRIBUTE_FORMAT_PRINTF': 'II_ATR_F_P',
532
    'IUTEST_ATTRIBUTE_FORMAT': 'II_ATR_F',
533
    'IUTEST_CXX_OVERRIDE': 'II_CXX_O',
534
    'IUTEST_CXX_NOEXCEPT_SPEC': 'II_CXX_NEX_S',
535
    'IUTEST_CXX_DEFAULT_FUNCTION': 'II_CXX_DF_F',
536
    'IUTEST_CXX_DELETED_FUNCTION': 'II_CXX_DL_F',
537
    'IUTEST_CXX_FINAL': 'II_CXX_F',
538
    'IUTEST_CXX_EXPLICIT_CONVERSION': 'II_CXX_E_C',
539
    'IUTEST_CXX_CONSTEXPR': 'II_CXX_CE',
540
    'IUTEST_CXX14_CONSTEXPR': 'II_CXX14_CE',
541
    'IUTEST_CXX_CONSTEXPR_OR_CONST': 'II_CXX_C_O_C',
542
    'IUTEST_AMBIGUOUS_ELSE_BLOCKER_': 'II_AMB_E_B',
543
    'IUTEST_SUPPRESS_UNREACHABLE_CODE_WARNING': 'II_S_UR_C_W',
544
    'IUTEST_APPEND_EXPLICIT_TEMPLATE_TYPE_': 'II_A_E_TT',
545
    'IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_BEGIN': 'II_PGM_A_O_CN_G_W_D_B',
546
    'IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_END': 'II_PGM_A_O_CN_G_W_D_E',
547
    # 'IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL': 'II_PGM_W_FE',
548
    'IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN': 'II_PGM_W_CA',
549
    'IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE': 'II_PGM_W_D_NE_T',
550
    'IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE': 'II_PGM_W_D_S_C',
551
    # 'IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE': 'II_PGM_W_D_D_E',
552
    'IUTEST_PRAGMA_CLANG_WARN_PUSH': 'II_PGM_C_W_PU',
553
    'IUTEST_PRAGMA_CLANG_WARN_DISABLE': 'II_PGM_C_W_D',
554
    'IUTEST_PRAGMA_CLANG_WARN_POP': 'II_PGM_C_W_PP',
555
    'IUTEST_PRAGMA_GCC_WARN_PUSH': 'II_PGM_G_W_PU',
556
    'IUTEST_PRAGMA_GCC_WARN_DISABLE': 'II_PGM_G_W_D',
557
    'IUTEST_PRAGMA_GCC_WARN_POP': 'II_PGM_G_W_PP',
558
    # 'IUTEST_PRAGMA_WARN_PUSH': 'II_PGM_W_PU',
559
    # 'IUTEST_PRAGMA_WARN_DISABLE': 'II_PGM_W_D',
560
    # 'IUTEST_PRAGMA_WARN_POP': 'II_PGM_W_PP',
561
    'IUTEST_PP_DISALLOW_COPY_AND_ASSIGN': 'IP_DIS_C_A_A',
562
    'IUTEST_PP_DISALLOW_ASSIGN': 'IP_DIS_A',
563
    'IUTEST_PP_DISALLOW_MOVE_AND_COPY_AND_ASSIGN': 'IP_DIS_M_A_C_A_A',
564
    'IUTEST_PP_NAMESPACE_ENUM_CASE_RETURN_STRING': 'IP_NS_E_C_R_S',
565
    'IUTEST_PP_INC': 'IP_INC',
566
    'IUTEST_PP_DEC': 'IP_DEC',
567
    'IUTEST_PP_CAT': 'IP_CAT',
568
    'IUTEST_PP_EMPTY_': 'IP_EMP_',
569
    'IUTEST_PP_EMPTY': 'IP_EMPTY',
570
    'IUTEST_PP_IS_BEGIN_PARENS': 'IP_IS_B_PAR',
571
    'IUTEST_LIBSTDCXX_VERSION': 'II_LSTDCXX_V',
572
    'IUTEST_PRED_FORMAT_': 'II_PRD_FMT_',
573
    'IUTEST_PRED_FORMAT1_': 'II_PRD_FMT1_',
574
    'IUTEST_PRED_FORMAT2_': 'II_PRD_FMT2_',
575
    'IUTEST_PRED_FORMAT3_': 'II_PRD_FMT3_',
576
    'IUTEST_PRED_FORMAT4_': 'II_PRD_FMT4_',
577
    'IUTEST_PRED_FORMAT5_': 'II_PRD_FMT5_',
578
    'IUTEST_THROW_PRED_FORMAT2_': 'II_T_PRD_FMT2_',
579
    'IUTEST_PRED_': 'II_PRD_',
580
    'IUTEST_PRED1_': 'II_PRD1_',
581
    'IUTEST_PRED2_': 'II_PRD2_',
582
    'IUTEST_PRED3_': 'II_PRD3_',
583
    'IUTEST_PRED4_': 'II_PRD4_',
584
    'IUTEST_PRED5_': 'II_PRD5_',
585
    'IUTEST_TEST_ASSERT_': 'II_T_ASRT_',
586
    'IUTEST_TEST_CLASS_NAME_': 'II_T_CLS_N_',
587
    'IUTEST_TEST_INSTANCE_NAME_': 'II_T_INST_N_',
588
    'IUTEST_PMZ_TEST_CLASS_NAME_': 'II_P_T_CLS_N_',
589
    'IUTEST_MESSAGE_AT': 'II_MSG_AT',
590
    'IUTEST_MESSAGE': 'II_MSG',
591
    'IUTEST_IS_NULLLITERAL': 'II_IS_NL',
592
    'IUTEST_ALIAS_TESTNAME_F_': 'II_ALS_TN_F_',
593
    'IUTEST_ALIAS_TESTNAME_F': 'II_ALS_TN_F',
594
    'IUTEST_ALIAS_TESTNAME_': 'II_ALS_TN',
595
    'IUTEST_THROUGH_ANALYSIS_ASSUME_': 'II_TRGH_A_A_',
596
    'IUTEST_PP_ENUM_SHIFTED_BINARY_PARAMS': 'IP_ENM_S_B_P',
597
    'IUTEST_PP_ENUM_SHIFTED_BINARY': 'IP_ENM_S_B',
598
    'IUTEST_PP_ENUM_SHIFTED_PARAMS': 'IP_ENM_S_P',
599
    'IUTEST_PP_ENUM_BINARY_PARAMS': 'IP_ENM_B_P',
600
    'IUTEST_PP_ENUM_SHIFTED': 'IP_ENM_S',
601
    'IUTEST_PP_ENUM_BINARY': 'IP_ENM_B',
602
    'IUTEST_PP_ENUM_PARAMS': 'IP_ENM_P',
603
    'IUTEST_PP_ENUM': 'IP_ENM',
604
    'IUTEST_TEST_EQ_COLLECTIONS': 'II_T_EQ_CLCT',
605
    'IUTEST_TEST_NE_COLLECTIONS': 'II_T_NE_CLCT',
606
    'IUTEST_TEST_EQ_RANGE': 'II_T_EQ_RNG',
607
    'IUTEST_TEST_NE_RANGE': 'II_T_NE_RNG',
608
    'IUTEST_TEST_STRLNEQ': 'II_T_SLN',
609
    'IUTEST_TEST_STRIN': 'II_T_SIN',
610
    'IUTEST_TEST_STRNOTIN': 'II_T_SNIN',
611
    'IUTEST_TEST_MATCHES_REGEXEQ': 'II_T_M_RGE',
612
    'IUTEST_TEST_MATCHES_REGEXNE': 'II_T_M_RGN',
613
    'IUTEST_TEST_CONTAINS_REGEXEQ': 'II_T_C_RGE',
614
    'IUTEST_TEST_CONTAINS_REGEXNE': 'II_T_C_RGN',
615
}
616
617
rename_text = {
618
    'backward': 'bkw',
619
    # 'CmpHelper': 'CHlpr',
620
    'IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_': 'II_PGM_IWD_CLNG_',
621
    'IUTEST_MAKE_ASSERTIONRESULT_': '',
622
    'II_DECL_STREQ_COMPARE_HELPER_': 'II_DECL_SE_C_H_',
623
    'II_INSTANTIATE_TEST_CASE_AP_': 'II_INST_TC_AP_',
624
    'II_TEST_AP_FIXTURE_NAME_': 'II_T_AP_FIX_N_',
625
    'II_ALIAS_TESTNAME_AP_': 'II_ALS_TN_AP_',
626
    'IUTEST_GET_PACKAGENAME_': 'II_GET_PKGN_',
627
    'IUTEST_CONCAT_PACKAGE_': 'II_CC_PKG_',
628
    'IUTEST_COND_LIKELY': '',
629
    'IUTEST_COND_UNLIKELY': '',
630
}
631
632
debug = False
633
634
class WandboxPreprocessor:
635
    pp = IutestPreprocessor(predefined_macros
636
        , iutest_config_macro
637
        , expand_function_macros
638
        , expands_macros
639
        , has_features
640
        , has_include)
641
642
    def preprocess(self, code, add_macros):
643
        self.pp.set_debug_flag(debug)
644
        return self.pp.preprocess(code, add_macros)
645
646
    def remove_empty_ppif(self, code):
647
        return self.pp.remove_empty_ppif(code)
648
649
    def remove_redudant(self, code):
650
        dst = ""
651
        for line in code.splitlines():
652
            if '#define IP_D_' in line:
653
                v = line.split()
654
                try:
655
                    if int(v[2]) > 50:
656
                        continue
657
                except ValueError:
658
                    pass
659
            elif '#define IP_I_' in line:
660
                v = line.split()
661
                try:
662
                    if int(v[2]) > 51:
663
                        continue
664
                except ValueError:
665
                    pass
666
            elif '#define IP_B_' in line:
667
                v = line.split()
668
                v2 = v[1].split('_')
669
                try:
670
                    if int(v2[2]) > 51:
671
                        continue
672
                except ValueError:
673
                    pass
674
            elif 'IUTEST_MBS_CODE' in line:
675
                continue
676
            line += "\n"
677
            dst += line
678
        return dst
679
680
    def rename_macros(self, code):
681
        dst = ""
682
        global rename_macro
683
        found_macros = {}
684
        for k, v in rename_macro.items():
685
            if collections.Counter(rename_macro.values())[v] > 1:
686
                print('error: duplicated ' + v)
687
                return
688
        RE_DEFINE = re.compile(r'#\s*define\s([\w_]+)(.*)$')
689
        for line in code.splitlines():
690
            m = RE_DEFINE.match(line)
691
            if m:
692
                d = m.group(1)
693
                if d in rename_macro:
694
                    alias = rename_macro[d]
695
                    found_macros[d] = alias
696
                    del rename_macro[d]
697
            if len(rename_macro) == 0:
698
                break
699
        for line in code.splitlines():
700
            for k, v in found_macros.items():
701
                line = re.sub(k + r'(?=[\W]|$)', v, line)
702
                # line = line.replace(k, v)
703
            for k, v in rename_text.items():
704
                line = line.replace(k, v)
705
            for k, v in found_macros.items():
706
                if k in line:
707
                    print(k)
708
            line += "\n"
709
            dst += line
710
        for k, v in found_macros.items():
711
            dst += "#define " + k + " " + v + "\n"
712
        return dst
713
714
    def remove_redudant_pragma(self, code):
715
        dst = ""
716
        RE_PRAGMA_WARN_STRIP = re.compile(r'II_PGM_W_PU\(\)(.*?)II_PGM_W_PP\(\)')
717
        for line in code.splitlines():
718
            for m in RE_PRAGMA_WARN_STRIP.finditer(line):
719
                if 'II_PGM_W' not in m.group(1):
720
                    line = line.replace(m.group(0), m.group(1))
721
            line += "\n"
722
            dst += line
723
        return dst
724
725
    def trancate_line(self, code):
726
        return self.pp.trancate_line(code)
727
728
729
730
def default_pp():
731
    output_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../fused-src")
732
    output = "iutest.wandbox.min.hpp"
733
    f = codecs.open(os.path.join(output_dir, "iutest.min.hpp"), 'r', 'utf-8-sig')
734
    code = f.read()
735
    f.close()
736
    output_file = codecs.open(os.path.join(output_dir, output), 'w', 'utf-8-sig')
737
    pp = WandboxPreprocessor()
738
    code = pp.preprocess(code, None)
739
    code = pp.remove_empty_ppif(code)
740
    code = pp.remove_redudant(code)
741
    code = pp.rename_macros(code)
742
    code = pp.remove_redudant_pragma(code)
743
    code = pp.trancate_line(code)
744
    output_file.write(code)
745
    output_file.close()
746
747
748 View Code Duplication
def clang_pp():
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
749
    output_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../fused-src")
750
    output = "iutest.wandbox.min.clang.hpp"
751
    f = codecs.open(os.path.join(output_dir, "iutest.wandbox.min.hpp"), 'r', 'utf-8-sig')
752
    code = f.read()
753
    f.close()
754
    output_file = codecs.open(os.path.join(output_dir, output), 'w', 'utf-8-sig')
755
    clang_predefined_macros = {
756
        '__clang__': '1',
757
        '__GNUC__': None,
758
        '__GXX_EXPERIMENTAL_CXX0X__': None,
759
    }
760
    clang_predefined_macros.update(predefined_macros)
761
    clagn_config_macro = {
762
        'IUTEST_HAS_COUNTER_MACRO': '1',
763
        'IUTEST_EXPLICIT_INSTANTIATION_ACCESS_PRIVATE_OVERLOAD_MEMBER_FUNCTION': '0',
764
    }
765
    clagn_config_macro.update(iutest_config_macro)
766
    pp = IutestPreprocessor(clang_predefined_macros,
767
        clagn_config_macro,
768
        expand_function_macros,
769
        expands_macros,
770
        has_features,
771
        has_include)
772
    code = pp.preprocess(code, None)
773
    code = pp.remove_empty_ppif(code)
774
    code = pp.trancate_line(code)
775
    output_file.write(code)
776
    output_file.close()
777
778
779 View Code Duplication
def gcc_pp():
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
780
    output_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../fused-src")
781
    output = "iutest.wandbox.min.gcc.hpp"
782
    f = codecs.open(os.path.join(output_dir, "iutest.wandbox.min.hpp"), 'r', 'utf-8-sig')
783
    code = f.read()
784
    f.close()
785
    output_file = codecs.open(os.path.join(output_dir, output), 'w', 'utf-8-sig')
786
    gcc_predefined_macros = {
787
        '__clang__': None,
788
        '__GNUC__': 'unknown',
789
        '_LIBCPP_VERSION': None,
790
    }
791
    gcc_predefined_macros.update(predefined_macros)
792
    clagn_config_macro = {
793
        'IUTEST_HAS_COUNTER_MACRO': '0',
794
        'IUTEST_EXPLICIT_INSTANTIATION_ACCESS_PRIVATE_OVERLOAD_MEMBER_FUNCTION': '1',
795
    }
796
    clagn_config_macro.update(iutest_config_macro)
797
    pp = IutestPreprocessor(gcc_predefined_macros,
798
        iutest_config_macro,
799
        expand_function_macros,
800
        expands_macros,
801
        has_features,
802
        has_include)
803
    code = pp.preprocess(code, None)
804
    code = pp.remove_empty_ppif(code)
805
    code = pp.trancate_line(code)
806
    output_file.write(code)
807
    output_file.close()
808
809
810
def main():
811
    global debug
812
    argc = len(sys.argv)
813
    if argc == 2:
814
        if sys.argv[1] == 'debug':
815
            debug = True
816
    default_pp()
817
    clang_pp()
818
    gcc_pp()
819
820
if __name__ == '__main__':
821
    main()
822