Index: Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py b/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
index 5fef70088e0fe95f1629917a32412f5e1d4b2f50..3545d5396982872d09eec5755a32504bf1afe899 100644 |
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
+++ b/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
@@ -50,6 +50,7 @@ from webkitpy.layout_tests.models import test_expectations |
from webkitpy.layout_tests.models import test_failures |
from webkitpy.layout_tests.models import test_run_results |
from webkitpy.layout_tests.models.test_input import TestInput |
+from webkitpy.layout_tests.models.test_run_results import INTERRUPTED_EXIT_STATUS |
_log = logging.getLogger(__name__) |
@@ -213,8 +214,11 @@ class Manager(object): |
initial_results = self._run_tests(tests_to_run, tests_to_skip, self._options.repeat_each, self._options.iterations, |
int(self._options.child_processes), retrying=False) |
+ # Don't retry failures when interrupted by user or failures limit exception. |
+ should_retry_failures = should_retry_failures and not (initial_results.interrupted or initial_results.keyboard_interrupted) |
+ |
tests_to_retry = self._tests_to_retry(initial_results) |
- if should_retry_failures and tests_to_retry and not initial_results.interrupted: |
+ if should_retry_failures and tests_to_retry: |
enabled_pixel_tests_in_retry = self._force_pixel_tests_if_needed() |
_log.info('') |
@@ -249,10 +253,12 @@ class Manager(object): |
results_path = self._filesystem.join(self._results_directory, "results.html") |
self._copy_results_html_file(results_path) |
- if self._options.show_results and (exit_code or (self._options.full_results_html and initial_results.total_failures)): |
- self._port.show_results_html_file(results_path) |
- |
- self._printer.print_results(time.time() - start_time, initial_results, summarized_failing_results) |
+ if initial_results.keyboard_interrupted: |
+ exit_code = INTERRUPTED_EXIT_STATUS |
+ else: |
+ if self._options.show_results and (exit_code or (self._options.full_results_html and initial_results.total_failures)): |
+ self._port.show_results_html_file(results_path) |
+ self._printer.print_results(time.time() - start_time, initial_results, summarized_failing_results) |
return test_run_results.RunDetails(exit_code, summarized_full_results, summarized_failing_results, initial_results, retry_results, enabled_pixel_tests_in_retry) |
def _run_tests(self, tests_to_run, tests_to_skip, repeat_each, iterations, num_workers, retrying): |