Index: build/android/pylib/gtest/setup.py |
diff --git a/build/android/pylib/gtest/setup.py b/build/android/pylib/gtest/setup.py |
index 5581fbc3a203253397fa7bac30f628a923e4d3aa..d73d862b33db9aed3f9c6fb7ea02becdadc25eb4 100644 |
--- a/build/android/pylib/gtest/setup.py |
+++ b/build/android/pylib/gtest/setup.py |
@@ -5,14 +5,10 @@ |
"""Generates test runner factory and tests for GTests.""" |
# pylint: disable=W0212 |
-import fnmatch |
-import glob |
import logging |
import os |
-import shutil |
import sys |
-from pylib import cmd_helper |
from pylib import constants |
from pylib import valgrind_tools |
@@ -22,6 +18,7 @@ from pylib.device import device_utils |
from pylib.gtest import test_package_apk |
from pylib.gtest import test_package_exe |
from pylib.gtest import test_runner |
+from pylib.utils import isolator |
sys.path.insert(0, |
os.path.join(constants.DIR_SOURCE_ROOT, 'build', 'util', 'lib', |
@@ -71,9 +68,6 @@ _DEPS_EXCLUSION_LIST = [ |
'webkit/data/ico_decoder', |
] |
-_ISOLATE_SCRIPT = os.path.join( |
- constants.DIR_SOURCE_ROOT, 'tools', 'swarming_client', 'isolate.py') |
- |
def _GenerateDepsDirUsingIsolate(suite_name, isolate_file_path=None): |
"""Generate the dependency dir for the test suite using isolate. |
@@ -83,9 +77,6 @@ def _GenerateDepsDirUsingIsolate(suite_name, isolate_file_path=None): |
isolate_file_path: .isolate file path to use. If there is a default .isolate |
file path for the suite_name, this will override it. |
""" |
- if os.path.isdir(constants.ISOLATE_DEPS_DIR): |
- shutil.rmtree(constants.ISOLATE_DEPS_DIR) |
- |
if isolate_file_path: |
if os.path.isabs(isolate_file_path): |
isolate_abs_path = isolate_file_path |
@@ -102,85 +93,17 @@ def _GenerateDepsDirUsingIsolate(suite_name, isolate_file_path=None): |
isolated_abs_path = os.path.join( |
constants.GetOutDirectory(), '%s.isolated' % suite_name) |
assert os.path.exists(isolate_abs_path), 'Cannot find %s' % isolate_abs_path |
- # This needs to be kept in sync with the cmd line options for isolate.py |
- # in src/build/isolate.gypi. |
- isolate_cmd = [ |
- 'python', _ISOLATE_SCRIPT, |
- 'remap', |
- '--isolate', isolate_abs_path, |
- '--isolated', isolated_abs_path, |
- '--outdir', constants.ISOLATE_DEPS_DIR, |
- |
- '--path-variable', 'DEPTH', constants.DIR_SOURCE_ROOT, |
- '--path-variable', 'PRODUCT_DIR', constants.GetOutDirectory(), |
- |
- '--config-variable', 'OS', 'android', |
- '--config-variable', 'CONFIGURATION_NAME', constants.GetBuildType(), |
- '--config-variable', 'asan', '0', |
- '--config-variable', 'chromeos', '0', |
- '--config-variable', 'component', 'static_library', |
- '--config-variable', 'fastbuild', '0', |
- '--config-variable', 'icu_use_data_file_flag', '1', |
- '--config-variable', 'libpeer_target_type', 'static_library', |
- '--config-variable', 'v8_use_external_startup_data', '0', |
- '--config-variable', 'lsan', '0', |
- # TODO(maruel): This may not be always true. |
- '--config-variable', 'target_arch', 'arm', |
- '--config-variable', 'use_openssl', '0', |
- '--config-variable', 'use_ozone', '0', |
- ] |
- assert not cmd_helper.RunCmd(isolate_cmd) |
+ i = isolator.Isolator(constants.ISOLATE_DEPS_DIR) |
+ i.Clear() |
+ i.Remap(isolate_abs_path, isolated_abs_path) |
# We're relying on the fact that timestamps are preserved |
# by the remap command (hardlinked). Otherwise, all the data |
# will be pushed to the device once we move to using time diff |
# instead of md5sum. Perform a sanity check here. |
- for root, _, filenames in os.walk(constants.ISOLATE_DEPS_DIR): |
- if filenames: |
- linked_file = os.path.join(root, filenames[0]) |
- orig_file = os.path.join( |
- constants.DIR_SOURCE_ROOT, |
- os.path.relpath(linked_file, constants.ISOLATE_DEPS_DIR)) |
- if os.stat(linked_file).st_ino == os.stat(orig_file).st_ino: |
- break |
- else: |
- raise Exception('isolate remap command did not use hardlinks.') |
- |
- # Delete excluded files as defined by _DEPS_EXCLUSION_LIST. |
- old_cwd = os.getcwd() |
- try: |
- os.chdir(constants.ISOLATE_DEPS_DIR) |
- excluded_paths = [x for y in _DEPS_EXCLUSION_LIST for x in glob.glob(y)] |
- if excluded_paths: |
- logging.info('Excluding the following from dependency list: %s', |
- excluded_paths) |
- for p in excluded_paths: |
- if os.path.isdir(p): |
- shutil.rmtree(p) |
- else: |
- os.remove(p) |
- finally: |
- os.chdir(old_cwd) |
- |
- # On Android, all pak files need to be in the top-level 'paks' directory. |
- paks_dir = os.path.join(constants.ISOLATE_DEPS_DIR, 'paks') |
- os.mkdir(paks_dir) |
- |
- deps_out_dir = os.path.join( |
- constants.ISOLATE_DEPS_DIR, |
- os.path.relpath(os.path.join(constants.GetOutDirectory(), os.pardir), |
- constants.DIR_SOURCE_ROOT)) |
- for root, _, filenames in os.walk(deps_out_dir): |
- for filename in fnmatch.filter(filenames, '*.pak'): |
- shutil.move(os.path.join(root, filename), paks_dir) |
- |
- # Move everything in PRODUCT_DIR to top level. |
- deps_product_dir = os.path.join(deps_out_dir, constants.GetBuildType()) |
- if os.path.isdir(deps_product_dir): |
- for p in os.listdir(deps_product_dir): |
- shutil.move(os.path.join(deps_product_dir, p), constants.ISOLATE_DEPS_DIR) |
- os.rmdir(deps_product_dir) |
- os.rmdir(deps_out_dir) |
+ i.VerifyHardlinks() |
+ i.PurgeExcluded(_DEPS_EXCLUSION_LIST) |
+ i.MoveOutputDeps() |
def _GetDisabledTestsFilterFromFile(suite_name): |