diff options
author | Daniel Dunbar <daniel@zuster.org> | 2013-08-21 22:26:40 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2013-08-21 22:26:40 +0000 |
commit | d3bf8a2c0aefe36cb4bfc6f41983aa09caae2acb (patch) | |
tree | d8c245374518a578f119f68720459b62425bd32e | |
parent | ccd21b26dd16c6dff207b3ded3df2bb90f1b9e6e (diff) | |
download | external_llvm-d3bf8a2c0aefe36cb4bfc6f41983aa09caae2acb.zip external_llvm-d3bf8a2c0aefe36cb4bfc6f41983aa09caae2acb.tar.gz external_llvm-d3bf8a2c0aefe36cb4bfc6f41983aa09caae2acb.tar.bz2 |
[lit] Allow formats to return lit.Test.Result instances directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188948 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/lit/lit/Test.py | 12 | ||||
-rwxr-xr-x | utils/lit/lit/main.py | 19 |
2 files changed, 21 insertions, 10 deletions
diff --git a/utils/lit/lit/Test.py b/utils/lit/lit/Test.py index d37854e..c1bacb3 100644 --- a/utils/lit/lit/Test.py +++ b/utils/lit/lit/Test.py @@ -23,7 +23,7 @@ UNSUPPORTED = ResultCode('UNSUPPORTED', False) class Result(object): """Wrapper for the results of executing an individual test.""" - def __init__(self, code, output, elapsed): + def __init__(self, code, output='', elapsed=None): # The result code. self.code = code # The test output. @@ -62,9 +62,13 @@ class Test: # The test result, once complete. self.result = None - def setResult(self, result, output, elapsed): - assert self.result is None, "Test result already set!" - self.result = Result(result, output, elapsed) + def setResult(self, result): + if self.result is not None: + raise ArgumentError("test result already set") + if not isinstance(result, Result): + raise ArgumentError("unexpected result type") + + self.result = result def getFullName(self): return self.suite.config.name + ' :: ' + '/'.join(self.path_in_suite) diff --git a/utils/lit/lit/main.py b/utils/lit/lit/main.py index 9608803..b84140f 100755 --- a/utils/lit/lit/main.py +++ b/utils/lit/lit/main.py @@ -118,8 +118,15 @@ class Tester(threading.Thread): result = None startTime = time.time() try: - result, output = test.config.test_format.execute(test, - self.litConfig) + result = test.config.test_format.execute(test, self.litConfig) + + # Support deprecated result from execute() which returned the result + # code and additional output as a tuple. + if isinstance(result, tuple): + code, output = result + result = lit.Test.Result(code, output) + elif not isinstance(result, lit.Test.Result): + raise ValueError("unexpected result from test execution") except KeyboardInterrupt: # This is a sad hack. Unfortunately subprocess goes # bonkers with ctrl-c and we start forking merrily. @@ -128,13 +135,13 @@ class Tester(threading.Thread): except: if self.litConfig.debug: raise - result = lit.Test.UNRESOLVED output = 'Exception during script execution:\n' output += traceback.format_exc() output += '\n' - elapsed = time.time() - startTime + result = lit.Test.Result(lit.Test.UNRESOLVED, output) + result.elapsed = time.time() - startTime - test.setResult(result, output, elapsed) + test.setResult(result) self.display.update(test) def runTests(numThreads, litConfig, provider, display): @@ -382,7 +389,7 @@ def main(builtinParameters = {}): # Update results for any tests which weren't run. for test in tests: if test.result is None: - test.setResult(lit.Test.UNRESOLVED, '', 0.0) + test.setResult(lit.Test.Result(lit.Test.UNRESOLVED, '', 0.0)) # List test results organized by kind. hasFailures = False |