Index: tools/testrunner/local/execution.py |
diff --git a/tools/testrunner/local/execution.py b/tools/testrunner/local/execution.py |
index d6500c82cc103352ab916ff9f61c7c569c0cd282..0d90ab8d0de17a90a70cb10692f1174fff6c5760 100644 |
--- a/tools/testrunner/local/execution.py |
+++ b/tools/testrunner/local/execution.py |
@@ -28,6 +28,7 @@ |
import collections |
import os |
+import re |
import shutil |
import sys |
import time |
@@ -38,6 +39,7 @@ from . import perfdata |
from . import statusfile |
from . import testsuite |
from . import utils |
+from ..objects import output |
# Base dir of the v8 checkout. |
@@ -134,15 +136,28 @@ class Job(object): |
raise NotImplementedError() |
+def SetupProblem(exception, test): |
+ stderr = ">>> EXCEPTION: %s\n" % exception |
+ match = re.match(r"^.*No such file or directory: '(.*)'$", str(exception)) |
+ if match: |
+ # Extra debuging information when files are claimed missing. |
+ f = match.group(1) |
+ stderr += ">>> File %s exists? -> %s\n" % (f, os.path.exists(f)) |
+ return test.id, output.Output(1, False, "", stderr), 0 |
+ |
+ |
class TestJob(Job): |
def __init__(self, test): |
self.test = test |
def Run(self, process_context): |
- # Retrieve a new suite object on the worker-process side. The original |
- # suite object isn't pickled. |
- self.test.SetSuiteObject(process_context.suites) |
- instr = _GetInstructions(self.test, process_context.context) |
+ try: |
+ # Retrieve a new suite object on the worker-process side. The original |
+ # suite object isn't pickled. |
+ self.test.SetSuiteObject(process_context.suites) |
+ instr = _GetInstructions(self.test, process_context.context) |
+ except Exception, e: |
+ return SetupProblem(e, self.test) |
start_time = time.time() |
if instr.dep_command is not None: |