Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 import json | |
| 6 import os | |
| 7 import tempfile | |
| 8 | |
| 9 from devil.utils import cmd_helper | |
| 10 from pylib import constants | |
| 11 from pylib.base import base_test_result | |
| 12 from pylib.base import test_run | |
| 13 from pylib.results import json_results | |
| 14 | |
| 15 | |
| 16 class LocalMachineJunitTestRun(test_run.TestRun): | |
| 17 def __init__(self, env, test_instance): | |
| 18 super(LocalMachineJunitTestRun, self).__init__(env, test_instance) | |
| 19 | |
| 20 #override | |
| 21 def TestPackage(self): | |
| 22 return self._test_instance.suite | |
| 23 | |
| 24 #override | |
| 25 def SetUp(self): | |
| 26 pass | |
| 27 | |
| 28 #override | |
| 29 def RunTests(self): | |
| 30 with tempfile.NamedTemporaryFile() as json_file: | |
| 31 java_script = os.path.join( | |
| 32 constants.GetOutDirectory(), 'bin', 'helper', | |
| 33 self._test_instance.suite) | |
| 34 command = [java_script] | |
| 35 | |
| 36 # Add Jar arguments. | |
| 37 jar_args = ['-test-jars', self._test_instance.suite + '.jar', | |
| 38 '-json-results-file', json_file.name] | |
| 39 if self._test_instance.test_filter: | |
| 40 jar_args.extend(['-gtest-filter', self._test_instance.test_filter]) | |
| 41 if self._test_instance.package_filter: | |
| 42 jar_args.extend(['-package-filter', | |
| 43 self._test_instance.package_filter]) | |
| 44 if self._test_instance.runner_filter: | |
| 45 jar_args.extend(['-runner-filter', self._test_instance.runner_filter]) | |
| 46 command.extend(['--jar-args', '"%s"' % ' '.join(jar_args)]) | |
| 47 | |
| 48 # Add JVM arguments. | |
| 49 jvm_args = [] | |
| 50 # TODO(mikecase): Add a --robolectric-dep-dir arg to test runner. | |
| 51 # Have this arg set by GN in the generated test runner scripts. | |
| 52 jvm_args += [ | |
| 53 '-Drobolectric.dependency.dir=%s' % | |
| 54 os.path.join(constants.GetOutDirectory(), | |
| 55 'lib.java', 'third_party', 'robolectric')] | |
| 56 if self._test_instance.coverage_dir: | |
| 57 if not os.path.exists(self._test_instance.coverage_dir): | |
| 58 os.makedirs(self._test_instance.coverage_dir) | |
| 59 elif not os.path.isdir(self._test_instance.coverage_dir): | |
| 60 raise Exception('--coverage-dir takes a directory, not file path.') | |
| 61 jvm_args.append('-Demma.coverage.out.file=%s' % os.path.join( | |
| 62 self._test_instance.coverage_dir, | |
| 63 '%s.ec' % self._test_instance.suite)) | |
| 64 if jvm_args: | |
| 65 command.extend(['--jvm-args', '"%s"' % ' '.join(jvm_args)]) | |
| 66 | |
| 67 cmd_helper.RunCmd(command) | |
|
jbudorick
2016/11/11 22:29:38
Should this be doing something with the exit code?
mikecase (-- gone --)
2016/11/11 22:51:35
So, non-platform-mode does return the exit code, w
| |
| 68 results_list = json_results.ParseResultsFromJson( | |
| 69 json.loads(json_file.read())) | |
| 70 | |
| 71 test_run_results = base_test_result.TestRunResults() | |
| 72 test_run_results.AddResults(results_list) | |
| 73 | |
| 74 return [test_run_results] | |
| 75 | |
| 76 #override | |
| 77 def TearDown(self): | |
| 78 pass | |
| OLD | NEW |