diff options
Diffstat (limited to 'clang/test/Analysis')
| -rw-r--r-- | clang/test/Analysis/analyzer_test.py | 28 | ||||
| -rw-r--r-- | clang/test/Analysis/lit.local.cfg | 37 |
2 files changed, 36 insertions, 29 deletions
diff --git a/clang/test/Analysis/analyzer_test.py b/clang/test/Analysis/analyzer_test.py new file mode 100644 index 00000000000..58df11a4ba4 --- /dev/null +++ b/clang/test/Analysis/analyzer_test.py @@ -0,0 +1,28 @@ +import lit.formats +import lit.TestRunner + +# Custom format class for static analyzer tests +class AnalyzerTest(lit.formats.ShTest): + + def execute(self, test, litConfig): + result = self.executeWithAnalyzeSubstitution( + test, litConfig, '-analyzer-constraints=range') + + if result.code == lit.Test.FAIL: + return result + + # If z3 backend available, add an additional run line for it + if test.config.clang_staticanalyzer_z3 == '1': + result = self.executeWithAnalyzeSubstitution( + test, litConfig, '-analyzer-constraints=z3 -DANALYZER_CM_Z3') + + return result + + def executeWithAnalyzeSubstitution(self, test, litConfig, substitution): + saved_substitutions = list(test.config.substitutions) + test.config.substitutions.append(('%analyze', substitution)) + result = lit.TestRunner.executeShTest(test, litConfig, + self.execute_external) + test.config.substitutions = saved_substitutions + + return result diff --git a/clang/test/Analysis/lit.local.cfg b/clang/test/Analysis/lit.local.cfg index 563d4188ab3..a594c5dada5 100644 --- a/clang/test/Analysis/lit.local.cfg +++ b/clang/test/Analysis/lit.local.cfg @@ -1,34 +1,13 @@ -import lit.TestRunner -import sys +# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79: -# Custom format class for static analyzer tests -class AnalyzerTest(lit.formats.ShTest, object): +import site - def execute(self, test, litConfig): - result = self.executeWithAnalyzeSubstitution(test, litConfig, '-analyzer-constraints=range') - - if result.code == lit.Test.FAIL: - return result - - # If z3 backend available, add an additional run line for it - if test.config.clang_staticanalyzer_z3 == '1': - result = self.executeWithAnalyzeSubstitution(test, litConfig, '-analyzer-constraints=z3 -DANALYZER_CM_Z3') - - return result - - def executeWithAnalyzeSubstitution(self, test, litConfig, substitution): - saved_substitutions = list(test.config.substitutions) - test.config.substitutions.append(('%analyze', substitution)) - result = lit.TestRunner.executeShTest(test, litConfig, self.execute_external) - test.config.substitutions = saved_substitutions - - return result - -# This results in a pickling-related failure on Windows -if (not sys.platform in ['win32']): - config.test_format = AnalyzerTest(config.test_format.execute_external) -else: - config.substitutions.append(('%analyze', '-analyzer-constraints=range')) +# Load the custom analyzer test format, which runs the test again with Z3 if it +# is available. +site.addsitedir(os.path.dirname(__file__)) +import analyzer_test +config.test_format = analyzer_test.AnalyzerTest( + config.test_format.execute_external) if not config.root.clang_staticanalyzer: config.unsupported = True |

