Index: build/android/test_runner.py |
diff --git a/build/android/test_runner.py b/build/android/test_runner.py |
index 3753483a9ef6fbd7eb293bc63f6a1314e56e9c36..d10d7f9653e44b46290a764f0530a24efe5e5bc0 100755 |
--- a/build/android/test_runner.py |
+++ b/build/android/test_runner.py |
@@ -15,6 +15,7 @@ import os |
import shutil |
import signal |
import sys |
+import tempfile |
import threading |
import traceback |
import unittest |
@@ -40,8 +41,10 @@ from pylib.base import test_instance_factory |
from pylib.base import test_run_factory |
from pylib.results import json_results |
from pylib.results import report_results |
+from pylib.results.presentation import test_results_presentation |
from pylib.utils import logdog_helper |
from pylib.utils import logging_utils |
+from pylib.utils import test_output_saver_factory |
from py_utils import contextlib_ext |
@@ -141,6 +144,11 @@ def AddCommonOptions(parser): |
default='local', choices=constants.VALID_ENVIRONMENTS, |
help='Test environment to run in (default: %(default)s).') |
+ parser.add_argument( |
+ '--local-output', action='store_true', |
+ help='Whether to archive test output locally and generate ' |
+ 'a local results detail page.') |
+ |
class FastLocalDevAction(argparse.Action): |
def __call__(self, parser, namespace, values, option_string=None): |
namespace.verbose_count = max(namespace.verbose_count, 1) |
@@ -785,10 +793,11 @@ def RunTestsInPlatformMode(args): |
### Set up test objects. |
+ test_output_saver = test_output_saver_factory.CreateTestOutputSaver(args) |
env = environment_factory.CreateEnvironment(args, infra_error) |
test_instance = test_instance_factory.CreateTestInstance(args, infra_error) |
test_run = test_run_factory.CreateTestRun( |
- args, env, test_instance, infra_error) |
+ args, env, test_instance, test_output_saver, infra_error) |
### Run. |
@@ -852,6 +861,22 @@ def RunTestsInPlatformMode(args): |
if args.command == 'perf' and (args.steps or args.single_step): |
return 0 |
+ if args.local_output: |
jbudorick
2017/06/20 14:12:55
We won't write local output on exception w/ this.
mikecase (-- gone --)
2017/07/10 17:11:11
Like, if the test_runner itself throws an exceptio
|
+ result_html_string = test_results_presentation.result_details( |
+ json_path=args.json_results_file, |
+ test_name=args.command, |
+ cs_base_url='http://cs.chromium.org', |
+ local_output=True) |
+ with tempfile.NamedTemporaryFile() as html_tmp: |
+ html_tmp.write(result_html_string) |
+ html_tmp.flush() |
+ link = test_output_saver.Save( |
+ html_tmp.name, |
+ 'test_results_presentation.html', |
+ 'test_results_presentation', |
+ test_output_saver_factory.Datatype.HTML) |
+ logging.critical('TEST RESULTS: %s', link) |
+ |
return (0 if all(r.DidRunPass() for r in all_iteration_results) |
else constants.ERROR_EXIT_CODE) |