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