[PATCH] D33308: [analyzer]: Improve test handling with multiple constraint managers
Dominic Chen via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed May 17 22:27:15 PDT 2017
ddcc created this revision.
Modify the test infrastructure to properly handle tests that require z3, and merge together the output of all tests on success. This is required for https://reviews.llvm.org/D28954.
https://reviews.llvm.org/D33308
Files:
test/Analysis/analyzer_test.py
Index: test/Analysis/analyzer_test.py
===================================================================
--- test/Analysis/analyzer_test.py
+++ test/Analysis/analyzer_test.py
@@ -5,24 +5,39 @@
class AnalyzerTest(lit.formats.ShTest):
def execute(self, test, litConfig):
- result = self.executeWithAnalyzeSubstitution(
- test, litConfig, '-analyzer-constraints=range')
+ results = []
- if result.code == lit.Test.FAIL:
- return result
+ # Parse any test requirements ('REQUIRES: ')
+ saved_test = test
+ lit.TestRunner.parseIntegratedTestScript(test)
+
+ if 'z3' not in test.requires:
+ results.append(self.executeWithAnalyzeSubstitution(
+ saved_test, litConfig, '-analyzer-constraints=range'))
+
+ if results[-1].code == lit.Test.FAIL:
+ return results[-1]
# 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')
+ results.append(self.executeWithAnalyzeSubstitution(
+ saved_test, litConfig, '-analyzer-constraints=z3 -DANALYZER_CM_Z3'))
- return result
+ # Combine all result outputs into the last element
+ for x in results:
+ if x != results[-1]:
+ results[-1].output = x.output + results[-1].output
+
+ if results:
+ return results[-1]
+ return lit.Test.Result(lit.Test.UNSUPPORTED,
+ "Test requires the following unavailable features: z3")
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)
+ self.execute_external)
test.config.substitutions = saved_substitutions
return result
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33308.99394.patch
Type: text/x-patch
Size: 2165 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170518/817a86f7/attachment.bin>
More information about the cfe-commits
mailing list