Chromium Code Reviews| Index: build/android/pylib/gtest/test_runner.py |
| diff --git a/build/android/pylib/gtest/test_runner.py b/build/android/pylib/gtest/test_runner.py |
| index a487214797c89ac1540db78fea807c1c67a8bfba..9fe28be563c40d1a9e12b319653f6c50ad762422 100644 |
| --- a/build/android/pylib/gtest/test_runner.py |
| +++ b/build/android/pylib/gtest/test_runner.py |
| @@ -2,15 +2,11 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| -import glob |
| import logging |
| import os |
| -import sys |
| from pylib import android_commands |
| -from pylib import cmd_helper |
| from pylib import constants |
| -from pylib import perf_tests_helper |
| from pylib.android_commands import errors |
| from pylib.base import base_test_result |
| from pylib.base import base_test_runner |
| @@ -19,105 +15,22 @@ from pylib.utils import run_tests_helper |
| import test_package_apk |
| import test_package_executable |
| -sys.path.insert( |
| - 0, os.path.join(constants.DIR_SOURCE_ROOT, 'tools', 'swarm_client')) |
| -import run_isolated |
| - |
| -_ISOLATE_FILE_PATHS = { |
| - 'base_unittests': 'base/base_unittests.isolate', |
| - #'net_unittests': 'net/net_unittests.isolate', |
| - #'unit_tests': 'chrome/unit_tests.isolate', |
| - #'content_browsertests': 'content/content_browsertests.isolate', |
| - #'content_unittests': 'content/content_unittests.isolate', |
| - } |
| -_ISOLATE_SCRIPT = os.path.join( |
| - constants.DIR_SOURCE_ROOT, 'tools', 'swarm_client', 'isolate.py') |
| - |
| - |
| -def _GetDataFilesForTestSuite(product_dir, test_suite_basename): |
| +# We're moving to using isolate files instead of harcoding |
| +# dependencies here. Look at the TODO in dispatch.py. |
| +def _GetDataFilesForTestSuite(test_suite_basename): |
| """Returns a list of data files/dirs needed by the test suite. |
| Args: |
| - product_dir: Absolute path to product directory (e.g. /../out/Debug). |
| test_suite_basename: The test suite basename (e.g. base_unittests). |
| Returns: |
| A list of test file and directory paths. |
| """ |
| - # TODO(frankf): *.isolated should be generated by gyp using foo_tests_run |
| - # targets. This is a stop-gap solution as currently there are no such |
| - # targets for content_unittests and content_browsertests. |
| - isolate_rel_path = _ISOLATE_FILE_PATHS.get(test_suite_basename) |
| - if isolate_rel_path: |
| - isolate_abs_path = os.path.join(constants.DIR_SOURCE_ROOT, isolate_rel_path) |
| - isolated_abs_path = os.path.join( |
| - product_dir, '%s.isolated' % test_suite_basename) |
| - assert os.path.exists(isolate_abs_path) |
| - isolate_cmd = [ |
| - 'python', _ISOLATE_SCRIPT, |
| - 'check', |
| - '--isolate=%s' % isolate_abs_path, |
| - '--isolated=%s' % isolated_abs_path, |
| - '-V', 'PRODUCT_DIR=%s' % product_dir, |
| - '-V', 'OS=android', |
| - '--outdir=%s' % product_dir, |
| - ] |
| - assert not cmd_helper.RunCmd(isolate_cmd) |
| - with open(isolated_abs_path) as f: |
| - isolated_content = run_isolated.load_isolated(f.read(), |
| - os_flavor='android') |
| - assert isolated_content['os'] == 'android' |
| - return isolated_content['files'].keys() |
| - |
| - logging.info('Did not find an isolate file for the test suite.') |
| # Ideally, we'd just push all test data. However, it has >100MB, and a lot |
| # of the files are not relevant (some are used for browser_tests, others for |
| # features not supported, etc..). |
| - if test_suite_basename == 'unit_tests': |
| - test_files = [ |
| - 'base/test/data/', |
| - 'chrome/test/data/download-test1.lib', |
| - 'chrome/test/data/extensions/bad_magic.crx', |
| - 'chrome/test/data/extensions/good.crx', |
| - 'chrome/test/data/extensions/icon1.png', |
| - 'chrome/test/data/extensions/icon2.png', |
| - 'chrome/test/data/extensions/icon3.png', |
| - 'chrome/test/data/extensions/allow_silent_upgrade/', |
| - 'chrome/test/data/extensions/app/', |
| - 'chrome/test/data/extensions/bad/', |
| - 'chrome/test/data/extensions/effective_host_permissions/', |
| - 'chrome/test/data/extensions/empty_manifest/', |
| - 'chrome/test/data/extensions/good/Extensions/', |
| - 'chrome/test/data/extensions/manifest_tests/', |
| - 'chrome/test/data/extensions/page_action/', |
| - 'chrome/test/data/extensions/permissions/', |
| - 'chrome/test/data/extensions/script_and_capture/', |
| - 'chrome/test/data/extensions/unpacker/', |
| - 'chrome/test/data/bookmarks/', |
| - 'chrome/test/data/components/', |
| - 'chrome/test/data/extensions/json_schema_test.js', |
| - 'chrome/test/data/History/', |
| - 'chrome/test/data/json_schema_validator/', |
| - 'chrome/test/data/pref_service/', |
| - 'chrome/test/data/simple_open_search.xml', |
| - 'chrome/test/data/top_sites/', |
| - 'chrome/test/data/web_app_info/', |
| - 'chrome/test/data/webui/', |
| - 'chrome/third_party/mock4js/', |
| - 'components/test/data/web_database', |
| - 'net/data/ssl/certificates', |
| - 'third_party/accessibility-developer-tools/gen/axs_testing.js', |
| - 'third_party/zlib/google/test/data', |
| - ] |
| - # The following are spell check data. Now only list the data under |
| - # third_party/hunspell_dictionaries which are used by unit tests. |
| - old_cwd = os.getcwd() |
| - os.chdir(constants.DIR_SOURCE_ROOT) |
| - test_files += glob.glob('third_party/hunspell_dictionaries/*.bdic') |
| - os.chdir(old_cwd) |
| - return test_files |
| - elif test_suite_basename == 'media_unittests': |
| + if test_suite_basename == 'media_unittests': |
| return [ |
| 'media/test/data', |
| ] |
| @@ -258,17 +171,19 @@ class TestRunner(base_test_runner.BaseTestRunner): |
| test_apk_package_name: Apk package name for tests running in APKs. |
| test_activity_name: Test activity to invoke for APK tests. |
| command_line_file: Filename to use to pass arguments to tests. |
| + deps_dir: The path to the dependency dir on the host to push to the device. |
| """ |
| def __init__(self, device, test_suite, test_arguments, timeout, |
| cleanup_test_files, tool_name, build_type, |
| in_webkit_checkout, push_deps, test_apk_package_name=None, |
| - test_activity_name=None, command_line_file=None): |
| + test_activity_name=None, command_line_file=None, deps_dir=None): |
| super(TestRunner, self).__init__(device, tool_name, build_type, push_deps) |
| self._running_on_emulator = self.device.startswith('emulator') |
| self._test_arguments = test_arguments |
| self.in_webkit_checkout = in_webkit_checkout |
| self._cleanup_test_files = cleanup_test_files |
| + self._deps_dir = deps_dir |
| logging.warning('Test suite: ' + test_suite) |
| if os.path.splitext(test_suite)[1] == '.apk': |
| @@ -302,14 +217,19 @@ class TestRunner(base_test_runner.BaseTestRunner): |
| #override |
| def PushDataDeps(self): |
| + self.adb.WaitForSdCardReady(20) |
| self.test_package.PushDataAndPakFiles() |
| self.tool.CopyFiles() |
| - test_data = _GetDataFilesForTestSuite(self.test_package.test_suite_dirname, |
| - self.test_package.test_suite_basename) |
| - if test_data: |
| - # Make sure SD card is ready. |
| - self.adb.WaitForSdCardReady(20) |
| - self.CopyTestData(test_data, self.adb.GetExternalStorage()) |
| + if self._deps_dir: |
| + self.CopyTestData([p for p in os.listdir(self._deps_dir)], |
|
M-A Ruel
2013/07/08 17:56:02
replace this:
[p for p in os.listdir(self._deps_
|
| + self.adb.GetExternalStorage(), |
| + src_root=self._deps_dir) |
| + else: |
| + logging.info('Did not find an isolate file for the test suite.') |
| + deps_list = _GetDataFilesForTestSuite( |
| + self.test_package.test_suite_basename) |
| + self.CopyTestData(deps_list, self.adb.GetExternalStorage()) |
| + |
| if self.test_package.test_suite_basename == 'webkit_unit_tests': |
|
bulach
2013/07/04 11:05:21
as above, perhaps simplify this a bit by moving th
frankf
2013/07/09 01:09:35
Done.
|
| self.PushWebKitUnitTestsData() |