diff options
-rwxr-xr-x | test/default_run.py (renamed from test/etc/default_run.py) | 54 | ||||
-rwxr-xr-x | test/etc/apex_bootclasspath_utils.py | 82 | ||||
-rwxr-xr-x | test/run-test | 8 |
3 files changed, 57 insertions, 87 deletions
diff --git a/test/etc/default_run.py b/test/default_run.py index 268ec2fc2a..de6b8feeed 100755 --- a/test/etc/default_run.py +++ b/test/default_run.py @@ -14,7 +14,6 @@ # limitations under the License. import sys, os, shutil, shlex, re, subprocess, glob -from etc.apex_bootclasspath_utils import get_apex_bootclasspath, get_apex_bootclasspath_locations from argparse import ArgumentParser, BooleanOptionalAction, Namespace from os import path from os.path import isfile, isdir @@ -129,6 +128,59 @@ def parse_args(argv): return argp.parse_args(argv) +# Note: This must start with the CORE_IMG_JARS in Android.common_path.mk +# because that's what we use for compiling the boot.art image. +# It may contain additional modules from TEST_CORE_JARS. +bpath_modules = ("core-oj core-libart okhttp bouncycastle apache-xml core-icu4j" + " conscrypt") + + +# Helper function to construct paths for apex modules (for both -Xbootclasspath and +# -Xbootclasspath-location). +def get_apex_bootclasspath_impl(bpath_prefix: str): + bpath_separator = "" + bpath = "" + bpath_jar = "" + for bpath_module in bpath_modules.split(" "): + apex_module = "com.android.art" + if bpath_module == "conscrypt": + apex_module = "com.android.conscrypt" + if bpath_module == "core-icu4j": + apex_module = "com.android.i18n" + bpath_jar = f"/apex/{apex_module}/javalib/{bpath_module}.jar" + bpath += f"{bpath_separator}{bpath_prefix}{bpath_jar}" + bpath_separator = ":" + return bpath + + +# Gets a -Xbootclasspath paths with the apex modules. +def get_apex_bootclasspath(host: bool): + bpath_prefix = "" + + if host: + bpath_prefix = os.environ["ANDROID_HOST_OUT"] + + return get_apex_bootclasspath_impl(bpath_prefix) + + +# Gets a -Xbootclasspath-location paths with the apex modules. +def get_apex_bootclasspath_locations(host: bool): + bpath_location_prefix = "" + + if host: + ANDROID_BUILD_TOP=os.environ["ANDROID_BUILD_TOP"] + ANDROID_HOST_OUT=os.environ["ANDROID_HOST_OUT"] + if ANDROID_HOST_OUT[0:len(ANDROID_BUILD_TOP)+1] == f"{ANDROID_BUILD_TOP}/": + bpath_location_prefix=ANDROID_HOST_OUT[len(ANDROID_BUILD_TOP)+1:] + else: + print(f"ANDROID_BUILD_TOP/ is not a prefix of ANDROID_HOST_OUT"\ + "\nANDROID_BUILD_TOP={ANDROID_BUILD_TOP}"\ + "\nANDROID_HOST_OUT={ANDROID_HOST_OUT}") + sys.exit(1) + + return get_apex_bootclasspath_impl(bpath_location_prefix) + + def default_run(ctx, args, **kwargs): # Clone the args so we can modify them without affecting args in the caller. args = Namespace(**vars(args)) diff --git a/test/etc/apex_bootclasspath_utils.py b/test/etc/apex_bootclasspath_utils.py deleted file mode 100755 index d2415e5d3d..0000000000 --- a/test/etc/apex_bootclasspath_utils.py +++ /dev/null @@ -1,82 +0,0 @@ -# -# Copyright (C) 2022 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file contains utils for constructing -Xbootclasspath and -Xbootclasspath-location -# for dex2oat and dalvikvm from apex modules list. -# -# Those utils could be used outside of art/test/ to run ART in chroot setup. - -import os, sys - -# Note: This must start with the CORE_IMG_JARS in Android.common_path.mk -# because that's what we use for compiling the boot.art image. -# It may contain additional modules from TEST_CORE_JARS. -bpath_modules = ("core-oj core-libart okhttp bouncycastle apache-xml core-icu4j" - " conscrypt") - - -# Helper function to construct paths for apex modules (for both -Xbootclasspath and -# -Xbootclasspath-location). -# -# Arguments. -# ${1}: path prefix. -def get_apex_bootclasspath_impl(bpath_prefix: str): - bpath_separator = "" - bpath = "" - bpath_jar = "" - for bpath_module in bpath_modules.split(" "): - apex_module = "com.android.art" - if bpath_module == "conscrypt": - apex_module = "com.android.conscrypt" - if bpath_module == "core-icu4j": - apex_module = "com.android.i18n" - bpath_jar = f"/apex/{apex_module}/javalib/{bpath_module}.jar" - bpath += f"{bpath_separator}{bpath_prefix}{bpath_jar}" - bpath_separator = ":" - return bpath - - -# Gets a -Xbootclasspath paths with the apex modules. -# -# Arguments. -# ${1}: host (y|n). -def get_apex_bootclasspath(host: bool): - bpath_prefix = "" - - if host: - bpath_prefix = os.environ["ANDROID_HOST_OUT"] - - return get_apex_bootclasspath_impl(bpath_prefix) - - -# Gets a -Xbootclasspath-location paths with the apex modules. -# -# Arguments. -# ${1}: host (y|n). -def get_apex_bootclasspath_locations(host: bool): - bpath_location_prefix = "" - - if host: - ANDROID_BUILD_TOP=os.environ["ANDROID_BUILD_TOP"] - ANDROID_HOST_OUT=os.environ["ANDROID_HOST_OUT"] - if ANDROID_HOST_OUT[0:len(ANDROID_BUILD_TOP)+1] == f"{ANDROID_BUILD_TOP}/": - bpath_location_prefix=ANDROID_HOST_OUT[len(ANDROID_BUILD_TOP)+1:] - else: - print(f"ANDROID_BUILD_TOP/ is not a prefix of ANDROID_HOST_OUT"\ - "\nANDROID_BUILD_TOP={ANDROID_BUILD_TOP}"\ - "\nANDROID_HOST_OUT={ANDROID_HOST_OUT}") - sys.exit(1) - - return get_apex_bootclasspath_impl(bpath_location_prefix) diff --git a/test/run-test b/test/run-test index 8980c2e205..db0885ea4b 100755 --- a/test/run-test +++ b/test/run-test @@ -16,7 +16,7 @@ import os, sys, glob, re, shutil, subprocess, shlex, resource -import etc.default_run +import default_run as default_run_module from importlib.machinery import SourceFileLoader from inspect import currentframe, getframeinfo, FrameInfo @@ -58,7 +58,7 @@ class RunTestContext: # Execute the default runner (possibly with modified arguments). def default_run(self, args, **kwargs): - etc.default_run.default_run(self, args, **kwargs) + default_run_module.default_run(self, args, **kwargs) # TODO: Replace with 'def main():' (which might change variables from globals to locals) @@ -939,7 +939,7 @@ if True: # Execute the "run" method in the per-test specific script file. def run_test_script(): - parsed_args = etc.default_run.parse_args(shlex.split(" ".join(run_args + args))) + parsed_args = default_run_module.parse_args(shlex.split(" ".join(run_args + args))) parsed_args.stdout_file = os.path.join(tmp_dir, test_stdout) parsed_args.stderr_file = os.path.join(tmp_dir, test_stderr) @@ -948,7 +948,7 @@ if True: module = SourceFileLoader("run_" + TEST_NAME, script).load_module() module.run(ctx, parsed_args) else: - etc.default_run.default_run(ctx, parsed_args) + default_run_module.default_run(ctx, parsed_args) # Test might not execute anything but we still expect the output files to exist. Path(test_stdout).touch() |