| test.compile("source.cpp") |
| test.run_analysis_script('gcTypes', upto='gcFunctions') |
| |
| # The suppressions file uses only mangled names since it's for internal use, |
| # though I may change that soon given (1) the unfortunate non-uniqueness of |
| # mangled constructor names, and (2) the usefulness of this file for |
| # mrgiggles's reporting. |
| suppressed = test.load_suppressed_functions() |
| |
| # Only one of these is fully suppressed (ie, *always* called within the scope |
| # of an AutoSuppressGC). |
| assert(len(filter(lambda f: 'suppressedFunction' in f, suppressed)) == 1) |
| assert(len(filter(lambda f: 'halfSuppressedFunction' in f, suppressed)) == 0) |
| assert(len(filter(lambda f: 'unsuppressedFunction' in f, suppressed)) == 0) |
| |
| # gcFunctions should be the inverse, but we get to rely on unmangled names here. |
| gcFunctions = test.load_gcFunctions() |
| print(gcFunctions) |
| assert('void GC()' in gcFunctions) |
| assert('void suppressedFunction()' not in gcFunctions) |
| assert('void halfSuppressedFunction()' in gcFunctions) |
| assert('void unsuppressedFunction()' in gcFunctions) |
| assert('void f()' in gcFunctions) |