diff options
Diffstat (limited to 'utils/lit/lit/run.py')
-rw-r--r-- | utils/lit/lit/run.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/utils/lit/lit/run.py b/utils/lit/lit/run.py index 8a9f87b201..44666679a6 100644 --- a/utils/lit/lit/run.py +++ b/utils/lit/lit/run.py @@ -1,3 +1,8 @@ +import time +import traceback + +import lit.Test + class Run(object): """ This class represents a concrete, configured testing run. @@ -6,3 +11,29 @@ class Run(object): def __init__(self, lit_config, tests): self.lit_config = lit_config self.tests = tests + + def execute_test(self, test): + result = None + startTime = time.time() + try: + result = test.config.test_format.execute(test, self.lit_config) + + # 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: + raise + except: + if self.lit_config.debug: + raise + output = 'Exception during script execution:\n' + output += traceback.format_exc() + output += '\n' + result = lit.Test.Result(lit.Test.UNRESOLVED, output) + result.elapsed = time.time() - startTime + + test.setResult(result) |