Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import multiprocessing | 6 import multiprocessing |
| 7 import os | 7 import os |
| 8 import re | 8 import re |
| 9 import shutil | |
|
msw
2015/06/24 23:00:35
nit: remove
| |
| 9 import subprocess | 10 import subprocess |
| 10 import sys | 11 import sys |
| 12 import tempfile | |
|
msw
2015/06/24 23:00:35
nit: remove
| |
| 11 import time | 13 import time |
| 12 | 14 |
| 13 from mopy.config import Config | 15 from mopy.config import Config |
| 14 from mopy.paths import Paths | 16 from mopy.paths import Paths |
| 15 | 17 |
| 16 | 18 |
| 17 def set_color(): | 19 def set_color(): |
| 18 """Run gtests with color on TTY, unless its environment variable is set.""" | 20 """Run gtests with color on TTY, unless its environment variable is set.""" |
| 19 if sys.stdout.isatty() and "GTEST_COLOR" not in os.environ: | 21 if sys.stdout.isatty() and "GTEST_COLOR" not in os.environ: |
| 20 logging.getLogger().debug("Setting GTEST_COLOR=yes") | 22 logging.getLogger().debug("Setting GTEST_COLOR=yes") |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 print "\n[ FAILED ] Command%s: %s" % (exit_code, " ".join(command_line)) | 125 print "\n[ FAILED ] Command%s: %s" % (exit_code, " ".join(command_line)) |
| 124 print 72 * "-" | 126 print 72 * "-" |
| 125 print error.output if hasattr(error, 'output') else error | 127 print error.output if hasattr(error, 'output') else error |
| 126 print 72 * "-" | 128 print 72 * "-" |
| 127 | 129 |
| 128 | 130 |
| 129 def _build_command_line(config, args, apptest): | 131 def _build_command_line(config, args, apptest): |
| 130 """Build the apptest command line. This value isn't executed on Android.""" | 132 """Build the apptest command line. This value isn't executed on Android.""" |
| 131 paths = Paths(config) | 133 paths = Paths(config) |
| 132 # On Linux, always run tests with xvfb, but not for --gtest_list_tests. | 134 # On Linux, always run tests with xvfb, but not for --gtest_list_tests. |
| 133 use_xvfb = (config.target_os == Config.OS_LINUX and | 135 not_list_tests = not "--gtest_list_tests" in args |
| 134 not "--gtest_list_tests" in args) | 136 use_xvfb = config.target_os == Config.OS_LINUX and not_list_tests |
| 135 prefix = [paths.xvfb, paths.build_dir] if use_xvfb else [] | 137 xvfb_prefix = [paths.xvfb, paths.build_dir] if use_xvfb else [] |
| 136 return prefix + [paths.mojo_runner] + args + [apptest] | 138 data_dir = ["--use-temporary-user-data-dir"] if not_list_tests else [] |
| 139 return xvfb_prefix + [paths.mojo_runner] + data_dir + args + [apptest] | |
| 137 | 140 |
| 138 | 141 |
| 139 # TODO(msw): Determine proper test timeout durations (starting small). | 142 # TODO(msw): Determine proper test timeout durations (starting small). |
| 140 def _run_test_with_timeout(config, shell, args, apptest, timeout_in_seconds=10): | 143 def _run_test_with_timeout(config, shell, args, apptest, timeout_in_seconds=10): |
| 141 """Run the given test with a timeout and return the output or an error.""" | 144 """Run the given test with a timeout and return the output or an error.""" |
| 142 result = multiprocessing.Queue() | 145 result = multiprocessing.Queue() |
| 143 process = multiprocessing.Process( | 146 process = multiprocessing.Process( |
| 144 target=_run_test, args=(config, shell, args, apptest, result)) | 147 target=_run_test, args=(config, shell, args, apptest, result)) |
| 145 process.start() | 148 process.start() |
| 146 process.join(timeout_in_seconds) | 149 process.join(timeout_in_seconds) |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 157 command = _build_command_line(config, args, apptest) | 160 command = _build_command_line(config, args, apptest) |
| 158 result.put(subprocess.check_output(command, stderr=subprocess.STDOUT)) | 161 result.put(subprocess.check_output(command, stderr=subprocess.STDOUT)) |
| 159 return | 162 return |
| 160 | 163 |
| 161 assert shell | 164 assert shell |
| 162 (r, w) = os.pipe() | 165 (r, w) = os.pipe() |
| 163 with os.fdopen(r, "r") as rf: | 166 with os.fdopen(r, "r") as rf: |
| 164 with os.fdopen(w, "w") as wf: | 167 with os.fdopen(w, "w") as wf: |
| 165 shell.StartActivity('MojoShellActivity', args + [apptest], wf, wf.close) | 168 shell.StartActivity('MojoShellActivity', args + [apptest], wf, wf.close) |
| 166 result.put(rf.read()) | 169 result.put(rf.read()) |
| OLD | NEW |