summaryrefslogtreecommitdiff
path: root/utils/lit/lit/run.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/lit/lit/run.py')
-rw-r--r--utils/lit/lit/run.py31
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)