Index: tools/test.py |
=================================================================== |
--- tools/test.py (revision 7609) |
+++ tools/test.py (working copy) |
@@ -117,6 +117,8 @@ |
start = time.time() |
output = case.Run() |
case.duration = (time.time() - start) |
+ except BreakNowException: |
+ self.terminate = True |
except IOError, e: |
assert self.terminate |
return |
@@ -318,7 +320,13 @@ |
# --- F r a m e w o r k --- |
# ------------------------- |
+class BreakNowException(Exception): |
+ def __init__(self, value): |
+ self.value = value |
+ def __str__(self): |
+ return repr(self.value) |
+ |
class CommandOutput(object): |
def __init__(self, exit_code, timed_out, stdout, stderr): |
@@ -379,9 +387,12 @@ |
def Run(self): |
self.BeforeRun() |
- result = "exception" |
+ result = None |
try: |
result = self.RunCommand(self.GetCommand()) |
+ except: |
+ self.terminate = True |
+ raise BreakNowException("Used pressed CTRL+C or IO went wrong") |
finally: |
self.AfterRun(result) |
return result |
@@ -423,7 +434,7 @@ |
self.output.exit_code != -signal.SIGABRT |
def HasTimedOut(self): |
- return self.output.timed_out; |
+ return self.output.timed_out |
def HasFailed(self): |
execution_failed = self.test.DidFail(self.output) |
@@ -702,7 +713,12 @@ |
def RunTestCases(cases_to_run, progress, tasks): |
progress = PROGRESS_INDICATORS[progress](cases_to_run) |
- return progress.Run(tasks) |
+ result = 0 |
+ try: |
+ result = progress.Run(tasks) |
+ except Exception, e: |
+ print "\n", e |
+ return result |
def BuildRequirements(context, requirements, mode, scons_flags): |
@@ -1339,11 +1355,11 @@ |
print "shard-run not a valid number, should be in [1:shard-count]" |
print "defaulting back to running all tests" |
return tests |
- count = 0; |
+ count = 0 |
shard = [] |
for test in tests: |
if count % options.shard_count == options.shard_run - 1: |
- shard.append(test); |
+ shard.append(test) |
count += 1 |
return shard |