[lit] worker.py: Improve code for executing a single test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375194 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/lit/lit/worker.py b/utils/lit/lit/worker.py
index f97b6a0..3a4868e 100644
--- a/utils/lit/lit/worker.py
+++ b/utils/lit/lit/worker.py
@@ -56,19 +56,20 @@
     else:
         _execute_test(test, lit_config)
 
+
 def _execute_test(test, lit_config):
     """Execute one test"""
+    start = time.time()
+    result = _execute_test_handle_errors(test, lit_config)
+    end = time.time()
+
+    result.elapsed = end - start
+    test.setResult(result)
+
+
+def _execute_test_handle_errors(test, lit_config):
     try:
-        start_time = time.time()
-        result = test.config.test_format.execute(test, 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")
-        result.elapsed = time.time() - start_time
+        return _adapt_result(test.config.test_format.execute(test, lit_config))
     except KeyboardInterrupt:
         raise
     except:
@@ -77,6 +78,14 @@
         output = 'Exception during script execution:\n'
         output += traceback.format_exc()
         output += '\n'
-        result = lit.Test.Result(lit.Test.UNRESOLVED, output)
+        return lit.Test.Result(lit.Test.UNRESOLVED, output)
 
-    test.setResult(result)
+
+# Support deprecated result from execute() which returned the result
+# code and additional output as a tuple.
+def _adapt_result(result):
+    if isinstance(result, lit.Test.Result):
+        return result
+    assert isinstance(result, tuple)
+    code, output = result
+    return lit.Test.Result(code, output)