1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project 2*7594170eSAndroid Build Coastguard Worker# 3*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*7594170eSAndroid Build Coastguard Worker# 7*7594170eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*7594170eSAndroid Build Coastguard Worker# 9*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*7594170eSAndroid Build Coastguard Worker# limitations under the License. 14*7594170eSAndroid Build Coastguard Worker 15*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:new_sets.bzl", "sets") 16*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") 17*7594170eSAndroid Build Coastguard Workerload("@soong_injection//apex_toolchain:constants.bzl", "default_manifest_version") 18*7594170eSAndroid Build Coastguard Workerload("//build/bazel/platforms:platform_utils.bzl", "platforms") 19*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules:common.bzl", "get_dep_targets") 20*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules:prebuilt_file.bzl", "prebuilt_file") 21*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules:sh_binary.bzl", "sh_binary") 22*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/aidl:aidl_interface.bzl", "aidl_interface") 23*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/android:android_app_certificate.bzl", "android_app_certificate") 24*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_binary.bzl", "cc_binary") 25*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_library_headers.bzl", "cc_library_headers") 26*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_library_shared.bzl", "cc_library_shared") 27*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_library_static.bzl", "cc_library_static") 28*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_stub_library.bzl", "cc_stub_suite") 29*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/test_common:flags.bzl", "action_flags_present_only_for_mnemonic_test") 30*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/test_common:rules.bzl", "expect_failure_test", "target_under_test_exist_test") 31*7594170eSAndroid Build Coastguard Workerload(":apex_deps_validation.bzl", "ApexDepsInfo", "apex_dep_infos_to_allowlist_strings") 32*7594170eSAndroid Build Coastguard Workerload(":apex_info.bzl", "ApexInfo", "ApexMkInfo") 33*7594170eSAndroid Build Coastguard Workerload(":apex_test_helpers.bzl", "test_apex") 34*7594170eSAndroid Build Coastguard Worker 35*7594170eSAndroid Build Coastguard WorkerActionArgsInfo = provider( 36*7594170eSAndroid Build Coastguard Worker fields = { 37*7594170eSAndroid Build Coastguard Worker "argv": "The link action arguments.", 38*7594170eSAndroid Build Coastguard Worker }, 39*7594170eSAndroid Build Coastguard Worker) 40*7594170eSAndroid Build Coastguard Worker 41*7594170eSAndroid Build Coastguard Workerdef _canned_fs_config_test(ctx): 42*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 43*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 44*7594170eSAndroid Build Coastguard Worker 45*7594170eSAndroid Build Coastguard Worker found_canned_fs_config_action = False 46*7594170eSAndroid Build Coastguard Worker 47*7594170eSAndroid Build Coastguard Worker def pretty_print_list(the_list): 48*7594170eSAndroid Build Coastguard Worker if not the_list: 49*7594170eSAndroid Build Coastguard Worker return "[]" 50*7594170eSAndroid Build Coastguard Worker result = "[\n" 51*7594170eSAndroid Build Coastguard Worker for item in the_list: 52*7594170eSAndroid Build Coastguard Worker result += " \"%s\",\n" % item 53*7594170eSAndroid Build Coastguard Worker return result + "]" 54*7594170eSAndroid Build Coastguard Worker 55*7594170eSAndroid Build Coastguard Worker if ctx.attr.expected_extra_cat: 56*7594170eSAndroid Build Coastguard Worker append_custom_fs_config = [a for a in actions if a.mnemonic == "AppendCustomFsConfig"] 57*7594170eSAndroid Build Coastguard Worker asserts.true(env, len(append_custom_fs_config) == 1, "could not find the AppendCustomFsConfig action") 58*7594170eSAndroid Build Coastguard Worker a = append_custom_fs_config[0] 59*7594170eSAndroid Build Coastguard Worker args = a.argv[2].split(" ") # first 2 are "/bin/bash" and "-c" 60*7594170eSAndroid Build Coastguard Worker asserts.equals(env, args[0], "cat") 61*7594170eSAndroid Build Coastguard Worker asserts.true(env, args[1].endswith("_canned_fs_config.txt")) 62*7594170eSAndroid Build Coastguard Worker asserts.true(env, args[2].endswith(ctx.attr.expected_extra_cat), "expected %s, but got %s" % (ctx.attr.expected_extra_cat, args[2])) 63*7594170eSAndroid Build Coastguard Worker asserts.equals(env, args[3], ">") 64*7594170eSAndroid Build Coastguard Worker asserts.true(env, args[4].endswith("_combined_canned_fs_config.txt")) 65*7594170eSAndroid Build Coastguard Worker 66*7594170eSAndroid Build Coastguard Worker for a in actions: 67*7594170eSAndroid Build Coastguard Worker if a.mnemonic != "FileWrite": 68*7594170eSAndroid Build Coastguard Worker # The canned_fs_config uses ctx.actions.write. 69*7594170eSAndroid Build Coastguard Worker continue 70*7594170eSAndroid Build Coastguard Worker 71*7594170eSAndroid Build Coastguard Worker outputs = a.outputs.to_list() 72*7594170eSAndroid Build Coastguard Worker if len(outputs) != 1: 73*7594170eSAndroid Build Coastguard Worker continue 74*7594170eSAndroid Build Coastguard Worker if not outputs[0].basename.endswith("_canned_fs_config.txt"): 75*7594170eSAndroid Build Coastguard Worker continue 76*7594170eSAndroid Build Coastguard Worker 77*7594170eSAndroid Build Coastguard Worker found_canned_fs_config_action = True 78*7594170eSAndroid Build Coastguard Worker 79*7594170eSAndroid Build Coastguard Worker # Don't sort -- the order is significant. 80*7594170eSAndroid Build Coastguard Worker actual_entries = a.content.split("\n") 81*7594170eSAndroid Build Coastguard Worker replacement = "64" if platforms.get_target_bitness(ctx.attr._platform_utils) == 64 else "" 82*7594170eSAndroid Build Coastguard Worker expected_entries = [x.replace("{64_OR_BLANK}", replacement) for x in ctx.attr.expected_entries] 83*7594170eSAndroid Build Coastguard Worker asserts.equals(env, pretty_print_list(expected_entries), pretty_print_list(actual_entries)) 84*7594170eSAndroid Build Coastguard Worker 85*7594170eSAndroid Build Coastguard Worker break 86*7594170eSAndroid Build Coastguard Worker 87*7594170eSAndroid Build Coastguard Worker # Ensures that we actually found the canned_fs_config.txt generation action. 88*7594170eSAndroid Build Coastguard Worker asserts.true(env, found_canned_fs_config_action, "did not find the canned fs config generating action") 89*7594170eSAndroid Build Coastguard Worker 90*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 91*7594170eSAndroid Build Coastguard Worker 92*7594170eSAndroid Build Coastguard Workercanned_fs_config_test = analysistest.make( 93*7594170eSAndroid Build Coastguard Worker _canned_fs_config_test, 94*7594170eSAndroid Build Coastguard Worker attrs = { 95*7594170eSAndroid Build Coastguard Worker "expected_entries": attr.string_list( 96*7594170eSAndroid Build Coastguard Worker doc = "Expected lines in the canned_fs_config.txt", 97*7594170eSAndroid Build Coastguard Worker ), 98*7594170eSAndroid Build Coastguard Worker "expected_extra_cat": attr.string( 99*7594170eSAndroid Build Coastguard Worker doc = "Filename of the custom canned fs config to be found in the AppendCustomFsConfig action", 100*7594170eSAndroid Build Coastguard Worker ), 101*7594170eSAndroid Build Coastguard Worker "_platform_utils": attr.label( 102*7594170eSAndroid Build Coastguard Worker default = Label("//build/bazel/platforms:platform_utils"), 103*7594170eSAndroid Build Coastguard Worker ), 104*7594170eSAndroid Build Coastguard Worker }, 105*7594170eSAndroid Build Coastguard Worker) 106*7594170eSAndroid Build Coastguard Worker 107*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_basic(): 108*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_basic" 109*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 110*7594170eSAndroid Build Coastguard Worker 111*7594170eSAndroid Build Coastguard Worker test_apex(name = name) 112*7594170eSAndroid Build Coastguard Worker 113*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 114*7594170eSAndroid Build Coastguard Worker name = test_name, 115*7594170eSAndroid Build Coastguard Worker target_under_test = name, 116*7594170eSAndroid Build Coastguard Worker expected_entries = [ 117*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 118*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 119*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 120*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 121*7594170eSAndroid Build Coastguard Worker ], 122*7594170eSAndroid Build Coastguard Worker ) 123*7594170eSAndroid Build Coastguard Worker 124*7594170eSAndroid Build Coastguard Worker return test_name 125*7594170eSAndroid Build Coastguard Worker 126*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_custom(): 127*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_custom" 128*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 129*7594170eSAndroid Build Coastguard Worker 130*7594170eSAndroid Build Coastguard Worker native.genrule( 131*7594170eSAndroid Build Coastguard Worker name = name + ".custom_config", 132*7594170eSAndroid Build Coastguard Worker outs = [name + ".custom.config"], 133*7594170eSAndroid Build Coastguard Worker cmd = "echo -e \"/2.bin 0 1000 0750\n/1.bin 0 1000 0777\n\" > $@", 134*7594170eSAndroid Build Coastguard Worker ) 135*7594170eSAndroid Build Coastguard Worker 136*7594170eSAndroid Build Coastguard Worker test_apex( 137*7594170eSAndroid Build Coastguard Worker name = name, 138*7594170eSAndroid Build Coastguard Worker canned_fs_config = name + "_custom.config", 139*7594170eSAndroid Build Coastguard Worker ) 140*7594170eSAndroid Build Coastguard Worker 141*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 142*7594170eSAndroid Build Coastguard Worker name = test_name, 143*7594170eSAndroid Build Coastguard Worker target_under_test = name, 144*7594170eSAndroid Build Coastguard Worker expected_entries = [ 145*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 146*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 147*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 148*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 149*7594170eSAndroid Build Coastguard Worker # unfortunately, due to bazel analysis not being able to read the 150*7594170eSAndroid Build Coastguard Worker # contents of inputs (i.e. dynamic dependencies), we cannot test for 151*7594170eSAndroid Build Coastguard Worker # the contents of the custom config here. but, we can test that the 152*7594170eSAndroid Build Coastguard Worker # custom config is concatenated in the action command with 153*7594170eSAndroid Build Coastguard Worker # 'expected_extra_cat' below. 154*7594170eSAndroid Build Coastguard Worker ], 155*7594170eSAndroid Build Coastguard Worker expected_extra_cat = name + "_custom.config", 156*7594170eSAndroid Build Coastguard Worker ) 157*7594170eSAndroid Build Coastguard Worker 158*7594170eSAndroid Build Coastguard Worker return test_name 159*7594170eSAndroid Build Coastguard Worker 160*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_binaries(): 161*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_binaries" 162*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 163*7594170eSAndroid Build Coastguard Worker 164*7594170eSAndroid Build Coastguard Worker sh_binary( 165*7594170eSAndroid Build Coastguard Worker name = "bin_sh", 166*7594170eSAndroid Build Coastguard Worker srcs = ["bin.sh"], 167*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 168*7594170eSAndroid Build Coastguard Worker ) 169*7594170eSAndroid Build Coastguard Worker 170*7594170eSAndroid Build Coastguard Worker cc_binary( 171*7594170eSAndroid Build Coastguard Worker name = "bin_cc", 172*7594170eSAndroid Build Coastguard Worker srcs = ["bin.cc"], 173*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 174*7594170eSAndroid Build Coastguard Worker ) 175*7594170eSAndroid Build Coastguard Worker 176*7594170eSAndroid Build Coastguard Worker test_apex( 177*7594170eSAndroid Build Coastguard Worker name = name, 178*7594170eSAndroid Build Coastguard Worker binaries = ["bin_sh", "bin_cc"], 179*7594170eSAndroid Build Coastguard Worker ) 180*7594170eSAndroid Build Coastguard Worker 181*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 182*7594170eSAndroid Build Coastguard Worker name = test_name, 183*7594170eSAndroid Build Coastguard Worker target_under_test = name, 184*7594170eSAndroid Build Coastguard Worker expected_entries = [ 185*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 186*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 187*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 188*7594170eSAndroid Build Coastguard Worker "/lib{64_OR_BLANK}/libc++.so 1000 1000 0644", 189*7594170eSAndroid Build Coastguard Worker "/bin/bin_cc 0 2000 0755", 190*7594170eSAndroid Build Coastguard Worker "/bin/bin_sh 0 2000 0755", 191*7594170eSAndroid Build Coastguard Worker "/bin 0 2000 0755", 192*7594170eSAndroid Build Coastguard Worker "/lib{64_OR_BLANK} 0 2000 0755", 193*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 194*7594170eSAndroid Build Coastguard Worker ], 195*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android"], 196*7594170eSAndroid Build Coastguard Worker ) 197*7594170eSAndroid Build Coastguard Worker 198*7594170eSAndroid Build Coastguard Worker return test_name 199*7594170eSAndroid Build Coastguard Worker 200*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_native_shared_libs_arm(): 201*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_native_shared_libs_arm" 202*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 203*7594170eSAndroid Build Coastguard Worker 204*7594170eSAndroid Build Coastguard Worker cc_library_shared( 205*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 206*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 207*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 208*7594170eSAndroid Build Coastguard Worker ) 209*7594170eSAndroid Build Coastguard Worker 210*7594170eSAndroid Build Coastguard Worker cc_library_shared( 211*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 212*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 213*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 214*7594170eSAndroid Build Coastguard Worker ) 215*7594170eSAndroid Build Coastguard Worker 216*7594170eSAndroid Build Coastguard Worker test_apex( 217*7594170eSAndroid Build Coastguard Worker name = name, 218*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 219*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_lib2_cc"], 220*7594170eSAndroid Build Coastguard Worker ) 221*7594170eSAndroid Build Coastguard Worker 222*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 223*7594170eSAndroid Build Coastguard Worker name = test_name, 224*7594170eSAndroid Build Coastguard Worker target_under_test = name, 225*7594170eSAndroid Build Coastguard Worker expected_entries = [ 226*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 227*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 228*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 229*7594170eSAndroid Build Coastguard Worker "/lib/apex_canned_fs_config_native_shared_libs_arm_lib_cc.so 1000 1000 0644", 230*7594170eSAndroid Build Coastguard Worker "/lib/libc++.so 1000 1000 0644", 231*7594170eSAndroid Build Coastguard Worker "/lib 0 2000 0755", 232*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 233*7594170eSAndroid Build Coastguard Worker ], 234*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/arch:arm"], 235*7594170eSAndroid Build Coastguard Worker ) 236*7594170eSAndroid Build Coastguard Worker 237*7594170eSAndroid Build Coastguard Worker return test_name 238*7594170eSAndroid Build Coastguard Worker 239*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_native_shared_libs_arm64(): 240*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_native_shared_libs_arm64" 241*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 242*7594170eSAndroid Build Coastguard Worker 243*7594170eSAndroid Build Coastguard Worker cc_library_shared( 244*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 245*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 246*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 247*7594170eSAndroid Build Coastguard Worker ) 248*7594170eSAndroid Build Coastguard Worker 249*7594170eSAndroid Build Coastguard Worker cc_library_shared( 250*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 251*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 252*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 253*7594170eSAndroid Build Coastguard Worker ) 254*7594170eSAndroid Build Coastguard Worker 255*7594170eSAndroid Build Coastguard Worker test_apex( 256*7594170eSAndroid Build Coastguard Worker name = name, 257*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 258*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_lib2_cc"], 259*7594170eSAndroid Build Coastguard Worker ) 260*7594170eSAndroid Build Coastguard Worker 261*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 262*7594170eSAndroid Build Coastguard Worker name = test_name, 263*7594170eSAndroid Build Coastguard Worker target_under_test = name, 264*7594170eSAndroid Build Coastguard Worker expected_entries = [ 265*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 266*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 267*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 268*7594170eSAndroid Build Coastguard Worker "/lib/apex_canned_fs_config_native_shared_libs_arm64_lib_cc.so 1000 1000 0644", 269*7594170eSAndroid Build Coastguard Worker "/lib/libc++.so 1000 1000 0644", 270*7594170eSAndroid Build Coastguard Worker "/lib64/apex_canned_fs_config_native_shared_libs_arm64_lib2_cc.so 1000 1000 0644", 271*7594170eSAndroid Build Coastguard Worker "/lib64/libc++.so 1000 1000 0644", 272*7594170eSAndroid Build Coastguard Worker "/lib 0 2000 0755", 273*7594170eSAndroid Build Coastguard Worker "/lib64 0 2000 0755", 274*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 275*7594170eSAndroid Build Coastguard Worker ], 276*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/arch:arm64"], 277*7594170eSAndroid Build Coastguard Worker ) 278*7594170eSAndroid Build Coastguard Worker 279*7594170eSAndroid Build Coastguard Worker return test_name 280*7594170eSAndroid Build Coastguard Worker 281*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_prebuilts(): 282*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_prebuilts" 283*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 284*7594170eSAndroid Build Coastguard Worker 285*7594170eSAndroid Build Coastguard Worker prebuilt_file( 286*7594170eSAndroid Build Coastguard Worker name = "file", 287*7594170eSAndroid Build Coastguard Worker src = "file.txt", 288*7594170eSAndroid Build Coastguard Worker dir = "etc", 289*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 290*7594170eSAndroid Build Coastguard Worker ) 291*7594170eSAndroid Build Coastguard Worker 292*7594170eSAndroid Build Coastguard Worker prebuilt_file( 293*7594170eSAndroid Build Coastguard Worker name = "nested_file_in_dir", 294*7594170eSAndroid Build Coastguard Worker src = "file2.txt", 295*7594170eSAndroid Build Coastguard Worker dir = "etc/nested", 296*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 297*7594170eSAndroid Build Coastguard Worker ) 298*7594170eSAndroid Build Coastguard Worker 299*7594170eSAndroid Build Coastguard Worker prebuilt_file( 300*7594170eSAndroid Build Coastguard Worker name = "renamed_file_in_dir", 301*7594170eSAndroid Build Coastguard Worker src = "file3.txt", 302*7594170eSAndroid Build Coastguard Worker dir = "etc", 303*7594170eSAndroid Build Coastguard Worker filename = "renamed_file3.txt", 304*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 305*7594170eSAndroid Build Coastguard Worker ) 306*7594170eSAndroid Build Coastguard Worker 307*7594170eSAndroid Build Coastguard Worker test_apex( 308*7594170eSAndroid Build Coastguard Worker name = name, 309*7594170eSAndroid Build Coastguard Worker prebuilts = [ 310*7594170eSAndroid Build Coastguard Worker ":file", 311*7594170eSAndroid Build Coastguard Worker ":nested_file_in_dir", 312*7594170eSAndroid Build Coastguard Worker ":renamed_file_in_dir", 313*7594170eSAndroid Build Coastguard Worker ], 314*7594170eSAndroid Build Coastguard Worker ) 315*7594170eSAndroid Build Coastguard Worker 316*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 317*7594170eSAndroid Build Coastguard Worker name = test_name, 318*7594170eSAndroid Build Coastguard Worker target_under_test = name, 319*7594170eSAndroid Build Coastguard Worker expected_entries = [ 320*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 321*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 322*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 323*7594170eSAndroid Build Coastguard Worker "/etc/file 1000 1000 0644", 324*7594170eSAndroid Build Coastguard Worker "/etc/nested/nested_file_in_dir 1000 1000 0644", 325*7594170eSAndroid Build Coastguard Worker "/etc/renamed_file3.txt 1000 1000 0644", 326*7594170eSAndroid Build Coastguard Worker "/etc 0 2000 0755", 327*7594170eSAndroid Build Coastguard Worker "/etc/nested 0 2000 0755", 328*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 329*7594170eSAndroid Build Coastguard Worker ], 330*7594170eSAndroid Build Coastguard Worker ) 331*7594170eSAndroid Build Coastguard Worker 332*7594170eSAndroid Build Coastguard Worker return test_name 333*7594170eSAndroid Build Coastguard Worker 334*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_prebuilts_sort_order(): 335*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_prebuilts_sort_order" 336*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 337*7594170eSAndroid Build Coastguard Worker 338*7594170eSAndroid Build Coastguard Worker prebuilt_file( 339*7594170eSAndroid Build Coastguard Worker name = "file_a", 340*7594170eSAndroid Build Coastguard Worker src = "file_a.txt", 341*7594170eSAndroid Build Coastguard Worker dir = "etc/a", 342*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 343*7594170eSAndroid Build Coastguard Worker ) 344*7594170eSAndroid Build Coastguard Worker 345*7594170eSAndroid Build Coastguard Worker prebuilt_file( 346*7594170eSAndroid Build Coastguard Worker name = "file_b", 347*7594170eSAndroid Build Coastguard Worker src = "file_b.txt", 348*7594170eSAndroid Build Coastguard Worker dir = "etc/b", 349*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 350*7594170eSAndroid Build Coastguard Worker ) 351*7594170eSAndroid Build Coastguard Worker 352*7594170eSAndroid Build Coastguard Worker prebuilt_file( 353*7594170eSAndroid Build Coastguard Worker name = "file_a_c", 354*7594170eSAndroid Build Coastguard Worker src = "file_a_c.txt", 355*7594170eSAndroid Build Coastguard Worker dir = "etc/a/c", 356*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 357*7594170eSAndroid Build Coastguard Worker ) 358*7594170eSAndroid Build Coastguard Worker 359*7594170eSAndroid Build Coastguard Worker test_apex( 360*7594170eSAndroid Build Coastguard Worker name = name, 361*7594170eSAndroid Build Coastguard Worker prebuilts = [ 362*7594170eSAndroid Build Coastguard Worker ":file_a", 363*7594170eSAndroid Build Coastguard Worker ":file_b", 364*7594170eSAndroid Build Coastguard Worker ":file_a_c", 365*7594170eSAndroid Build Coastguard Worker ], 366*7594170eSAndroid Build Coastguard Worker ) 367*7594170eSAndroid Build Coastguard Worker 368*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 369*7594170eSAndroid Build Coastguard Worker name = test_name, 370*7594170eSAndroid Build Coastguard Worker target_under_test = name, 371*7594170eSAndroid Build Coastguard Worker expected_entries = [ 372*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 373*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 374*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 375*7594170eSAndroid Build Coastguard Worker "/etc/a/c/file_a_c 1000 1000 0644", 376*7594170eSAndroid Build Coastguard Worker "/etc/a/file_a 1000 1000 0644", 377*7594170eSAndroid Build Coastguard Worker "/etc/b/file_b 1000 1000 0644", 378*7594170eSAndroid Build Coastguard Worker "/etc 0 2000 0755", 379*7594170eSAndroid Build Coastguard Worker "/etc/a 0 2000 0755", 380*7594170eSAndroid Build Coastguard Worker "/etc/a/c 0 2000 0755", 381*7594170eSAndroid Build Coastguard Worker "/etc/b 0 2000 0755", 382*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 383*7594170eSAndroid Build Coastguard Worker ], 384*7594170eSAndroid Build Coastguard Worker ) 385*7594170eSAndroid Build Coastguard Worker 386*7594170eSAndroid Build Coastguard Worker return test_name 387*7594170eSAndroid Build Coastguard Worker 388*7594170eSAndroid Build Coastguard Workerdef _test_canned_fs_config_runtime_deps(): 389*7594170eSAndroid Build Coastguard Worker name = "apex_canned_fs_config_runtime_deps" 390*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 391*7594170eSAndroid Build Coastguard Worker 392*7594170eSAndroid Build Coastguard Worker cc_library_shared( 393*7594170eSAndroid Build Coastguard Worker name = name + "_runtime_dep_3", 394*7594170eSAndroid Build Coastguard Worker srcs = ["lib2.cc"], 395*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 396*7594170eSAndroid Build Coastguard Worker ) 397*7594170eSAndroid Build Coastguard Worker 398*7594170eSAndroid Build Coastguard Worker cc_library_static( 399*7594170eSAndroid Build Coastguard Worker name = name + "_static_lib", 400*7594170eSAndroid Build Coastguard Worker srcs = ["lib3.cc"], 401*7594170eSAndroid Build Coastguard Worker runtime_deps = [name + "_runtime_dep_3"], 402*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 403*7594170eSAndroid Build Coastguard Worker ) 404*7594170eSAndroid Build Coastguard Worker 405*7594170eSAndroid Build Coastguard Worker cc_library_shared( 406*7594170eSAndroid Build Coastguard Worker name = name + "_runtime_dep_2", 407*7594170eSAndroid Build Coastguard Worker srcs = ["lib2.cc"], 408*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 409*7594170eSAndroid Build Coastguard Worker ) 410*7594170eSAndroid Build Coastguard Worker 411*7594170eSAndroid Build Coastguard Worker cc_library_shared( 412*7594170eSAndroid Build Coastguard Worker name = name + "_runtime_dep_1", 413*7594170eSAndroid Build Coastguard Worker srcs = ["lib.cc"], 414*7594170eSAndroid Build Coastguard Worker runtime_deps = [name + "_runtime_dep_2"], 415*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 416*7594170eSAndroid Build Coastguard Worker ) 417*7594170eSAndroid Build Coastguard Worker 418*7594170eSAndroid Build Coastguard Worker cc_binary( 419*7594170eSAndroid Build Coastguard Worker name = name + "_bin_cc", 420*7594170eSAndroid Build Coastguard Worker srcs = ["bin.cc"], 421*7594170eSAndroid Build Coastguard Worker runtime_deps = [name + "_runtime_dep_1"], 422*7594170eSAndroid Build Coastguard Worker deps = [name + "_static_lib"], 423*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 424*7594170eSAndroid Build Coastguard Worker ) 425*7594170eSAndroid Build Coastguard Worker 426*7594170eSAndroid Build Coastguard Worker test_apex( 427*7594170eSAndroid Build Coastguard Worker name = name, 428*7594170eSAndroid Build Coastguard Worker binaries = [name + "_bin_cc"], 429*7594170eSAndroid Build Coastguard Worker ) 430*7594170eSAndroid Build Coastguard Worker 431*7594170eSAndroid Build Coastguard Worker canned_fs_config_test( 432*7594170eSAndroid Build Coastguard Worker name = test_name, 433*7594170eSAndroid Build Coastguard Worker target_under_test = name, 434*7594170eSAndroid Build Coastguard Worker expected_entries = [ 435*7594170eSAndroid Build Coastguard Worker "/ 1000 1000 0755", 436*7594170eSAndroid Build Coastguard Worker "/apex_manifest.json 1000 1000 0644", 437*7594170eSAndroid Build Coastguard Worker "/apex_manifest.pb 1000 1000 0644", 438*7594170eSAndroid Build Coastguard Worker "/lib{64_OR_BLANK}/%s_runtime_dep_1.so 1000 1000 0644" % name, 439*7594170eSAndroid Build Coastguard Worker "/lib{64_OR_BLANK}/%s_runtime_dep_2.so 1000 1000 0644" % name, 440*7594170eSAndroid Build Coastguard Worker "/lib{64_OR_BLANK}/libc++.so 1000 1000 0644", 441*7594170eSAndroid Build Coastguard Worker "/bin/%s_bin_cc 0 2000 0755" % name, 442*7594170eSAndroid Build Coastguard Worker "/bin 0 2000 0755", 443*7594170eSAndroid Build Coastguard Worker "/lib{64_OR_BLANK} 0 2000 0755", 444*7594170eSAndroid Build Coastguard Worker "", # ends with a newline 445*7594170eSAndroid Build Coastguard Worker ], 446*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android"], 447*7594170eSAndroid Build Coastguard Worker ) 448*7594170eSAndroid Build Coastguard Worker 449*7594170eSAndroid Build Coastguard Worker return test_name 450*7594170eSAndroid Build Coastguard Worker 451*7594170eSAndroid Build Coastguard Workerdef _apex_manifest_test(ctx): 452*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 453*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 454*7594170eSAndroid Build Coastguard Worker 455*7594170eSAndroid Build Coastguard Worker conv_apex_manifest_action = [a for a in actions if a.mnemonic == "ConvApexManifest"][0] 456*7594170eSAndroid Build Coastguard Worker 457*7594170eSAndroid Build Coastguard Worker apexer_action = [a for a in actions if a.mnemonic == "Apexer"][0] 458*7594170eSAndroid Build Coastguard Worker argv = apexer_action.argv[:-1] + apexer_action.argv[-1].split(" ") 459*7594170eSAndroid Build Coastguard Worker manifest_index = argv.index("--manifest") 460*7594170eSAndroid Build Coastguard Worker manifest_path = argv[manifest_index + 1] 461*7594170eSAndroid Build Coastguard Worker 462*7594170eSAndroid Build Coastguard Worker asserts.equals( 463*7594170eSAndroid Build Coastguard Worker env, 464*7594170eSAndroid Build Coastguard Worker conv_apex_manifest_action.outputs.to_list()[0].path, 465*7594170eSAndroid Build Coastguard Worker manifest_path, 466*7594170eSAndroid Build Coastguard Worker "the generated apex manifest protobuf is used as input to apexer", 467*7594170eSAndroid Build Coastguard Worker ) 468*7594170eSAndroid Build Coastguard Worker asserts.true( 469*7594170eSAndroid Build Coastguard Worker env, 470*7594170eSAndroid Build Coastguard Worker manifest_path.endswith(".pb"), 471*7594170eSAndroid Build Coastguard Worker "the generated apex manifest should be a .pb file", 472*7594170eSAndroid Build Coastguard Worker ) 473*7594170eSAndroid Build Coastguard Worker 474*7594170eSAndroid Build Coastguard Worker if ctx.attr.expected_min_sdk_version != "": 475*7594170eSAndroid Build Coastguard Worker flag_index = argv.index("--min_sdk_version") 476*7594170eSAndroid Build Coastguard Worker min_sdk_version_argv = argv[flag_index + 1] 477*7594170eSAndroid Build Coastguard Worker asserts.equals( 478*7594170eSAndroid Build Coastguard Worker env, 479*7594170eSAndroid Build Coastguard Worker ctx.attr.expected_min_sdk_version, 480*7594170eSAndroid Build Coastguard Worker min_sdk_version_argv, 481*7594170eSAndroid Build Coastguard Worker ) 482*7594170eSAndroid Build Coastguard Worker 483*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 484*7594170eSAndroid Build Coastguard Worker 485*7594170eSAndroid Build Coastguard Workerapex_manifest_test_attr = dict( 486*7594170eSAndroid Build Coastguard Worker impl = _apex_manifest_test, 487*7594170eSAndroid Build Coastguard Worker attrs = { 488*7594170eSAndroid Build Coastguard Worker "expected_min_sdk_version": attr.string(), 489*7594170eSAndroid Build Coastguard Worker }, 490*7594170eSAndroid Build Coastguard Worker) 491*7594170eSAndroid Build Coastguard Worker 492*7594170eSAndroid Build Coastguard Workerapex_manifest_test = analysistest.make( 493*7594170eSAndroid Build Coastguard Worker **apex_manifest_test_attr 494*7594170eSAndroid Build Coastguard Worker) 495*7594170eSAndroid Build Coastguard Worker 496*7594170eSAndroid Build Coastguard Workerapex_manifest_global_min_sdk_current_test = analysistest.make( 497*7594170eSAndroid Build Coastguard Worker config_settings = { 498*7594170eSAndroid Build Coastguard Worker "@//build/bazel/rules/apex:unbundled_build_target_sdk_with_api_fingerprint": False, 499*7594170eSAndroid Build Coastguard Worker }, 500*7594170eSAndroid Build Coastguard Worker **apex_manifest_test_attr 501*7594170eSAndroid Build Coastguard Worker) 502*7594170eSAndroid Build Coastguard Worker 503*7594170eSAndroid Build Coastguard Workerapex_manifest_global_min_sdk_override_tiramisu_test = analysistest.make( 504*7594170eSAndroid Build Coastguard Worker config_settings = { 505*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_min_sdk_version_override_tiramisu", 506*7594170eSAndroid Build Coastguard Worker "@//build/bazel/rules/apex:unbundled_build_target_sdk_with_api_fingerprint": False, 507*7594170eSAndroid Build Coastguard Worker }, 508*7594170eSAndroid Build Coastguard Worker **apex_manifest_test_attr 509*7594170eSAndroid Build Coastguard Worker) 510*7594170eSAndroid Build Coastguard Worker 511*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest(): 512*7594170eSAndroid Build Coastguard Worker name = "apex_manifest" 513*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 514*7594170eSAndroid Build Coastguard Worker 515*7594170eSAndroid Build Coastguard Worker test_apex(name = name) 516*7594170eSAndroid Build Coastguard Worker 517*7594170eSAndroid Build Coastguard Worker apex_manifest_test( 518*7594170eSAndroid Build Coastguard Worker name = test_name, 519*7594170eSAndroid Build Coastguard Worker target_under_test = name, 520*7594170eSAndroid Build Coastguard Worker ) 521*7594170eSAndroid Build Coastguard Worker 522*7594170eSAndroid Build Coastguard Worker return test_name 523*7594170eSAndroid Build Coastguard Worker 524*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_min_sdk_version(): 525*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_min_sdk_version" 526*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 527*7594170eSAndroid Build Coastguard Worker 528*7594170eSAndroid Build Coastguard Worker test_apex( 529*7594170eSAndroid Build Coastguard Worker name = name, 530*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 531*7594170eSAndroid Build Coastguard Worker ) 532*7594170eSAndroid Build Coastguard Worker 533*7594170eSAndroid Build Coastguard Worker apex_manifest_test( 534*7594170eSAndroid Build Coastguard Worker name = test_name, 535*7594170eSAndroid Build Coastguard Worker target_under_test = name, 536*7594170eSAndroid Build Coastguard Worker expected_min_sdk_version = "30", 537*7594170eSAndroid Build Coastguard Worker ) 538*7594170eSAndroid Build Coastguard Worker 539*7594170eSAndroid Build Coastguard Worker return test_name 540*7594170eSAndroid Build Coastguard Worker 541*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_min_sdk_version_current(): 542*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_min_sdk_version_current" 543*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 544*7594170eSAndroid Build Coastguard Worker 545*7594170eSAndroid Build Coastguard Worker test_apex( 546*7594170eSAndroid Build Coastguard Worker name = name, 547*7594170eSAndroid Build Coastguard Worker min_sdk_version = "current", 548*7594170eSAndroid Build Coastguard Worker ) 549*7594170eSAndroid Build Coastguard Worker 550*7594170eSAndroid Build Coastguard Worker # this test verifies min_sdk_version without use_api_fingerprint 551*7594170eSAndroid Build Coastguard Worker apex_manifest_global_min_sdk_current_test( 552*7594170eSAndroid Build Coastguard Worker name = test_name, 553*7594170eSAndroid Build Coastguard Worker target_under_test = name, 554*7594170eSAndroid Build Coastguard Worker expected_min_sdk_version = "10000", 555*7594170eSAndroid Build Coastguard Worker ) 556*7594170eSAndroid Build Coastguard Worker 557*7594170eSAndroid Build Coastguard Worker return test_name 558*7594170eSAndroid Build Coastguard Worker 559*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_min_sdk_version_override(): 560*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_min_sdk_version_override" 561*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 562*7594170eSAndroid Build Coastguard Worker 563*7594170eSAndroid Build Coastguard Worker test_apex( 564*7594170eSAndroid Build Coastguard Worker name = name, 565*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 566*7594170eSAndroid Build Coastguard Worker ) 567*7594170eSAndroid Build Coastguard Worker 568*7594170eSAndroid Build Coastguard Worker # this test verifies min_sdk_version without use_api_fingerprint 569*7594170eSAndroid Build Coastguard Worker apex_manifest_global_min_sdk_override_tiramisu_test( 570*7594170eSAndroid Build Coastguard Worker name = test_name, 571*7594170eSAndroid Build Coastguard Worker target_under_test = name, 572*7594170eSAndroid Build Coastguard Worker expected_min_sdk_version = "33", # overriden to 33 573*7594170eSAndroid Build Coastguard Worker ) 574*7594170eSAndroid Build Coastguard Worker 575*7594170eSAndroid Build Coastguard Worker return test_name 576*7594170eSAndroid Build Coastguard Worker 577*7594170eSAndroid Build Coastguard Workerdef _apex_native_libs_requires_provides_test(ctx): 578*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 579*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 580*7594170eSAndroid Build Coastguard Worker asserts.equals( 581*7594170eSAndroid Build Coastguard Worker env, 582*7594170eSAndroid Build Coastguard Worker [t.label for t in ctx.attr.requires_native_libs], # expected 583*7594170eSAndroid Build Coastguard Worker target_under_test[ApexInfo].requires_native_libs, # actual 584*7594170eSAndroid Build Coastguard Worker "did not get expected requires_native_libs", 585*7594170eSAndroid Build Coastguard Worker ) 586*7594170eSAndroid Build Coastguard Worker asserts.equals( 587*7594170eSAndroid Build Coastguard Worker env, 588*7594170eSAndroid Build Coastguard Worker [t.label for t in ctx.attr.provides_native_libs], 589*7594170eSAndroid Build Coastguard Worker target_under_test[ApexInfo].provides_native_libs, 590*7594170eSAndroid Build Coastguard Worker "did not get expected provides_native_libs", 591*7594170eSAndroid Build Coastguard Worker ) 592*7594170eSAndroid Build Coastguard Worker asserts.equals( 593*7594170eSAndroid Build Coastguard Worker env, 594*7594170eSAndroid Build Coastguard Worker ctx.attr.make_modules_to_install, 595*7594170eSAndroid Build Coastguard Worker target_under_test[ApexMkInfo].make_modules_to_install, 596*7594170eSAndroid Build Coastguard Worker "did not get expected make_modules_to_install", 597*7594170eSAndroid Build Coastguard Worker ) 598*7594170eSAndroid Build Coastguard Worker 599*7594170eSAndroid Build Coastguard Worker # Compare the argv of the jsonmodify action that updates the apex 600*7594170eSAndroid Build Coastguard Worker # manifest with information about provided and required libs. 601*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 602*7594170eSAndroid Build Coastguard Worker action = [a for a in actions if a.mnemonic == "ApexManifestModify"][0] 603*7594170eSAndroid Build Coastguard Worker requires_argv_index = action.argv.index("requireNativeLibs") + 1 604*7594170eSAndroid Build Coastguard Worker provides_argv_index = action.argv.index("provideNativeLibs") + 1 605*7594170eSAndroid Build Coastguard Worker 606*7594170eSAndroid Build Coastguard Worker for idx, requires in enumerate(ctx.attr.requires_native_libs): 607*7594170eSAndroid Build Coastguard Worker asserts.equals( 608*7594170eSAndroid Build Coastguard Worker env, 609*7594170eSAndroid Build Coastguard Worker requires.label.name + ".so", # expected 610*7594170eSAndroid Build Coastguard Worker action.argv[requires_argv_index + idx], # actual 611*7594170eSAndroid Build Coastguard Worker ) 612*7594170eSAndroid Build Coastguard Worker 613*7594170eSAndroid Build Coastguard Worker for idx, provides in enumerate(ctx.attr.provides_native_libs): 614*7594170eSAndroid Build Coastguard Worker asserts.equals( 615*7594170eSAndroid Build Coastguard Worker env, 616*7594170eSAndroid Build Coastguard Worker provides.label.name + ".so", 617*7594170eSAndroid Build Coastguard Worker action.argv[provides_argv_index + idx], 618*7594170eSAndroid Build Coastguard Worker ) 619*7594170eSAndroid Build Coastguard Worker 620*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 621*7594170eSAndroid Build Coastguard Worker 622*7594170eSAndroid Build Coastguard Workerapex_native_libs_requires_provides_test = analysistest.make( 623*7594170eSAndroid Build Coastguard Worker _apex_native_libs_requires_provides_test, 624*7594170eSAndroid Build Coastguard Worker attrs = { 625*7594170eSAndroid Build Coastguard Worker "make_modules_to_install": attr.string_list(doc = "make module names that should be installed to system"), 626*7594170eSAndroid Build Coastguard Worker "provides_argv": attr.string_list(), 627*7594170eSAndroid Build Coastguard Worker "provides_native_libs": attr.label_list(doc = "bazel target names of libs provided for dynamic linking"), 628*7594170eSAndroid Build Coastguard Worker "requires_argv": attr.string_list(), 629*7594170eSAndroid Build Coastguard Worker "requires_native_libs": attr.label_list(doc = "bazel target names of libs required for dynamic linking"), 630*7594170eSAndroid Build Coastguard Worker }, 631*7594170eSAndroid Build Coastguard Worker) 632*7594170eSAndroid Build Coastguard Worker 633*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_nodep(): 634*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_nodep" 635*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 636*7594170eSAndroid Build Coastguard Worker 637*7594170eSAndroid Build Coastguard Worker cc_library_shared( 638*7594170eSAndroid Build Coastguard Worker name = name + "_lib_nodep", 639*7594170eSAndroid Build Coastguard Worker stl = "none", 640*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 641*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 642*7594170eSAndroid Build Coastguard Worker ) 643*7594170eSAndroid Build Coastguard Worker 644*7594170eSAndroid Build Coastguard Worker test_apex( 645*7594170eSAndroid Build Coastguard Worker name = name, 646*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_nodep"], 647*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_lib_nodep"], 648*7594170eSAndroid Build Coastguard Worker ) 649*7594170eSAndroid Build Coastguard Worker 650*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 651*7594170eSAndroid Build Coastguard Worker name = test_name, 652*7594170eSAndroid Build Coastguard Worker target_under_test = name, 653*7594170eSAndroid Build Coastguard Worker requires_native_libs = [], 654*7594170eSAndroid Build Coastguard Worker provides_native_libs = [], 655*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [], 656*7594170eSAndroid Build Coastguard Worker ) 657*7594170eSAndroid Build Coastguard Worker 658*7594170eSAndroid Build Coastguard Worker return test_name 659*7594170eSAndroid Build Coastguard Worker 660*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_cc_library_shared_bionic_deps(): 661*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_cc_library_shared_bionic_deps" 662*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 663*7594170eSAndroid Build Coastguard Worker 664*7594170eSAndroid Build Coastguard Worker cc_library_shared( 665*7594170eSAndroid Build Coastguard Worker name = name + "_lib", 666*7594170eSAndroid Build Coastguard Worker # implicit bionic system_dynamic_deps 667*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 668*7594170eSAndroid Build Coastguard Worker ) 669*7594170eSAndroid Build Coastguard Worker 670*7594170eSAndroid Build Coastguard Worker test_apex( 671*7594170eSAndroid Build Coastguard Worker name = name, 672*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib"], 673*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_lib"], 674*7594170eSAndroid Build Coastguard Worker ) 675*7594170eSAndroid Build Coastguard Worker 676*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 677*7594170eSAndroid Build Coastguard Worker name = test_name, 678*7594170eSAndroid Build Coastguard Worker target_under_test = name, 679*7594170eSAndroid Build Coastguard Worker requires_native_libs = [ 680*7594170eSAndroid Build Coastguard Worker "//bionic/libc", 681*7594170eSAndroid Build Coastguard Worker "//bionic/libdl", 682*7594170eSAndroid Build Coastguard Worker "//bionic/libm", 683*7594170eSAndroid Build Coastguard Worker ], 684*7594170eSAndroid Build Coastguard Worker provides_native_libs = [], 685*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [], 686*7594170eSAndroid Build Coastguard Worker ) 687*7594170eSAndroid Build Coastguard Worker 688*7594170eSAndroid Build Coastguard Worker return test_name 689*7594170eSAndroid Build Coastguard Worker 690*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_cc_binary_bionic_deps(): 691*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_cc_binary_bionic_deps" 692*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 693*7594170eSAndroid Build Coastguard Worker 694*7594170eSAndroid Build Coastguard Worker cc_binary( 695*7594170eSAndroid Build Coastguard Worker name = name + "_bin", 696*7594170eSAndroid Build Coastguard Worker # implicit bionic system_deps 697*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 698*7594170eSAndroid Build Coastguard Worker ) 699*7594170eSAndroid Build Coastguard Worker 700*7594170eSAndroid Build Coastguard Worker test_apex( 701*7594170eSAndroid Build Coastguard Worker name = name, 702*7594170eSAndroid Build Coastguard Worker binaries = [name + "_bin"], 703*7594170eSAndroid Build Coastguard Worker ) 704*7594170eSAndroid Build Coastguard Worker 705*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 706*7594170eSAndroid Build Coastguard Worker name = test_name, 707*7594170eSAndroid Build Coastguard Worker target_under_test = name, 708*7594170eSAndroid Build Coastguard Worker requires_native_libs = [ 709*7594170eSAndroid Build Coastguard Worker "//bionic/libc", 710*7594170eSAndroid Build Coastguard Worker "//bionic/libdl", 711*7594170eSAndroid Build Coastguard Worker "//bionic/libm", 712*7594170eSAndroid Build Coastguard Worker ], 713*7594170eSAndroid Build Coastguard Worker provides_native_libs = [], 714*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [], 715*7594170eSAndroid Build Coastguard Worker ) 716*7594170eSAndroid Build Coastguard Worker 717*7594170eSAndroid Build Coastguard Worker return test_name 718*7594170eSAndroid Build Coastguard Worker 719*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_requires(): 720*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_requires" 721*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 722*7594170eSAndroid Build Coastguard Worker 723*7594170eSAndroid Build Coastguard Worker cc_library_shared( 724*7594170eSAndroid Build Coastguard Worker name = name + "_lib_with_dep", 725*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 726*7594170eSAndroid Build Coastguard Worker stl = "none", 727*7594170eSAndroid Build Coastguard Worker implementation_dynamic_deps = select({ 728*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-in_apex": [name + "_libfoo_stub_libs_current"], 729*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-non_apex": [name + "_libfoo"], 730*7594170eSAndroid Build Coastguard Worker }), 731*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 732*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_lib_with_dep" + ".map.txt", 733*7594170eSAndroid Build Coastguard Worker ) 734*7594170eSAndroid Build Coastguard Worker 735*7594170eSAndroid Build Coastguard Worker native.genrule( 736*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_lib_with_dep_map_txt", 737*7594170eSAndroid Build Coastguard Worker outs = [name + "_lib_with_dep.map.txt"], 738*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 739*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 740*7594170eSAndroid Build Coastguard Worker ) 741*7594170eSAndroid Build Coastguard Worker 742*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 743*7594170eSAndroid Build Coastguard Worker name = name + "_lib_with_dep_stub_libs", 744*7594170eSAndroid Build Coastguard Worker soname = name + "_lib_with_dep.so", 745*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_lib_with_dep", 746*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_lib_with_dep.map.txt", 747*7594170eSAndroid Build Coastguard Worker versions = ["30"], 748*7594170eSAndroid Build Coastguard Worker ) 749*7594170eSAndroid Build Coastguard Worker 750*7594170eSAndroid Build Coastguard Worker cc_library_shared( 751*7594170eSAndroid Build Coastguard Worker name = name + "_libfoo", 752*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 753*7594170eSAndroid Build Coastguard Worker stl = "none", 754*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 755*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_libfoo" + ".map.txt", 756*7594170eSAndroid Build Coastguard Worker ) 757*7594170eSAndroid Build Coastguard Worker 758*7594170eSAndroid Build Coastguard Worker native.genrule( 759*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_libfoo_map_txt", 760*7594170eSAndroid Build Coastguard Worker outs = [name + "_libfoo.map.txt"], 761*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 762*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 763*7594170eSAndroid Build Coastguard Worker ) 764*7594170eSAndroid Build Coastguard Worker 765*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 766*7594170eSAndroid Build Coastguard Worker name = name + "_libfoo_stub_libs", 767*7594170eSAndroid Build Coastguard Worker soname = name + "_libfoo.so", 768*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_libfoo", 769*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_libfoo.map.txt", 770*7594170eSAndroid Build Coastguard Worker versions = ["30"], 771*7594170eSAndroid Build Coastguard Worker ) 772*7594170eSAndroid Build Coastguard Worker 773*7594170eSAndroid Build Coastguard Worker test_apex( 774*7594170eSAndroid Build Coastguard Worker name = name, 775*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_with_dep"], 776*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_lib_with_dep"], 777*7594170eSAndroid Build Coastguard Worker ) 778*7594170eSAndroid Build Coastguard Worker 779*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 780*7594170eSAndroid Build Coastguard Worker name = test_name, 781*7594170eSAndroid Build Coastguard Worker target_under_test = name, 782*7594170eSAndroid Build Coastguard Worker requires_native_libs = [name + "_libfoo"], 783*7594170eSAndroid Build Coastguard Worker provides_native_libs = [name + "_lib_with_dep"], 784*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [name + "_libfoo"], 785*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android"], 786*7594170eSAndroid Build Coastguard Worker ) 787*7594170eSAndroid Build Coastguard Worker 788*7594170eSAndroid Build Coastguard Worker return test_name 789*7594170eSAndroid Build Coastguard Worker 790*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_provides(): 791*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_provides" 792*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 793*7594170eSAndroid Build Coastguard Worker 794*7594170eSAndroid Build Coastguard Worker cc_library_shared( 795*7594170eSAndroid Build Coastguard Worker name = name + "_libfoo", 796*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 797*7594170eSAndroid Build Coastguard Worker stl = "none", 798*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 799*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_libfoo" + ".map.txt", 800*7594170eSAndroid Build Coastguard Worker ) 801*7594170eSAndroid Build Coastguard Worker 802*7594170eSAndroid Build Coastguard Worker native.genrule( 803*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_libfoo_map_txt", 804*7594170eSAndroid Build Coastguard Worker outs = [name + "_libfoo.map.txt"], 805*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 806*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 807*7594170eSAndroid Build Coastguard Worker ) 808*7594170eSAndroid Build Coastguard Worker 809*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 810*7594170eSAndroid Build Coastguard Worker name = name + "_libfoo_stub_libs", 811*7594170eSAndroid Build Coastguard Worker soname = name + "_libfoo.so", 812*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_libfoo", 813*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_libfoo.map.txt", 814*7594170eSAndroid Build Coastguard Worker versions = ["30"], 815*7594170eSAndroid Build Coastguard Worker ) 816*7594170eSAndroid Build Coastguard Worker 817*7594170eSAndroid Build Coastguard Worker test_apex( 818*7594170eSAndroid Build Coastguard Worker name = name, 819*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_libfoo"], 820*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_libfoo"], 821*7594170eSAndroid Build Coastguard Worker ) 822*7594170eSAndroid Build Coastguard Worker 823*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 824*7594170eSAndroid Build Coastguard Worker name = test_name, 825*7594170eSAndroid Build Coastguard Worker target_under_test = name, 826*7594170eSAndroid Build Coastguard Worker requires_native_libs = [], 827*7594170eSAndroid Build Coastguard Worker provides_native_libs = [name + "_libfoo"], 828*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [], 829*7594170eSAndroid Build Coastguard Worker ) 830*7594170eSAndroid Build Coastguard Worker 831*7594170eSAndroid Build Coastguard Worker return test_name 832*7594170eSAndroid Build Coastguard Worker 833*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_selfcontained(): 834*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_selfcontained" 835*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 836*7594170eSAndroid Build Coastguard Worker 837*7594170eSAndroid Build Coastguard Worker cc_library_shared( 838*7594170eSAndroid Build Coastguard Worker name = name + "_lib_with_dep", 839*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 840*7594170eSAndroid Build Coastguard Worker stl = "none", 841*7594170eSAndroid Build Coastguard Worker implementation_dynamic_deps = select({ 842*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-in_apex": [name + "_libfoo_stub_libs_current"], 843*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-non_apex": [name + "_libfoo"], 844*7594170eSAndroid Build Coastguard Worker }), 845*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 846*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_lib_with_dep" + ".map.txt", 847*7594170eSAndroid Build Coastguard Worker ) 848*7594170eSAndroid Build Coastguard Worker 849*7594170eSAndroid Build Coastguard Worker native.genrule( 850*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_lib-with_dep_map_txt", 851*7594170eSAndroid Build Coastguard Worker outs = [name + "_lib_with_dep.map.txt"], 852*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 853*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 854*7594170eSAndroid Build Coastguard Worker ) 855*7594170eSAndroid Build Coastguard Worker 856*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 857*7594170eSAndroid Build Coastguard Worker name = name + "_lib_with_dep_stub_libs", 858*7594170eSAndroid Build Coastguard Worker soname = name + "_lib_with_dep.so", 859*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_lib_with_dep", 860*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_lib_with_dep.map.txt", 861*7594170eSAndroid Build Coastguard Worker versions = ["30"], 862*7594170eSAndroid Build Coastguard Worker ) 863*7594170eSAndroid Build Coastguard Worker 864*7594170eSAndroid Build Coastguard Worker cc_library_shared( 865*7594170eSAndroid Build Coastguard Worker name = name + "_libfoo", 866*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 867*7594170eSAndroid Build Coastguard Worker stl = "none", 868*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 869*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_libfoo" + ".map.txt", 870*7594170eSAndroid Build Coastguard Worker ) 871*7594170eSAndroid Build Coastguard Worker 872*7594170eSAndroid Build Coastguard Worker native.genrule( 873*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_libfoo_map_txt", 874*7594170eSAndroid Build Coastguard Worker outs = [name + "_libfoo.map.txt"], 875*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 876*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 877*7594170eSAndroid Build Coastguard Worker ) 878*7594170eSAndroid Build Coastguard Worker 879*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 880*7594170eSAndroid Build Coastguard Worker name = name + "_libfoo_stub_libs", 881*7594170eSAndroid Build Coastguard Worker soname = name + "_libfoo.so", 882*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_libfoo", 883*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_libfoo.map.txt", 884*7594170eSAndroid Build Coastguard Worker versions = ["30"], 885*7594170eSAndroid Build Coastguard Worker ) 886*7594170eSAndroid Build Coastguard Worker 887*7594170eSAndroid Build Coastguard Worker test_apex( 888*7594170eSAndroid Build Coastguard Worker name = name, 889*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [ 890*7594170eSAndroid Build Coastguard Worker name + "_lib_with_dep", 891*7594170eSAndroid Build Coastguard Worker name + "_libfoo", 892*7594170eSAndroid Build Coastguard Worker ], 893*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [ 894*7594170eSAndroid Build Coastguard Worker name + "_lib_with_dep", 895*7594170eSAndroid Build Coastguard Worker name + "_libfoo", 896*7594170eSAndroid Build Coastguard Worker ], 897*7594170eSAndroid Build Coastguard Worker ) 898*7594170eSAndroid Build Coastguard Worker 899*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 900*7594170eSAndroid Build Coastguard Worker name = test_name, 901*7594170eSAndroid Build Coastguard Worker target_under_test = name, 902*7594170eSAndroid Build Coastguard Worker requires_native_libs = [], 903*7594170eSAndroid Build Coastguard Worker provides_native_libs = [ 904*7594170eSAndroid Build Coastguard Worker name + "_lib_with_dep", 905*7594170eSAndroid Build Coastguard Worker name + "_libfoo", 906*7594170eSAndroid Build Coastguard Worker ], 907*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [], 908*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android"], 909*7594170eSAndroid Build Coastguard Worker ) 910*7594170eSAndroid Build Coastguard Worker 911*7594170eSAndroid Build Coastguard Worker return test_name 912*7594170eSAndroid Build Coastguard Worker 913*7594170eSAndroid Build Coastguard Workerdef _test_apex_manifest_dependencies_cc_binary(): 914*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_dependencies_cc_binary" 915*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 916*7594170eSAndroid Build Coastguard Worker 917*7594170eSAndroid Build Coastguard Worker cc_binary( 918*7594170eSAndroid Build Coastguard Worker name = name + "_bin", 919*7594170eSAndroid Build Coastguard Worker stl = "none", 920*7594170eSAndroid Build Coastguard Worker system_deps = [], 921*7594170eSAndroid Build Coastguard Worker dynamic_deps = [ 922*7594170eSAndroid Build Coastguard Worker name + "_lib_with_dep", 923*7594170eSAndroid Build Coastguard Worker ] + select({ 924*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-in_apex": [name + "_librequires2_stub_libs_current"], 925*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-non_apex": [name + "_librequires2"], 926*7594170eSAndroid Build Coastguard Worker }), 927*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 928*7594170eSAndroid Build Coastguard Worker ) 929*7594170eSAndroid Build Coastguard Worker 930*7594170eSAndroid Build Coastguard Worker cc_library_shared( 931*7594170eSAndroid Build Coastguard Worker name = name + "_lib_with_dep", 932*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 933*7594170eSAndroid Build Coastguard Worker stl = "none", 934*7594170eSAndroid Build Coastguard Worker implementation_dynamic_deps = select({ 935*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-in_apex": [name + "_librequires_stub_libs_current"], 936*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-non_apex": [name + "_librequires"], 937*7594170eSAndroid Build Coastguard Worker }), 938*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 939*7594170eSAndroid Build Coastguard Worker ) 940*7594170eSAndroid Build Coastguard Worker 941*7594170eSAndroid Build Coastguard Worker cc_library_shared( 942*7594170eSAndroid Build Coastguard Worker name = name + "_librequires", 943*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 944*7594170eSAndroid Build Coastguard Worker stl = "none", 945*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 946*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_librequires" + ".map.txt", 947*7594170eSAndroid Build Coastguard Worker ) 948*7594170eSAndroid Build Coastguard Worker 949*7594170eSAndroid Build Coastguard Worker native.genrule( 950*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_librequires_map_txt", 951*7594170eSAndroid Build Coastguard Worker outs = [name + "_librequires.map.txt"], 952*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 953*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 954*7594170eSAndroid Build Coastguard Worker ) 955*7594170eSAndroid Build Coastguard Worker 956*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 957*7594170eSAndroid Build Coastguard Worker name = name + "_librequires_stub_libs", 958*7594170eSAndroid Build Coastguard Worker soname = name + "_librequires.so", 959*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_librequires", 960*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_librequires.map.txt", 961*7594170eSAndroid Build Coastguard Worker versions = ["30"], 962*7594170eSAndroid Build Coastguard Worker ) 963*7594170eSAndroid Build Coastguard Worker 964*7594170eSAndroid Build Coastguard Worker cc_library_shared( 965*7594170eSAndroid Build Coastguard Worker name = name + "_librequires2", 966*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 967*7594170eSAndroid Build Coastguard Worker stl = "none", 968*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 969*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + "_librequires2.map.txt", 970*7594170eSAndroid Build Coastguard Worker ) 971*7594170eSAndroid Build Coastguard Worker 972*7594170eSAndroid Build Coastguard Worker native.genrule( 973*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_librequires2_map_txt", 974*7594170eSAndroid Build Coastguard Worker outs = [name + "_librequires2.map.txt"], 975*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 976*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 977*7594170eSAndroid Build Coastguard Worker ) 978*7594170eSAndroid Build Coastguard Worker 979*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 980*7594170eSAndroid Build Coastguard Worker name = name + "_librequires2_stub_libs", 981*7594170eSAndroid Build Coastguard Worker soname = name + "_librequires2.so", 982*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name + "_librequires2", 983*7594170eSAndroid Build Coastguard Worker symbol_file = name + "_librequires2.map.txt", 984*7594170eSAndroid Build Coastguard Worker versions = ["30"], 985*7594170eSAndroid Build Coastguard Worker ) 986*7594170eSAndroid Build Coastguard Worker 987*7594170eSAndroid Build Coastguard Worker test_apex( 988*7594170eSAndroid Build Coastguard Worker name = name, 989*7594170eSAndroid Build Coastguard Worker binaries = [name + "_bin"], 990*7594170eSAndroid Build Coastguard Worker ) 991*7594170eSAndroid Build Coastguard Worker 992*7594170eSAndroid Build Coastguard Worker apex_native_libs_requires_provides_test( 993*7594170eSAndroid Build Coastguard Worker name = test_name, 994*7594170eSAndroid Build Coastguard Worker target_under_test = name, 995*7594170eSAndroid Build Coastguard Worker requires_native_libs = [ 996*7594170eSAndroid Build Coastguard Worker name + "_librequires", 997*7594170eSAndroid Build Coastguard Worker name + "_librequires2", 998*7594170eSAndroid Build Coastguard Worker ], 999*7594170eSAndroid Build Coastguard Worker make_modules_to_install = [ 1000*7594170eSAndroid Build Coastguard Worker name + "_librequires", 1001*7594170eSAndroid Build Coastguard Worker name + "_librequires2", 1002*7594170eSAndroid Build Coastguard Worker ], 1003*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android"], 1004*7594170eSAndroid Build Coastguard Worker ) 1005*7594170eSAndroid Build Coastguard Worker 1006*7594170eSAndroid Build Coastguard Worker return test_name 1007*7594170eSAndroid Build Coastguard Worker 1008*7594170eSAndroid Build Coastguard Workerdef _action_args_test(ctx): 1009*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1010*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 1011*7594170eSAndroid Build Coastguard Worker 1012*7594170eSAndroid Build Coastguard Worker action = [a for a in actions if a.mnemonic == ctx.attr.action_mnemonic][0] 1013*7594170eSAndroid Build Coastguard Worker argv = action.argv[:-1] + action.argv[-1].split(" ") 1014*7594170eSAndroid Build Coastguard Worker flag_idx = argv.index(ctx.attr.expected_args[0]) 1015*7594170eSAndroid Build Coastguard Worker 1016*7594170eSAndroid Build Coastguard Worker for i, expected_arg in enumerate(ctx.attr.expected_args): 1017*7594170eSAndroid Build Coastguard Worker asserts.equals( 1018*7594170eSAndroid Build Coastguard Worker env, 1019*7594170eSAndroid Build Coastguard Worker expected_arg, 1020*7594170eSAndroid Build Coastguard Worker argv[flag_idx + i], 1021*7594170eSAndroid Build Coastguard Worker ) 1022*7594170eSAndroid Build Coastguard Worker 1023*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1024*7594170eSAndroid Build Coastguard Worker 1025*7594170eSAndroid Build Coastguard Worker_action_args_test_attrs = { 1026*7594170eSAndroid Build Coastguard Worker "action_mnemonic": attr.string(mandatory = True), 1027*7594170eSAndroid Build Coastguard Worker "expected_args": attr.string_list(mandatory = True), 1028*7594170eSAndroid Build Coastguard Worker} 1029*7594170eSAndroid Build Coastguard Worker 1030*7594170eSAndroid Build Coastguard Workeraction_args_test = analysistest.make( 1031*7594170eSAndroid Build Coastguard Worker _action_args_test, 1032*7594170eSAndroid Build Coastguard Worker attrs = _action_args_test_attrs, 1033*7594170eSAndroid Build Coastguard Worker) 1034*7594170eSAndroid Build Coastguard Worker 1035*7594170eSAndroid Build Coastguard Workerdef _test_logging_parent_flag(): 1036*7594170eSAndroid Build Coastguard Worker name = "logging_parent" 1037*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1038*7594170eSAndroid Build Coastguard Worker 1039*7594170eSAndroid Build Coastguard Worker test_apex( 1040*7594170eSAndroid Build Coastguard Worker name = name, 1041*7594170eSAndroid Build Coastguard Worker logging_parent = "logging.parent", 1042*7594170eSAndroid Build Coastguard Worker ) 1043*7594170eSAndroid Build Coastguard Worker 1044*7594170eSAndroid Build Coastguard Worker action_args_test( 1045*7594170eSAndroid Build Coastguard Worker name = test_name, 1046*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1047*7594170eSAndroid Build Coastguard Worker action_mnemonic = "Apexer", 1048*7594170eSAndroid Build Coastguard Worker expected_args = [ 1049*7594170eSAndroid Build Coastguard Worker "--logging_parent", 1050*7594170eSAndroid Build Coastguard Worker "logging.parent", 1051*7594170eSAndroid Build Coastguard Worker ], 1052*7594170eSAndroid Build Coastguard Worker ) 1053*7594170eSAndroid Build Coastguard Worker 1054*7594170eSAndroid Build Coastguard Worker return test_name 1055*7594170eSAndroid Build Coastguard Worker 1056*7594170eSAndroid Build Coastguard Workerdef _test_default_apex_manifest_version(): 1057*7594170eSAndroid Build Coastguard Worker name = "default_apex_manifest_version" 1058*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1059*7594170eSAndroid Build Coastguard Worker 1060*7594170eSAndroid Build Coastguard Worker test_apex( 1061*7594170eSAndroid Build Coastguard Worker name = name, 1062*7594170eSAndroid Build Coastguard Worker ) 1063*7594170eSAndroid Build Coastguard Worker 1064*7594170eSAndroid Build Coastguard Worker action_args_test( 1065*7594170eSAndroid Build Coastguard Worker name = test_name, 1066*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1067*7594170eSAndroid Build Coastguard Worker action_mnemonic = "ApexManifestModify", 1068*7594170eSAndroid Build Coastguard Worker expected_args = [ 1069*7594170eSAndroid Build Coastguard Worker "-se", 1070*7594170eSAndroid Build Coastguard Worker "version", 1071*7594170eSAndroid Build Coastguard Worker "0", 1072*7594170eSAndroid Build Coastguard Worker str(default_manifest_version), 1073*7594170eSAndroid Build Coastguard Worker ], 1074*7594170eSAndroid Build Coastguard Worker ) 1075*7594170eSAndroid Build Coastguard Worker 1076*7594170eSAndroid Build Coastguard Worker return test_name 1077*7594170eSAndroid Build Coastguard Worker 1078*7594170eSAndroid Build Coastguard Workeraction_args_with_overrides_test = analysistest.make( 1079*7594170eSAndroid Build Coastguard Worker _action_args_test, 1080*7594170eSAndroid Build Coastguard Worker attrs = _action_args_test_attrs, 1081*7594170eSAndroid Build Coastguard Worker config_settings = { 1082*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_with_overrides_and_app_cert", 1083*7594170eSAndroid Build Coastguard Worker }, 1084*7594170eSAndroid Build Coastguard Worker) 1085*7594170eSAndroid Build Coastguard Worker 1086*7594170eSAndroid Build Coastguard Workerdef _test_package_name(): 1087*7594170eSAndroid Build Coastguard Worker name = "package_name" 1088*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1089*7594170eSAndroid Build Coastguard Worker 1090*7594170eSAndroid Build Coastguard Worker test_apex( 1091*7594170eSAndroid Build Coastguard Worker name = name, 1092*7594170eSAndroid Build Coastguard Worker package_name = "my.package.name", 1093*7594170eSAndroid Build Coastguard Worker ) 1094*7594170eSAndroid Build Coastguard Worker 1095*7594170eSAndroid Build Coastguard Worker action_args_test( 1096*7594170eSAndroid Build Coastguard Worker name = test_name, 1097*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1098*7594170eSAndroid Build Coastguard Worker action_mnemonic = "Apexer", 1099*7594170eSAndroid Build Coastguard Worker expected_args = [ 1100*7594170eSAndroid Build Coastguard Worker "--override_apk_package_name", 1101*7594170eSAndroid Build Coastguard Worker "my.package.name", 1102*7594170eSAndroid Build Coastguard Worker ], 1103*7594170eSAndroid Build Coastguard Worker ) 1104*7594170eSAndroid Build Coastguard Worker 1105*7594170eSAndroid Build Coastguard Worker return test_name 1106*7594170eSAndroid Build Coastguard Worker 1107*7594170eSAndroid Build Coastguard Workerdef _test_package_name_override_from_config(): 1108*7594170eSAndroid Build Coastguard Worker name = "package_name_override_from_config" 1109*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1110*7594170eSAndroid Build Coastguard Worker 1111*7594170eSAndroid Build Coastguard Worker test_apex(name = name) 1112*7594170eSAndroid Build Coastguard Worker 1113*7594170eSAndroid Build Coastguard Worker action_args_with_overrides_test( 1114*7594170eSAndroid Build Coastguard Worker name = test_name, 1115*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1116*7594170eSAndroid Build Coastguard Worker action_mnemonic = "Apexer", 1117*7594170eSAndroid Build Coastguard Worker expected_args = [ 1118*7594170eSAndroid Build Coastguard Worker "--override_apk_package_name", 1119*7594170eSAndroid Build Coastguard Worker "another.package", 1120*7594170eSAndroid Build Coastguard Worker ], 1121*7594170eSAndroid Build Coastguard Worker ) 1122*7594170eSAndroid Build Coastguard Worker 1123*7594170eSAndroid Build Coastguard Worker return test_name 1124*7594170eSAndroid Build Coastguard Worker 1125*7594170eSAndroid Build Coastguard Workeraction_args_with_override_apex_manifest_default_version_test = analysistest.make( 1126*7594170eSAndroid Build Coastguard Worker _action_args_test, 1127*7594170eSAndroid Build Coastguard Worker attrs = _action_args_test_attrs, 1128*7594170eSAndroid Build Coastguard Worker # Wouldn't it be nice if it's possible to set the config_setting from the test callsite.. 1129*7594170eSAndroid Build Coastguard Worker config_settings = { 1130*7594170eSAndroid Build Coastguard Worker "@//build/bazel/rules/apex:override_apex_manifest_default_version": "1234567890", 1131*7594170eSAndroid Build Coastguard Worker }, 1132*7594170eSAndroid Build Coastguard Worker) 1133*7594170eSAndroid Build Coastguard Worker 1134*7594170eSAndroid Build Coastguard Workerdef _test_override_apex_manifest_version(): 1135*7594170eSAndroid Build Coastguard Worker name = "override_apex_manifest_version" 1136*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1137*7594170eSAndroid Build Coastguard Worker 1138*7594170eSAndroid Build Coastguard Worker test_apex( 1139*7594170eSAndroid Build Coastguard Worker name = name, 1140*7594170eSAndroid Build Coastguard Worker ) 1141*7594170eSAndroid Build Coastguard Worker 1142*7594170eSAndroid Build Coastguard Worker action_args_with_override_apex_manifest_default_version_test( 1143*7594170eSAndroid Build Coastguard Worker name = test_name, 1144*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1145*7594170eSAndroid Build Coastguard Worker action_mnemonic = "ApexManifestModify", 1146*7594170eSAndroid Build Coastguard Worker expected_args = [ 1147*7594170eSAndroid Build Coastguard Worker "-se", 1148*7594170eSAndroid Build Coastguard Worker "version", 1149*7594170eSAndroid Build Coastguard Worker "0", 1150*7594170eSAndroid Build Coastguard Worker "1234567890", 1151*7594170eSAndroid Build Coastguard Worker ], 1152*7594170eSAndroid Build Coastguard Worker ) 1153*7594170eSAndroid Build Coastguard Worker 1154*7594170eSAndroid Build Coastguard Worker return test_name 1155*7594170eSAndroid Build Coastguard Worker 1156*7594170eSAndroid Build Coastguard Workerdef _file_contexts_args_test(ctx): 1157*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1158*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 1159*7594170eSAndroid Build Coastguard Worker 1160*7594170eSAndroid Build Coastguard Worker file_contexts_action = [a for a in actions if a.mnemonic == "GenerateApexFileContexts"][0] 1161*7594170eSAndroid Build Coastguard Worker 1162*7594170eSAndroid Build Coastguard Worker # GenerateApexFileContexts is a run_shell action. 1163*7594170eSAndroid Build Coastguard Worker # ["/bin/bash", "c", "<args>"] 1164*7594170eSAndroid Build Coastguard Worker cmd = file_contexts_action.argv[2] 1165*7594170eSAndroid Build Coastguard Worker 1166*7594170eSAndroid Build Coastguard Worker for expected_arg in ctx.attr.expected_args: 1167*7594170eSAndroid Build Coastguard Worker asserts.true( 1168*7594170eSAndroid Build Coastguard Worker env, 1169*7594170eSAndroid Build Coastguard Worker expected_arg in cmd, 1170*7594170eSAndroid Build Coastguard Worker "failed to find '%s' in '%s'" % (expected_arg, cmd), 1171*7594170eSAndroid Build Coastguard Worker ) 1172*7594170eSAndroid Build Coastguard Worker 1173*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1174*7594170eSAndroid Build Coastguard Worker 1175*7594170eSAndroid Build Coastguard Workerfile_contexts_args_test = analysistest.make( 1176*7594170eSAndroid Build Coastguard Worker _file_contexts_args_test, 1177*7594170eSAndroid Build Coastguard Worker attrs = { 1178*7594170eSAndroid Build Coastguard Worker "expected_args": attr.string_list(mandatory = True), 1179*7594170eSAndroid Build Coastguard Worker }, 1180*7594170eSAndroid Build Coastguard Worker) 1181*7594170eSAndroid Build Coastguard Worker 1182*7594170eSAndroid Build Coastguard Workerdef _test_generate_file_contexts(): 1183*7594170eSAndroid Build Coastguard Worker name = "apex_manifest_pb_file_contexts" 1184*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1185*7594170eSAndroid Build Coastguard Worker 1186*7594170eSAndroid Build Coastguard Worker test_apex( 1187*7594170eSAndroid Build Coastguard Worker name = name, 1188*7594170eSAndroid Build Coastguard Worker ) 1189*7594170eSAndroid Build Coastguard Worker 1190*7594170eSAndroid Build Coastguard Worker file_contexts_args_test( 1191*7594170eSAndroid Build Coastguard Worker name = test_name, 1192*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1193*7594170eSAndroid Build Coastguard Worker expected_args = [ 1194*7594170eSAndroid Build Coastguard Worker "/apex_manifest\\\\.pb u:object_r:system_file:s0", 1195*7594170eSAndroid Build Coastguard Worker "/ u:object_r:system_file:s0", 1196*7594170eSAndroid Build Coastguard Worker ], 1197*7594170eSAndroid Build Coastguard Worker ) 1198*7594170eSAndroid Build Coastguard Worker 1199*7594170eSAndroid Build Coastguard Worker return test_name 1200*7594170eSAndroid Build Coastguard Worker 1201*7594170eSAndroid Build Coastguard Workerdef _min_sdk_version_failure_test_impl(ctx): 1202*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1203*7594170eSAndroid Build Coastguard Worker 1204*7594170eSAndroid Build Coastguard Worker asserts.expect_failure( 1205*7594170eSAndroid Build Coastguard Worker env, 1206*7594170eSAndroid Build Coastguard Worker "min_sdk_version %s cannot be lower than the dep's min_sdk_version %s" % 1207*7594170eSAndroid Build Coastguard Worker (ctx.attr.apex_min, ctx.attr.dep_min), 1208*7594170eSAndroid Build Coastguard Worker ) 1209*7594170eSAndroid Build Coastguard Worker 1210*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1211*7594170eSAndroid Build Coastguard Worker 1212*7594170eSAndroid Build Coastguard Workermin_sdk_version_failure_test = analysistest.make( 1213*7594170eSAndroid Build Coastguard Worker _min_sdk_version_failure_test_impl, 1214*7594170eSAndroid Build Coastguard Worker expect_failure = True, 1215*7594170eSAndroid Build Coastguard Worker attrs = { 1216*7594170eSAndroid Build Coastguard Worker "apex_min": attr.string(), 1217*7594170eSAndroid Build Coastguard Worker "dep_min": attr.string(), 1218*7594170eSAndroid Build Coastguard Worker }, 1219*7594170eSAndroid Build Coastguard Worker) 1220*7594170eSAndroid Build Coastguard Worker 1221*7594170eSAndroid Build Coastguard Workerdef _test_min_sdk_version_failure(): 1222*7594170eSAndroid Build Coastguard Worker name = "min_sdk_version_failure" 1223*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1224*7594170eSAndroid Build Coastguard Worker 1225*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1226*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1227*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1228*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1229*7594170eSAndroid Build Coastguard Worker min_sdk_version = "32", 1230*7594170eSAndroid Build Coastguard Worker ) 1231*7594170eSAndroid Build Coastguard Worker 1232*7594170eSAndroid Build Coastguard Worker test_apex( 1233*7594170eSAndroid Build Coastguard Worker name = name, 1234*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 1235*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 1236*7594170eSAndroid Build Coastguard Worker ) 1237*7594170eSAndroid Build Coastguard Worker 1238*7594170eSAndroid Build Coastguard Worker min_sdk_version_failure_test( 1239*7594170eSAndroid Build Coastguard Worker name = test_name, 1240*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1241*7594170eSAndroid Build Coastguard Worker apex_min = "30", 1242*7594170eSAndroid Build Coastguard Worker dep_min = "32", 1243*7594170eSAndroid Build Coastguard Worker ) 1244*7594170eSAndroid Build Coastguard Worker 1245*7594170eSAndroid Build Coastguard Worker return test_name 1246*7594170eSAndroid Build Coastguard Worker 1247*7594170eSAndroid Build Coastguard Workerdef _test_min_sdk_version_failure_transitive(): 1248*7594170eSAndroid Build Coastguard Worker name = "min_sdk_version_failure_transitive" 1249*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1250*7594170eSAndroid Build Coastguard Worker 1251*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1252*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1253*7594170eSAndroid Build Coastguard Worker dynamic_deps = [name + "_lib2_cc"], 1254*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1255*7594170eSAndroid Build Coastguard Worker ) 1256*7594170eSAndroid Build Coastguard Worker 1257*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1258*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 1259*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 1260*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1261*7594170eSAndroid Build Coastguard Worker min_sdk_version = "32", 1262*7594170eSAndroid Build Coastguard Worker ) 1263*7594170eSAndroid Build Coastguard Worker 1264*7594170eSAndroid Build Coastguard Worker test_apex( 1265*7594170eSAndroid Build Coastguard Worker name = name, 1266*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 1267*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 1268*7594170eSAndroid Build Coastguard Worker ) 1269*7594170eSAndroid Build Coastguard Worker 1270*7594170eSAndroid Build Coastguard Worker min_sdk_version_failure_test( 1271*7594170eSAndroid Build Coastguard Worker name = test_name, 1272*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1273*7594170eSAndroid Build Coastguard Worker apex_min = "30", 1274*7594170eSAndroid Build Coastguard Worker dep_min = "32", 1275*7594170eSAndroid Build Coastguard Worker ) 1276*7594170eSAndroid Build Coastguard Worker 1277*7594170eSAndroid Build Coastguard Worker return test_name 1278*7594170eSAndroid Build Coastguard Worker 1279*7594170eSAndroid Build Coastguard Workerdef _apex_certificate_test(ctx): 1280*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1281*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 1282*7594170eSAndroid Build Coastguard Worker container_key_info = target_under_test[ApexInfo].container_key_info 1283*7594170eSAndroid Build Coastguard Worker 1284*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected_pem_path, container_key_info.pem.path) 1285*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected_pk8_path, container_key_info.pk8.path) 1286*7594170eSAndroid Build Coastguard Worker 1287*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1288*7594170eSAndroid Build Coastguard Worker 1289*7594170eSAndroid Build Coastguard Workerapex_certificate_test = analysistest.make( 1290*7594170eSAndroid Build Coastguard Worker _apex_certificate_test, 1291*7594170eSAndroid Build Coastguard Worker attrs = { 1292*7594170eSAndroid Build Coastguard Worker "expected_pem_path": attr.string(), 1293*7594170eSAndroid Build Coastguard Worker "expected_pk8_path": attr.string(), 1294*7594170eSAndroid Build Coastguard Worker }, 1295*7594170eSAndroid Build Coastguard Worker) 1296*7594170eSAndroid Build Coastguard Worker 1297*7594170eSAndroid Build Coastguard Workerapex_certificate_with_overrides_test = analysistest.make( 1298*7594170eSAndroid Build Coastguard Worker _apex_certificate_test, 1299*7594170eSAndroid Build Coastguard Worker attrs = { 1300*7594170eSAndroid Build Coastguard Worker "expected_pem_path": attr.string(), 1301*7594170eSAndroid Build Coastguard Worker "expected_pk8_path": attr.string(), 1302*7594170eSAndroid Build Coastguard Worker }, 1303*7594170eSAndroid Build Coastguard Worker config_settings = { 1304*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_with_overrides_and_app_cert", 1305*7594170eSAndroid Build Coastguard Worker }, 1306*7594170eSAndroid Build Coastguard Worker) 1307*7594170eSAndroid Build Coastguard Worker 1308*7594170eSAndroid Build Coastguard Workerdef _test_apex_certificate_none(): 1309*7594170eSAndroid Build Coastguard Worker name = "apex_certificate_none" 1310*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1311*7594170eSAndroid Build Coastguard Worker 1312*7594170eSAndroid Build Coastguard Worker test_apex( 1313*7594170eSAndroid Build Coastguard Worker name = name, 1314*7594170eSAndroid Build Coastguard Worker certificate = None, 1315*7594170eSAndroid Build Coastguard Worker ) 1316*7594170eSAndroid Build Coastguard Worker 1317*7594170eSAndroid Build Coastguard Worker apex_certificate_test( 1318*7594170eSAndroid Build Coastguard Worker name = test_name, 1319*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1320*7594170eSAndroid Build Coastguard Worker expected_pem_path = "build/make/target/product/security/testkey.x509.pem", 1321*7594170eSAndroid Build Coastguard Worker expected_pk8_path = "build/make/target/product/security/testkey.pk8", 1322*7594170eSAndroid Build Coastguard Worker ) 1323*7594170eSAndroid Build Coastguard Worker 1324*7594170eSAndroid Build Coastguard Worker return test_name 1325*7594170eSAndroid Build Coastguard Worker 1326*7594170eSAndroid Build Coastguard Workerdef _test_apex_certificate_name(): 1327*7594170eSAndroid Build Coastguard Worker name = "apex_certificate_name" 1328*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1329*7594170eSAndroid Build Coastguard Worker 1330*7594170eSAndroid Build Coastguard Worker test_apex( 1331*7594170eSAndroid Build Coastguard Worker name = name, 1332*7594170eSAndroid Build Coastguard Worker certificate = None, 1333*7594170eSAndroid Build Coastguard Worker certificate_name = "shared", # use something other than testkey 1334*7594170eSAndroid Build Coastguard Worker ) 1335*7594170eSAndroid Build Coastguard Worker 1336*7594170eSAndroid Build Coastguard Worker apex_certificate_test( 1337*7594170eSAndroid Build Coastguard Worker name = test_name, 1338*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1339*7594170eSAndroid Build Coastguard Worker expected_pem_path = "build/make/target/product/security/shared.x509.pem", 1340*7594170eSAndroid Build Coastguard Worker expected_pk8_path = "build/make/target/product/security/shared.pk8", 1341*7594170eSAndroid Build Coastguard Worker ) 1342*7594170eSAndroid Build Coastguard Worker 1343*7594170eSAndroid Build Coastguard Worker return test_name 1344*7594170eSAndroid Build Coastguard Worker 1345*7594170eSAndroid Build Coastguard Workerdef _test_apex_certificate_label(): 1346*7594170eSAndroid Build Coastguard Worker name = "apex_certificate_label" 1347*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1348*7594170eSAndroid Build Coastguard Worker 1349*7594170eSAndroid Build Coastguard Worker android_app_certificate( 1350*7594170eSAndroid Build Coastguard Worker name = name + "_cert", 1351*7594170eSAndroid Build Coastguard Worker certificate = name, 1352*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1353*7594170eSAndroid Build Coastguard Worker ) 1354*7594170eSAndroid Build Coastguard Worker 1355*7594170eSAndroid Build Coastguard Worker test_apex( 1356*7594170eSAndroid Build Coastguard Worker name = name, 1357*7594170eSAndroid Build Coastguard Worker certificate = name + "_cert", 1358*7594170eSAndroid Build Coastguard Worker ) 1359*7594170eSAndroid Build Coastguard Worker 1360*7594170eSAndroid Build Coastguard Worker apex_certificate_test( 1361*7594170eSAndroid Build Coastguard Worker name = test_name, 1362*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1363*7594170eSAndroid Build Coastguard Worker expected_pem_path = "build/bazel/rules/apex/apex_certificate_label.x509.pem", 1364*7594170eSAndroid Build Coastguard Worker expected_pk8_path = "build/bazel/rules/apex/apex_certificate_label.pk8", 1365*7594170eSAndroid Build Coastguard Worker ) 1366*7594170eSAndroid Build Coastguard Worker 1367*7594170eSAndroid Build Coastguard Worker return test_name 1368*7594170eSAndroid Build Coastguard Worker 1369*7594170eSAndroid Build Coastguard Workerdef _test_apex_certificate_label_with_overrides(): 1370*7594170eSAndroid Build Coastguard Worker name = "apex_certificate_label_with_overrides" 1371*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1372*7594170eSAndroid Build Coastguard Worker 1373*7594170eSAndroid Build Coastguard Worker android_app_certificate( 1374*7594170eSAndroid Build Coastguard Worker name = name + "_cert", 1375*7594170eSAndroid Build Coastguard Worker certificate = name, 1376*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1377*7594170eSAndroid Build Coastguard Worker ) 1378*7594170eSAndroid Build Coastguard Worker 1379*7594170eSAndroid Build Coastguard Worker android_app_certificate( 1380*7594170eSAndroid Build Coastguard Worker name = name + "_another_cert", 1381*7594170eSAndroid Build Coastguard Worker certificate = name + "_another_cert", 1382*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1383*7594170eSAndroid Build Coastguard Worker ) 1384*7594170eSAndroid Build Coastguard Worker 1385*7594170eSAndroid Build Coastguard Worker test_apex( 1386*7594170eSAndroid Build Coastguard Worker name = name, 1387*7594170eSAndroid Build Coastguard Worker certificate = name + "_cert", 1388*7594170eSAndroid Build Coastguard Worker ) 1389*7594170eSAndroid Build Coastguard Worker 1390*7594170eSAndroid Build Coastguard Worker apex_certificate_with_overrides_test( 1391*7594170eSAndroid Build Coastguard Worker name = test_name, 1392*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1393*7594170eSAndroid Build Coastguard Worker expected_pem_path = "build/bazel/rules/apex/apex_certificate_label_with_overrides_another_cert.x509.pem", 1394*7594170eSAndroid Build Coastguard Worker expected_pk8_path = "build/bazel/rules/apex/apex_certificate_label_with_overrides_another_cert.pk8", 1395*7594170eSAndroid Build Coastguard Worker ) 1396*7594170eSAndroid Build Coastguard Worker 1397*7594170eSAndroid Build Coastguard Worker return test_name 1398*7594170eSAndroid Build Coastguard Worker 1399*7594170eSAndroid Build Coastguard Workerdef _min_sdk_version_apex_inherit_test_impl(ctx): 1400*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1401*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 1402*7594170eSAndroid Build Coastguard Worker argv = target_under_test[ActionArgsInfo].argv 1403*7594170eSAndroid Build Coastguard Worker 1404*7594170eSAndroid Build Coastguard Worker found = False 1405*7594170eSAndroid Build Coastguard Worker for arg in argv: 1406*7594170eSAndroid Build Coastguard Worker if arg.startswith("--target="): 1407*7594170eSAndroid Build Coastguard Worker found = True 1408*7594170eSAndroid Build Coastguard Worker asserts.true( 1409*7594170eSAndroid Build Coastguard Worker env, 1410*7594170eSAndroid Build Coastguard Worker arg.endswith(ctx.attr.apex_min), 1411*7594170eSAndroid Build Coastguard Worker "Incorrect --target flag: %s %s" % (arg, ctx.attr.apex_min), 1412*7594170eSAndroid Build Coastguard Worker ) 1413*7594170eSAndroid Build Coastguard Worker 1414*7594170eSAndroid Build Coastguard Worker asserts.true( 1415*7594170eSAndroid Build Coastguard Worker env, 1416*7594170eSAndroid Build Coastguard Worker found, 1417*7594170eSAndroid Build Coastguard Worker "No --target flag found: %s" % argv, 1418*7594170eSAndroid Build Coastguard Worker ) 1419*7594170eSAndroid Build Coastguard Worker 1420*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1421*7594170eSAndroid Build Coastguard Worker 1422*7594170eSAndroid Build Coastguard Workerdef _feature_check_aspect_impl(target, ctx): 1423*7594170eSAndroid Build Coastguard Worker rules_propagate_src = [ 1424*7594170eSAndroid Build Coastguard Worker "_bssl_hash_injection", 1425*7594170eSAndroid Build Coastguard Worker "stripped_shared_library", 1426*7594170eSAndroid Build Coastguard Worker "versioned_shared_library", 1427*7594170eSAndroid Build Coastguard Worker ] 1428*7594170eSAndroid Build Coastguard Worker 1429*7594170eSAndroid Build Coastguard Worker argv = [] 1430*7594170eSAndroid Build Coastguard Worker if ctx.rule.kind == "cc_shared_library" and target.label.name == ctx.attr.cc_target: 1431*7594170eSAndroid Build Coastguard Worker link_actions = [a for a in target.actions if a.mnemonic == "CppLink"] 1432*7594170eSAndroid Build Coastguard Worker argv = link_actions[0].argv 1433*7594170eSAndroid Build Coastguard Worker elif ctx.rule.kind in rules_propagate_src and hasattr(ctx.rule.attr, "src"): 1434*7594170eSAndroid Build Coastguard Worker argv = ctx.rule.attr.src[ActionArgsInfo].argv 1435*7594170eSAndroid Build Coastguard Worker elif ctx.rule.kind == "_cc_library_shared_proxy" and hasattr(ctx.rule.attr, "shared"): 1436*7594170eSAndroid Build Coastguard Worker argv = ctx.rule.attr.shared[0][ActionArgsInfo].argv 1437*7594170eSAndroid Build Coastguard Worker elif ctx.rule.kind == "_apex" and hasattr(ctx.rule.attr, "native_shared_libs_32"): 1438*7594170eSAndroid Build Coastguard Worker argv = ctx.rule.attr.native_shared_libs_32[0][ActionArgsInfo].argv 1439*7594170eSAndroid Build Coastguard Worker 1440*7594170eSAndroid Build Coastguard Worker return [ 1441*7594170eSAndroid Build Coastguard Worker ActionArgsInfo( 1442*7594170eSAndroid Build Coastguard Worker argv = argv, 1443*7594170eSAndroid Build Coastguard Worker ), 1444*7594170eSAndroid Build Coastguard Worker ] 1445*7594170eSAndroid Build Coastguard Worker 1446*7594170eSAndroid Build Coastguard Workerfeature_check_aspect = aspect( 1447*7594170eSAndroid Build Coastguard Worker implementation = _feature_check_aspect_impl, 1448*7594170eSAndroid Build Coastguard Worker attrs = { 1449*7594170eSAndroid Build Coastguard Worker "cc_target": attr.string(values = [ 1450*7594170eSAndroid Build Coastguard Worker # This has to mirror the test impl library names 1451*7594170eSAndroid Build Coastguard Worker "min_sdk_version_apex_inherit_lib_cc_unstripped", 1452*7594170eSAndroid Build Coastguard Worker "min_sdk_version_apex_inherit_override_min_sdk_tiramisu_lib_cc_unstripped", 1453*7594170eSAndroid Build Coastguard Worker ]), 1454*7594170eSAndroid Build Coastguard Worker }, 1455*7594170eSAndroid Build Coastguard Worker attr_aspects = ["native_shared_libs_32", "shared", "src"], 1456*7594170eSAndroid Build Coastguard Worker) 1457*7594170eSAndroid Build Coastguard Worker 1458*7594170eSAndroid Build Coastguard Workermin_sdk_version_apex_inherit_test_attrs = dict( 1459*7594170eSAndroid Build Coastguard Worker impl = _min_sdk_version_apex_inherit_test_impl, 1460*7594170eSAndroid Build Coastguard Worker attrs = { 1461*7594170eSAndroid Build Coastguard Worker "apex_min": attr.string(), 1462*7594170eSAndroid Build Coastguard Worker "cc_target": attr.string(), 1463*7594170eSAndroid Build Coastguard Worker }, 1464*7594170eSAndroid Build Coastguard Worker # We need to use aspect to examine the dependencies' actions of the apex 1465*7594170eSAndroid Build Coastguard Worker # target as the result of the transition, checking the dependencies directly 1466*7594170eSAndroid Build Coastguard Worker # using names will give you the info before the transition takes effect. 1467*7594170eSAndroid Build Coastguard Worker extra_target_under_test_aspects = [feature_check_aspect], 1468*7594170eSAndroid Build Coastguard Worker) 1469*7594170eSAndroid Build Coastguard Worker 1470*7594170eSAndroid Build Coastguard Workermin_sdk_version_apex_inherit_test = analysistest.make( 1471*7594170eSAndroid Build Coastguard Worker **min_sdk_version_apex_inherit_test_attrs 1472*7594170eSAndroid Build Coastguard Worker) 1473*7594170eSAndroid Build Coastguard Worker 1474*7594170eSAndroid Build Coastguard Workermin_sdk_version_apex_inherit_override_min_sdk_tiramisu_test = analysistest.make( 1475*7594170eSAndroid Build Coastguard Worker config_settings = { 1476*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_min_sdk_version_override_tiramisu", 1477*7594170eSAndroid Build Coastguard Worker }, 1478*7594170eSAndroid Build Coastguard Worker **min_sdk_version_apex_inherit_test_attrs 1479*7594170eSAndroid Build Coastguard Worker) 1480*7594170eSAndroid Build Coastguard Worker 1481*7594170eSAndroid Build Coastguard Workerdef _test_min_sdk_version_apex_inherit(): 1482*7594170eSAndroid Build Coastguard Worker name = "min_sdk_version_apex_inherit" 1483*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1484*7594170eSAndroid Build Coastguard Worker cc_name = name + "_lib_cc" 1485*7594170eSAndroid Build Coastguard Worker apex_min = "29" 1486*7594170eSAndroid Build Coastguard Worker 1487*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1488*7594170eSAndroid Build Coastguard Worker name = cc_name, 1489*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1490*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1491*7594170eSAndroid Build Coastguard Worker min_sdk_version = "apex_inherit", 1492*7594170eSAndroid Build Coastguard Worker ) 1493*7594170eSAndroid Build Coastguard Worker 1494*7594170eSAndroid Build Coastguard Worker test_apex( 1495*7594170eSAndroid Build Coastguard Worker name = name, 1496*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [cc_name], 1497*7594170eSAndroid Build Coastguard Worker min_sdk_version = apex_min, 1498*7594170eSAndroid Build Coastguard Worker ) 1499*7594170eSAndroid Build Coastguard Worker 1500*7594170eSAndroid Build Coastguard Worker min_sdk_version_apex_inherit_test( 1501*7594170eSAndroid Build Coastguard Worker name = test_name, 1502*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1503*7594170eSAndroid Build Coastguard Worker apex_min = apex_min, 1504*7594170eSAndroid Build Coastguard Worker cc_target = cc_name + "_unstripped", 1505*7594170eSAndroid Build Coastguard Worker ) 1506*7594170eSAndroid Build Coastguard Worker 1507*7594170eSAndroid Build Coastguard Worker return test_name 1508*7594170eSAndroid Build Coastguard Worker 1509*7594170eSAndroid Build Coastguard Workerdef _test_min_sdk_version_apex_inherit_override_min_sdk_tiramisu(): 1510*7594170eSAndroid Build Coastguard Worker name = "min_sdk_version_apex_inherit_override_min_sdk_tiramisu" 1511*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1512*7594170eSAndroid Build Coastguard Worker cc_name = name + "_lib_cc" 1513*7594170eSAndroid Build Coastguard Worker 1514*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1515*7594170eSAndroid Build Coastguard Worker name = cc_name, 1516*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1517*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1518*7594170eSAndroid Build Coastguard Worker min_sdk_version = "apex_inherit", 1519*7594170eSAndroid Build Coastguard Worker ) 1520*7594170eSAndroid Build Coastguard Worker 1521*7594170eSAndroid Build Coastguard Worker test_apex( 1522*7594170eSAndroid Build Coastguard Worker name = name, 1523*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [cc_name], 1524*7594170eSAndroid Build Coastguard Worker min_sdk_version = "29", 1525*7594170eSAndroid Build Coastguard Worker ) 1526*7594170eSAndroid Build Coastguard Worker 1527*7594170eSAndroid Build Coastguard Worker min_sdk_version_apex_inherit_override_min_sdk_tiramisu_test( 1528*7594170eSAndroid Build Coastguard Worker name = test_name, 1529*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1530*7594170eSAndroid Build Coastguard Worker apex_min = "33", # the apex transition forced the apex min_sdk_version to be 33 1531*7594170eSAndroid Build Coastguard Worker cc_target = cc_name + "_unstripped", 1532*7594170eSAndroid Build Coastguard Worker ) 1533*7594170eSAndroid Build Coastguard Worker 1534*7594170eSAndroid Build Coastguard Worker return test_name 1535*7594170eSAndroid Build Coastguard Worker 1536*7594170eSAndroid Build Coastguard Workerdef _apex_provides_base_zip_files_test_impl(ctx): 1537*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1538*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 1539*7594170eSAndroid Build Coastguard Worker 1540*7594170eSAndroid Build Coastguard Worker # The particular name of the file isn't important as it just gets zipped with the other apex files for other architectures 1541*7594170eSAndroid Build Coastguard Worker asserts.true( 1542*7594170eSAndroid Build Coastguard Worker env, 1543*7594170eSAndroid Build Coastguard Worker target_under_test[ApexInfo].base_file != None, 1544*7594170eSAndroid Build Coastguard Worker "Expected base_file to exist, but found None %s" % target_under_test[ApexInfo].base_file, 1545*7594170eSAndroid Build Coastguard Worker ) 1546*7594170eSAndroid Build Coastguard Worker 1547*7594170eSAndroid Build Coastguard Worker asserts.equals( 1548*7594170eSAndroid Build Coastguard Worker env, 1549*7594170eSAndroid Build Coastguard Worker target_under_test[ApexInfo].base_with_config_zip.basename, 1550*7594170eSAndroid Build Coastguard Worker # name is important here because the file gets disted and then referenced by name 1551*7594170eSAndroid Build Coastguard Worker ctx.attr.apex_name + ".apex-base.zip", 1552*7594170eSAndroid Build Coastguard Worker "Expected base file with config zip to have name ending with , but found %s" % target_under_test[ApexInfo].base_with_config_zip.basename, 1553*7594170eSAndroid Build Coastguard Worker ) 1554*7594170eSAndroid Build Coastguard Worker 1555*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1556*7594170eSAndroid Build Coastguard Worker 1557*7594170eSAndroid Build Coastguard Workerapex_provides_base_zip_files_test = analysistest.make( 1558*7594170eSAndroid Build Coastguard Worker _apex_provides_base_zip_files_test_impl, 1559*7594170eSAndroid Build Coastguard Worker attrs = { 1560*7594170eSAndroid Build Coastguard Worker "apex_name": attr.string(), 1561*7594170eSAndroid Build Coastguard Worker }, 1562*7594170eSAndroid Build Coastguard Worker) 1563*7594170eSAndroid Build Coastguard Worker 1564*7594170eSAndroid Build Coastguard Workerdef _test_apex_provides_base_zip_files(): 1565*7594170eSAndroid Build Coastguard Worker name = "apex_provides_base_zip_files" 1566*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1567*7594170eSAndroid Build Coastguard Worker 1568*7594170eSAndroid Build Coastguard Worker test_apex(name = name) 1569*7594170eSAndroid Build Coastguard Worker 1570*7594170eSAndroid Build Coastguard Worker apex_provides_base_zip_files_test( 1571*7594170eSAndroid Build Coastguard Worker name = test_name, 1572*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1573*7594170eSAndroid Build Coastguard Worker apex_name = name, 1574*7594170eSAndroid Build Coastguard Worker ) 1575*7594170eSAndroid Build Coastguard Worker 1576*7594170eSAndroid Build Coastguard Worker return test_name 1577*7594170eSAndroid Build Coastguard Worker 1578*7594170eSAndroid Build Coastguard Workerdef _apex_testonly_with_manifest_test_impl(ctx): 1579*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1580*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "Apexer"] 1581*7594170eSAndroid Build Coastguard Worker asserts.true( 1582*7594170eSAndroid Build Coastguard Worker env, 1583*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 1584*7594170eSAndroid Build Coastguard Worker "No apexer action found: %s" % actions, 1585*7594170eSAndroid Build Coastguard Worker ) 1586*7594170eSAndroid Build Coastguard Worker argv = actions[0].argv 1587*7594170eSAndroid Build Coastguard Worker 1588*7594170eSAndroid Build Coastguard Worker asserts.false( 1589*7594170eSAndroid Build Coastguard Worker env, 1590*7594170eSAndroid Build Coastguard Worker "--test_only" in argv, 1591*7594170eSAndroid Build Coastguard Worker "Calling apexer with --test_only when manifest file is specified: %s" % argv, 1592*7594170eSAndroid Build Coastguard Worker ) 1593*7594170eSAndroid Build Coastguard Worker 1594*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "MarkAndroidManifestTestOnly"] 1595*7594170eSAndroid Build Coastguard Worker asserts.true( 1596*7594170eSAndroid Build Coastguard Worker env, 1597*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 1598*7594170eSAndroid Build Coastguard Worker "No MarkAndroidManifestTestOnly action found: %s" % actions, 1599*7594170eSAndroid Build Coastguard Worker ) 1600*7594170eSAndroid Build Coastguard Worker argv = actions[0].argv 1601*7594170eSAndroid Build Coastguard Worker 1602*7594170eSAndroid Build Coastguard Worker asserts.true( 1603*7594170eSAndroid Build Coastguard Worker env, 1604*7594170eSAndroid Build Coastguard Worker "--test-only" in argv, 1605*7594170eSAndroid Build Coastguard Worker "Calling manifest_fixer without --test-only: %s" % argv, 1606*7594170eSAndroid Build Coastguard Worker ) 1607*7594170eSAndroid Build Coastguard Worker 1608*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1609*7594170eSAndroid Build Coastguard Worker 1610*7594170eSAndroid Build Coastguard Workerapex_testonly_with_manifest_test = analysistest.make( 1611*7594170eSAndroid Build Coastguard Worker _apex_testonly_with_manifest_test_impl, 1612*7594170eSAndroid Build Coastguard Worker) 1613*7594170eSAndroid Build Coastguard Worker 1614*7594170eSAndroid Build Coastguard Workerdef _test_apex_testonly_with_manifest(): 1615*7594170eSAndroid Build Coastguard Worker name = "apex_testonly_with_manifest" 1616*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1617*7594170eSAndroid Build Coastguard Worker 1618*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1619*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1620*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1621*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1622*7594170eSAndroid Build Coastguard Worker min_sdk_version = "32", 1623*7594170eSAndroid Build Coastguard Worker ) 1624*7594170eSAndroid Build Coastguard Worker 1625*7594170eSAndroid Build Coastguard Worker test_apex( 1626*7594170eSAndroid Build Coastguard Worker name = name, 1627*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 1628*7594170eSAndroid Build Coastguard Worker # This will not cause the validation failure because it is testonly. 1629*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 1630*7594170eSAndroid Build Coastguard Worker testonly = True, 1631*7594170eSAndroid Build Coastguard Worker tests = [name + "_cc_test"], 1632*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 1633*7594170eSAndroid Build Coastguard Worker ) 1634*7594170eSAndroid Build Coastguard Worker 1635*7594170eSAndroid Build Coastguard Worker # It shouldn't complain about the min_sdk_version of the dep is too low. 1636*7594170eSAndroid Build Coastguard Worker apex_testonly_with_manifest_test( 1637*7594170eSAndroid Build Coastguard Worker name = test_name, 1638*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1639*7594170eSAndroid Build Coastguard Worker ) 1640*7594170eSAndroid Build Coastguard Worker 1641*7594170eSAndroid Build Coastguard Worker return test_name 1642*7594170eSAndroid Build Coastguard Worker 1643*7594170eSAndroid Build Coastguard Workerdef _apex_testonly_without_manifest_test_impl(ctx): 1644*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1645*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "Apexer"] 1646*7594170eSAndroid Build Coastguard Worker asserts.true( 1647*7594170eSAndroid Build Coastguard Worker env, 1648*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 1649*7594170eSAndroid Build Coastguard Worker "No apexer action found: %s" % actions, 1650*7594170eSAndroid Build Coastguard Worker ) 1651*7594170eSAndroid Build Coastguard Worker argv = actions[0].argv[:-1] + actions[0].argv[-1].split(" ") 1652*7594170eSAndroid Build Coastguard Worker 1653*7594170eSAndroid Build Coastguard Worker asserts.true( 1654*7594170eSAndroid Build Coastguard Worker env, 1655*7594170eSAndroid Build Coastguard Worker "--test_only" in argv, 1656*7594170eSAndroid Build Coastguard Worker "Calling apexer without --test_only when manifest file is not specified: %s" % argv, 1657*7594170eSAndroid Build Coastguard Worker ) 1658*7594170eSAndroid Build Coastguard Worker 1659*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "MarkAndroidManifestTestOnly"] 1660*7594170eSAndroid Build Coastguard Worker asserts.true( 1661*7594170eSAndroid Build Coastguard Worker env, 1662*7594170eSAndroid Build Coastguard Worker len(actions) == 0, 1663*7594170eSAndroid Build Coastguard Worker "MarkAndroidManifestTestOnly shouldn't be called when manifest file is not specified: %s" % actions, 1664*7594170eSAndroid Build Coastguard Worker ) 1665*7594170eSAndroid Build Coastguard Worker 1666*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1667*7594170eSAndroid Build Coastguard Worker 1668*7594170eSAndroid Build Coastguard Workerapex_testonly_without_manifest_test = analysistest.make( 1669*7594170eSAndroid Build Coastguard Worker _apex_testonly_without_manifest_test_impl, 1670*7594170eSAndroid Build Coastguard Worker) 1671*7594170eSAndroid Build Coastguard Worker 1672*7594170eSAndroid Build Coastguard Workerdef _test_apex_testonly_without_manifest(): 1673*7594170eSAndroid Build Coastguard Worker name = "apex_testonly_without_manifest" 1674*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1675*7594170eSAndroid Build Coastguard Worker 1676*7594170eSAndroid Build Coastguard Worker test_apex( 1677*7594170eSAndroid Build Coastguard Worker name = name, 1678*7594170eSAndroid Build Coastguard Worker testonly = True, 1679*7594170eSAndroid Build Coastguard Worker ) 1680*7594170eSAndroid Build Coastguard Worker 1681*7594170eSAndroid Build Coastguard Worker apex_testonly_without_manifest_test( 1682*7594170eSAndroid Build Coastguard Worker name = test_name, 1683*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1684*7594170eSAndroid Build Coastguard Worker ) 1685*7594170eSAndroid Build Coastguard Worker 1686*7594170eSAndroid Build Coastguard Worker return test_name 1687*7594170eSAndroid Build Coastguard Worker 1688*7594170eSAndroid Build Coastguard Workerdef _apex_backing_file_test(ctx): 1689*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1690*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "FileWrite" and a.outputs.to_list()[0].basename.endswith("_backing.txt")] 1691*7594170eSAndroid Build Coastguard Worker asserts.true( 1692*7594170eSAndroid Build Coastguard Worker env, 1693*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 1694*7594170eSAndroid Build Coastguard Worker "No FileWrite action found for creating <apex>_backing.txt file: %s" % actions, 1695*7594170eSAndroid Build Coastguard Worker ) 1696*7594170eSAndroid Build Coastguard Worker 1697*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected_content, actions[0].content) 1698*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1699*7594170eSAndroid Build Coastguard Worker 1700*7594170eSAndroid Build Coastguard Workerapex_backing_file_test = analysistest.make( 1701*7594170eSAndroid Build Coastguard Worker _apex_backing_file_test, 1702*7594170eSAndroid Build Coastguard Worker attrs = { 1703*7594170eSAndroid Build Coastguard Worker "expected_content": attr.string(), 1704*7594170eSAndroid Build Coastguard Worker }, 1705*7594170eSAndroid Build Coastguard Worker) 1706*7594170eSAndroid Build Coastguard Worker 1707*7594170eSAndroid Build Coastguard Workerdef _test_apex_backing_file(): 1708*7594170eSAndroid Build Coastguard Worker name = "apex_backing_file" 1709*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1710*7594170eSAndroid Build Coastguard Worker 1711*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1712*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1713*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1714*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1715*7594170eSAndroid Build Coastguard Worker ) 1716*7594170eSAndroid Build Coastguard Worker 1717*7594170eSAndroid Build Coastguard Worker test_apex( 1718*7594170eSAndroid Build Coastguard Worker name = name, 1719*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 1720*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 1721*7594170eSAndroid Build Coastguard Worker ) 1722*7594170eSAndroid Build Coastguard Worker 1723*7594170eSAndroid Build Coastguard Worker apex_backing_file_test( 1724*7594170eSAndroid Build Coastguard Worker name = test_name, 1725*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1726*7594170eSAndroid Build Coastguard Worker expected_content = "apex_backing_file_lib_cc.so libc++.so\n", 1727*7594170eSAndroid Build Coastguard Worker ) 1728*7594170eSAndroid Build Coastguard Worker 1729*7594170eSAndroid Build Coastguard Worker return test_name 1730*7594170eSAndroid Build Coastguard Worker 1731*7594170eSAndroid Build Coastguard Workerdef _apex_installed_files_test(ctx): 1732*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1733*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "GenerateApexInstalledFileList"] 1734*7594170eSAndroid Build Coastguard Worker asserts.true( 1735*7594170eSAndroid Build Coastguard Worker env, 1736*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 1737*7594170eSAndroid Build Coastguard Worker "No GenerateApexInstalledFileList action found for creating <apex>-installed-files.txt file: %s" % actions, 1738*7594170eSAndroid Build Coastguard Worker ) 1739*7594170eSAndroid Build Coastguard Worker 1740*7594170eSAndroid Build Coastguard Worker asserts.equals( 1741*7594170eSAndroid Build Coastguard Worker env, 1742*7594170eSAndroid Build Coastguard Worker len(ctx.attr.expected_inputs), 1743*7594170eSAndroid Build Coastguard Worker len(actions[0].inputs.to_list()), 1744*7594170eSAndroid Build Coastguard Worker "Expected inputs length: %d, actual inputs length: %d" % (len(ctx.attr.expected_inputs), len(actions[0].inputs.to_list())), 1745*7594170eSAndroid Build Coastguard Worker ) 1746*7594170eSAndroid Build Coastguard Worker for file in actions[0].inputs.to_list(): 1747*7594170eSAndroid Build Coastguard Worker asserts.true( 1748*7594170eSAndroid Build Coastguard Worker env, 1749*7594170eSAndroid Build Coastguard Worker file.basename in ctx.attr.expected_inputs, 1750*7594170eSAndroid Build Coastguard Worker "Unexpected input: %s" % file.basename, 1751*7594170eSAndroid Build Coastguard Worker ) 1752*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected_output, actions[0].outputs.to_list()[0].basename) 1753*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1754*7594170eSAndroid Build Coastguard Worker 1755*7594170eSAndroid Build Coastguard Workerapex_installed_files_test = analysistest.make( 1756*7594170eSAndroid Build Coastguard Worker _apex_installed_files_test, 1757*7594170eSAndroid Build Coastguard Worker attrs = { 1758*7594170eSAndroid Build Coastguard Worker "expected_inputs": attr.string_list(), 1759*7594170eSAndroid Build Coastguard Worker "expected_output": attr.string(), 1760*7594170eSAndroid Build Coastguard Worker }, 1761*7594170eSAndroid Build Coastguard Worker) 1762*7594170eSAndroid Build Coastguard Worker 1763*7594170eSAndroid Build Coastguard Workerdef _test_apex_installed_files(): 1764*7594170eSAndroid Build Coastguard Worker name = "apex_installed_files" 1765*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1766*7594170eSAndroid Build Coastguard Worker 1767*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1768*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1769*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1770*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 1771*7594170eSAndroid Build Coastguard Worker ) 1772*7594170eSAndroid Build Coastguard Worker 1773*7594170eSAndroid Build Coastguard Worker test_apex( 1774*7594170eSAndroid Build Coastguard Worker name = name, 1775*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 1776*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 1777*7594170eSAndroid Build Coastguard Worker ) 1778*7594170eSAndroid Build Coastguard Worker 1779*7594170eSAndroid Build Coastguard Worker apex_installed_files_test( 1780*7594170eSAndroid Build Coastguard Worker name = test_name, 1781*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1782*7594170eSAndroid Build Coastguard Worker expected_inputs = ["libc++.so", "apex_installed_files_lib_cc.so"], 1783*7594170eSAndroid Build Coastguard Worker expected_output = "apex_installed_files-installed-files.txt", 1784*7594170eSAndroid Build Coastguard Worker ) 1785*7594170eSAndroid Build Coastguard Worker 1786*7594170eSAndroid Build Coastguard Worker return test_name 1787*7594170eSAndroid Build Coastguard Worker 1788*7594170eSAndroid Build Coastguard Workerdef _apex_symbols_used_by_apex_test(ctx): 1789*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1790*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 1791*7594170eSAndroid Build Coastguard Worker actual = target_under_test[ApexInfo].symbols_used_by_apex 1792*7594170eSAndroid Build Coastguard Worker 1793*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected_path, actual.short_path) 1794*7594170eSAndroid Build Coastguard Worker 1795*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1796*7594170eSAndroid Build Coastguard Worker 1797*7594170eSAndroid Build Coastguard Workerapex_symbols_used_by_apex_test = analysistest.make( 1798*7594170eSAndroid Build Coastguard Worker _apex_symbols_used_by_apex_test, 1799*7594170eSAndroid Build Coastguard Worker attrs = { 1800*7594170eSAndroid Build Coastguard Worker "expected_path": attr.string(), 1801*7594170eSAndroid Build Coastguard Worker }, 1802*7594170eSAndroid Build Coastguard Worker) 1803*7594170eSAndroid Build Coastguard Worker 1804*7594170eSAndroid Build Coastguard Workerdef _test_apex_symbols_used_by_apex(): 1805*7594170eSAndroid Build Coastguard Worker name = "apex_with_symbols_used_by_apex" 1806*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1807*7594170eSAndroid Build Coastguard Worker 1808*7594170eSAndroid Build Coastguard Worker test_apex( 1809*7594170eSAndroid Build Coastguard Worker name = name, 1810*7594170eSAndroid Build Coastguard Worker ) 1811*7594170eSAndroid Build Coastguard Worker 1812*7594170eSAndroid Build Coastguard Worker apex_symbols_used_by_apex_test( 1813*7594170eSAndroid Build Coastguard Worker name = test_name, 1814*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1815*7594170eSAndroid Build Coastguard Worker expected_path = "build/bazel/rules/apex/apex_with_symbols_used_by_apex_using.txt", 1816*7594170eSAndroid Build Coastguard Worker ) 1817*7594170eSAndroid Build Coastguard Worker 1818*7594170eSAndroid Build Coastguard Worker return test_name 1819*7594170eSAndroid Build Coastguard Worker 1820*7594170eSAndroid Build Coastguard Workerdef _apex_java_symbols_used_by_apex_test(ctx): 1821*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1822*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 1823*7594170eSAndroid Build Coastguard Worker actual = target_under_test[ApexInfo].java_symbols_used_by_apex 1824*7594170eSAndroid Build Coastguard Worker 1825*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected_path, actual.short_path) 1826*7594170eSAndroid Build Coastguard Worker 1827*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1828*7594170eSAndroid Build Coastguard Worker 1829*7594170eSAndroid Build Coastguard Workerapex_java_symbols_used_by_apex_test = analysistest.make( 1830*7594170eSAndroid Build Coastguard Worker _apex_java_symbols_used_by_apex_test, 1831*7594170eSAndroid Build Coastguard Worker attrs = { 1832*7594170eSAndroid Build Coastguard Worker "expected_path": attr.string(), 1833*7594170eSAndroid Build Coastguard Worker }, 1834*7594170eSAndroid Build Coastguard Worker) 1835*7594170eSAndroid Build Coastguard Worker 1836*7594170eSAndroid Build Coastguard Workerdef _test_apex_java_symbols_used_by_apex(): 1837*7594170eSAndroid Build Coastguard Worker name = "apex_with_java_symbols_used_by_apex" 1838*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1839*7594170eSAndroid Build Coastguard Worker 1840*7594170eSAndroid Build Coastguard Worker test_apex( 1841*7594170eSAndroid Build Coastguard Worker name = name, 1842*7594170eSAndroid Build Coastguard Worker ) 1843*7594170eSAndroid Build Coastguard Worker 1844*7594170eSAndroid Build Coastguard Worker apex_java_symbols_used_by_apex_test( 1845*7594170eSAndroid Build Coastguard Worker name = test_name, 1846*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1847*7594170eSAndroid Build Coastguard Worker expected_path = "build/bazel/rules/apex/apex_with_java_symbols_used_by_apex_using.xml", 1848*7594170eSAndroid Build Coastguard Worker ) 1849*7594170eSAndroid Build Coastguard Worker 1850*7594170eSAndroid Build Coastguard Worker return test_name 1851*7594170eSAndroid Build Coastguard Worker 1852*7594170eSAndroid Build Coastguard Workerdef _generate_notice_file_test(ctx): 1853*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1854*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "GenerateNoticeFile"] 1855*7594170eSAndroid Build Coastguard Worker asserts.true( 1856*7594170eSAndroid Build Coastguard Worker env, 1857*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 1858*7594170eSAndroid Build Coastguard Worker "apex target should have a single GenerateNoticeFile action, found %s" % actions, 1859*7594170eSAndroid Build Coastguard Worker ) 1860*7594170eSAndroid Build Coastguard Worker input_json = [f for f in actions[0].inputs.to_list() if f.basename.endswith("_licenses.json")] 1861*7594170eSAndroid Build Coastguard Worker asserts.true( 1862*7594170eSAndroid Build Coastguard Worker env, 1863*7594170eSAndroid Build Coastguard Worker len(input_json) == 1, 1864*7594170eSAndroid Build Coastguard Worker "apex GenerateNoticeFile should have a single input *_license.json file, got %s" % input_json, 1865*7594170eSAndroid Build Coastguard Worker ) 1866*7594170eSAndroid Build Coastguard Worker outs = actions[0].outputs.to_list() 1867*7594170eSAndroid Build Coastguard Worker asserts.true( 1868*7594170eSAndroid Build Coastguard Worker env, 1869*7594170eSAndroid Build Coastguard Worker len(outs) == 1 and outs[0].basename == "NOTICE.html.gz", 1870*7594170eSAndroid Build Coastguard Worker "apex GenerateNoticeFile should generate a single NOTICE.html.gz file, got %s" % [o.short_path for o in outs], 1871*7594170eSAndroid Build Coastguard Worker ) 1872*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1873*7594170eSAndroid Build Coastguard Worker 1874*7594170eSAndroid Build Coastguard Workerapex_generate_notice_file_test = analysistest.make(_generate_notice_file_test) 1875*7594170eSAndroid Build Coastguard Worker 1876*7594170eSAndroid Build Coastguard Workerdef _test_apex_generate_notice_file(): 1877*7594170eSAndroid Build Coastguard Worker name = "apex_notice_file" 1878*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1879*7594170eSAndroid Build Coastguard Worker test_apex(name = name) 1880*7594170eSAndroid Build Coastguard Worker apex_generate_notice_file_test(name = test_name, target_under_test = name) 1881*7594170eSAndroid Build Coastguard Worker return test_name 1882*7594170eSAndroid Build Coastguard Worker 1883*7594170eSAndroid Build Coastguard Workerdef _analysis_success_test(ctx): 1884*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 1885*7594170eSAndroid Build Coastguard Worker 1886*7594170eSAndroid Build Coastguard Worker # An empty analysis test that just ensures the target_under_test can be analyzed. 1887*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 1888*7594170eSAndroid Build Coastguard Worker 1889*7594170eSAndroid Build Coastguard Workeranalysis_success_test = analysistest.make(_analysis_success_test) 1890*7594170eSAndroid Build Coastguard Worker 1891*7594170eSAndroid Build Coastguard Workerdef _test_apex_available(): 1892*7594170eSAndroid Build Coastguard Worker name = "apex_available" 1893*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1894*7594170eSAndroid Build Coastguard Worker static_lib_name = name + "_lib_cc_static" 1895*7594170eSAndroid Build Coastguard Worker lib_headers_name = name + "_lib_cc_headers" 1896*7594170eSAndroid Build Coastguard Worker 1897*7594170eSAndroid Build Coastguard Worker cc_library_static( 1898*7594170eSAndroid Build Coastguard Worker name = static_lib_name, 1899*7594170eSAndroid Build Coastguard Worker srcs = ["src.cc"], 1900*7594170eSAndroid Build Coastguard Worker tags = [ 1901*7594170eSAndroid Build Coastguard Worker "manual", 1902*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1903*7594170eSAndroid Build Coastguard Worker # anyapex. 1904*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 1905*7594170eSAndroid Build Coastguard Worker ], 1906*7594170eSAndroid Build Coastguard Worker ) 1907*7594170eSAndroid Build Coastguard Worker cc_library_headers( 1908*7594170eSAndroid Build Coastguard Worker name = lib_headers_name, 1909*7594170eSAndroid Build Coastguard Worker export_absolute_includes = ["include_dir"], 1910*7594170eSAndroid Build Coastguard Worker tags = [ 1911*7594170eSAndroid Build Coastguard Worker "manual", 1912*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1913*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 1914*7594170eSAndroid Build Coastguard Worker ], 1915*7594170eSAndroid Build Coastguard Worker ) 1916*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1917*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1918*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1919*7594170eSAndroid Build Coastguard Worker deps = [ 1920*7594170eSAndroid Build Coastguard Worker static_lib_name, 1921*7594170eSAndroid Build Coastguard Worker lib_headers_name, 1922*7594170eSAndroid Build Coastguard Worker ], 1923*7594170eSAndroid Build Coastguard Worker tags = [ 1924*7594170eSAndroid Build Coastguard Worker "manual", 1925*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1926*7594170eSAndroid Build Coastguard Worker # Explicit name. 1927*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 1928*7594170eSAndroid Build Coastguard Worker ], 1929*7594170eSAndroid Build Coastguard Worker ) 1930*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1931*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 1932*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 1933*7594170eSAndroid Build Coastguard Worker tags = [ 1934*7594170eSAndroid Build Coastguard Worker "manual", 1935*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1936*7594170eSAndroid Build Coastguard Worker # anyapex. 1937*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 1938*7594170eSAndroid Build Coastguard Worker ], 1939*7594170eSAndroid Build Coastguard Worker ) 1940*7594170eSAndroid Build Coastguard Worker test_apex( 1941*7594170eSAndroid Build Coastguard Worker name = name, 1942*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [ 1943*7594170eSAndroid Build Coastguard Worker name + "_lib_cc", 1944*7594170eSAndroid Build Coastguard Worker name + "_lib2_cc", 1945*7594170eSAndroid Build Coastguard Worker ], 1946*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 1947*7594170eSAndroid Build Coastguard Worker ) 1948*7594170eSAndroid Build Coastguard Worker 1949*7594170eSAndroid Build Coastguard Worker analysis_success_test( 1950*7594170eSAndroid Build Coastguard Worker name = test_name, 1951*7594170eSAndroid Build Coastguard Worker target_under_test = name, 1952*7594170eSAndroid Build Coastguard Worker ) 1953*7594170eSAndroid Build Coastguard Worker 1954*7594170eSAndroid Build Coastguard Worker return test_name 1955*7594170eSAndroid Build Coastguard Worker 1956*7594170eSAndroid Build Coastguard Workerdef _test_apex_available_failure(): 1957*7594170eSAndroid Build Coastguard Worker name = "apex_available_failure" 1958*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 1959*7594170eSAndroid Build Coastguard Worker static_lib_name = name + "_lib_cc_static" 1960*7594170eSAndroid Build Coastguard Worker lib_headers_name = name + "_lib_cc_headers" 1961*7594170eSAndroid Build Coastguard Worker 1962*7594170eSAndroid Build Coastguard Worker cc_library_static( 1963*7594170eSAndroid Build Coastguard Worker name = static_lib_name, 1964*7594170eSAndroid Build Coastguard Worker srcs = ["src.cc"], 1965*7594170eSAndroid Build Coastguard Worker tags = [ 1966*7594170eSAndroid Build Coastguard Worker "manual", 1967*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1968*7594170eSAndroid Build Coastguard Worker ], 1969*7594170eSAndroid Build Coastguard Worker ) 1970*7594170eSAndroid Build Coastguard Worker cc_library_headers( 1971*7594170eSAndroid Build Coastguard Worker name = lib_headers_name, 1972*7594170eSAndroid Build Coastguard Worker export_absolute_includes = ["include_dir"], 1973*7594170eSAndroid Build Coastguard Worker tags = [ 1974*7594170eSAndroid Build Coastguard Worker "manual", 1975*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1976*7594170eSAndroid Build Coastguard Worker ], 1977*7594170eSAndroid Build Coastguard Worker ) 1978*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1979*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 1980*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 1981*7594170eSAndroid Build Coastguard Worker deps = [ 1982*7594170eSAndroid Build Coastguard Worker static_lib_name, 1983*7594170eSAndroid Build Coastguard Worker lib_headers_name, 1984*7594170eSAndroid Build Coastguard Worker ], 1985*7594170eSAndroid Build Coastguard Worker tags = [ 1986*7594170eSAndroid Build Coastguard Worker "manual", 1987*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1988*7594170eSAndroid Build Coastguard Worker ], 1989*7594170eSAndroid Build Coastguard Worker ) 1990*7594170eSAndroid Build Coastguard Worker cc_library_shared( 1991*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 1992*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 1993*7594170eSAndroid Build Coastguard Worker tags = [ 1994*7594170eSAndroid Build Coastguard Worker "manual", 1995*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 1996*7594170eSAndroid Build Coastguard Worker # anyapex. 1997*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 1998*7594170eSAndroid Build Coastguard Worker ], 1999*7594170eSAndroid Build Coastguard Worker ) 2000*7594170eSAndroid Build Coastguard Worker test_apex( 2001*7594170eSAndroid Build Coastguard Worker name = name, 2002*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [ 2003*7594170eSAndroid Build Coastguard Worker name + "_lib_cc", 2004*7594170eSAndroid Build Coastguard Worker name + "_lib2_cc", 2005*7594170eSAndroid Build Coastguard Worker ], 2006*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 2007*7594170eSAndroid Build Coastguard Worker ) 2008*7594170eSAndroid Build Coastguard Worker 2009*7594170eSAndroid Build Coastguard Worker expect_failure_test( 2010*7594170eSAndroid Build Coastguard Worker name = test_name, 2011*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2012*7594170eSAndroid Build Coastguard Worker failure_message = """ 2013*7594170eSAndroid Build Coastguard WorkerError in fail: `@//build/bazel/rules/apex:apex_available_failure` apex has transitive dependencies that do not include the apex in their apex_available tags: 2014*7594170eSAndroid Build Coastguard Worker @//build/bazel/rules/apex:apex_available_failure_lib_cc_static; apex_available tags: [] 2015*7594170eSAndroid Build Coastguard Worker @//build/bazel/rules/apex:apex_available_failure_lib_cc_headers; apex_available tags: [] 2016*7594170eSAndroid Build Coastguard Worker @//build/bazel/rules/apex:apex_available_failure_lib_cc; apex_available tags: []""", 2017*7594170eSAndroid Build Coastguard Worker ) 2018*7594170eSAndroid Build Coastguard Worker return test_name 2019*7594170eSAndroid Build Coastguard Worker 2020*7594170eSAndroid Build Coastguard Workerdef _test_apex_available_with_base_apex(): 2021*7594170eSAndroid Build Coastguard Worker name = "apex_available_with_base_apex" 2022*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2023*7594170eSAndroid Build Coastguard Worker 2024*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2025*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 2026*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2027*7594170eSAndroid Build Coastguard Worker tags = [ 2028*7594170eSAndroid Build Coastguard Worker "manual", 2029*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2030*7594170eSAndroid Build Coastguard Worker # Explicit name. 2031*7594170eSAndroid Build Coastguard Worker "apex_available=" + name + "_base", 2032*7594170eSAndroid Build Coastguard Worker ], 2033*7594170eSAndroid Build Coastguard Worker ) 2034*7594170eSAndroid Build Coastguard Worker 2035*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2036*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 2037*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 2038*7594170eSAndroid Build Coastguard Worker tags = [ 2039*7594170eSAndroid Build Coastguard Worker "manual", 2040*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2041*7594170eSAndroid Build Coastguard Worker # anyapex. 2042*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 2043*7594170eSAndroid Build Coastguard Worker ], 2044*7594170eSAndroid Build Coastguard Worker ) 2045*7594170eSAndroid Build Coastguard Worker 2046*7594170eSAndroid Build Coastguard Worker test_apex( 2047*7594170eSAndroid Build Coastguard Worker name = name, 2048*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [ 2049*7594170eSAndroid Build Coastguard Worker name + "_lib_cc", 2050*7594170eSAndroid Build Coastguard Worker name + "_lib2_cc", 2051*7594170eSAndroid Build Coastguard Worker ], 2052*7594170eSAndroid Build Coastguard Worker base_apex_name = name + "_base", 2053*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 2054*7594170eSAndroid Build Coastguard Worker ) 2055*7594170eSAndroid Build Coastguard Worker 2056*7594170eSAndroid Build Coastguard Worker analysis_success_test( 2057*7594170eSAndroid Build Coastguard Worker name = test_name, 2058*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2059*7594170eSAndroid Build Coastguard Worker ) 2060*7594170eSAndroid Build Coastguard Worker 2061*7594170eSAndroid Build Coastguard Worker return test_name 2062*7594170eSAndroid Build Coastguard Worker 2063*7594170eSAndroid Build Coastguard Workerdef _apex_deps_validation_test_impl(ctx): 2064*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2065*7594170eSAndroid Build Coastguard Worker 2066*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 2067*7594170eSAndroid Build Coastguard Worker asserts.new_set_equals( 2068*7594170eSAndroid Build Coastguard Worker env, 2069*7594170eSAndroid Build Coastguard Worker sets.make(ctx.attr.allowed_deps_manifest + ctx.attr._default_apex_deps), 2070*7594170eSAndroid Build Coastguard Worker sets.make(apex_dep_infos_to_allowlist_strings( 2071*7594170eSAndroid Build Coastguard Worker target_under_test[ApexDepsInfo].transitive_deps.to_list(), 2072*7594170eSAndroid Build Coastguard Worker )), 2073*7594170eSAndroid Build Coastguard Worker ) 2074*7594170eSAndroid Build Coastguard Worker 2075*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2076*7594170eSAndroid Build Coastguard Worker 2077*7594170eSAndroid Build Coastguard Worker_apex_deps_validation_test = analysistest.make( 2078*7594170eSAndroid Build Coastguard Worker _apex_deps_validation_test_impl, 2079*7594170eSAndroid Build Coastguard Worker attrs = { 2080*7594170eSAndroid Build Coastguard Worker "allowed_deps_manifest": attr.string_list(), 2081*7594170eSAndroid Build Coastguard Worker "_default_apex_deps": attr.string_list( 2082*7594170eSAndroid Build Coastguard Worker default = [ 2083*7594170eSAndroid Build Coastguard Worker "libc_llndk_headers(minSdkVersion:apex_inherit)", 2084*7594170eSAndroid Build Coastguard Worker "libc_headers(minSdkVersion:apex_inherit)", 2085*7594170eSAndroid Build Coastguard Worker "libc++abi(minSdkVersion:apex_inherit)", 2086*7594170eSAndroid Build Coastguard Worker "libc++_static(minSdkVersion:apex_inherit)", 2087*7594170eSAndroid Build Coastguard Worker "libc++(minSdkVersion:apex_inherit)", 2088*7594170eSAndroid Build Coastguard Worker "libc++demangle(minSdkVersion:apex_inherit)", 2089*7594170eSAndroid Build Coastguard Worker ], 2090*7594170eSAndroid Build Coastguard Worker ), 2091*7594170eSAndroid Build Coastguard Worker }, 2092*7594170eSAndroid Build Coastguard Worker config_settings = { 2093*7594170eSAndroid Build Coastguard Worker "@//build/bazel/rules/apex:unsafe_disable_apex_allowed_deps_check": True, 2094*7594170eSAndroid Build Coastguard Worker }, 2095*7594170eSAndroid Build Coastguard Worker) 2096*7594170eSAndroid Build Coastguard Worker 2097*7594170eSAndroid Build Coastguard Workerdef _test_apex_deps_validation(): 2098*7594170eSAndroid Build Coastguard Worker name = "apex_deps_validation" 2099*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2100*7594170eSAndroid Build Coastguard Worker 2101*7594170eSAndroid Build Coastguard Worker aidl_interface_name = name + "_aidl_interface" 2102*7594170eSAndroid Build Coastguard Worker aidl_interface( 2103*7594170eSAndroid Build Coastguard Worker name = aidl_interface_name, 2104*7594170eSAndroid Build Coastguard Worker ndk_config = { 2105*7594170eSAndroid Build Coastguard Worker "enabled": True, 2106*7594170eSAndroid Build Coastguard Worker "min_sdk_version": "28", 2107*7594170eSAndroid Build Coastguard Worker }, 2108*7594170eSAndroid Build Coastguard Worker srcs = ["Foo.aidl"], 2109*7594170eSAndroid Build Coastguard Worker tags = [ 2110*7594170eSAndroid Build Coastguard Worker "manual", 2111*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2112*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2113*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:platform", 2114*7594170eSAndroid Build Coastguard Worker ], 2115*7594170eSAndroid Build Coastguard Worker ) 2116*7594170eSAndroid Build Coastguard Worker 2117*7594170eSAndroid Build Coastguard Worker specific_apex_available_name = name + "_specific_apex_available" 2118*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2119*7594170eSAndroid Build Coastguard Worker name = specific_apex_available_name, 2120*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2121*7594170eSAndroid Build Coastguard Worker tags = [ 2122*7594170eSAndroid Build Coastguard Worker "manual", 2123*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2124*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2125*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:platform", 2126*7594170eSAndroid Build Coastguard Worker ], 2127*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 2128*7594170eSAndroid Build Coastguard Worker ) 2129*7594170eSAndroid Build Coastguard Worker 2130*7594170eSAndroid Build Coastguard Worker any_apex_available_name = name + "_any_apex_available" 2131*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2132*7594170eSAndroid Build Coastguard Worker name = any_apex_available_name, 2133*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2134*7594170eSAndroid Build Coastguard Worker implementation_dynamic_deps = [aidl_interface_name + "-V1-ndk"], 2135*7594170eSAndroid Build Coastguard Worker tags = [ 2136*7594170eSAndroid Build Coastguard Worker "manual", 2137*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2138*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 2139*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:platform", 2140*7594170eSAndroid Build Coastguard Worker ], 2141*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 2142*7594170eSAndroid Build Coastguard Worker ) 2143*7594170eSAndroid Build Coastguard Worker 2144*7594170eSAndroid Build Coastguard Worker no_platform_available_name = name + "_no_platform_available" 2145*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2146*7594170eSAndroid Build Coastguard Worker name = no_platform_available_name, 2147*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2148*7594170eSAndroid Build Coastguard Worker tags = [ 2149*7594170eSAndroid Build Coastguard Worker "manual", 2150*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2151*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 2152*7594170eSAndroid Build Coastguard Worker ], 2153*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 2154*7594170eSAndroid Build Coastguard Worker ) 2155*7594170eSAndroid Build Coastguard Worker 2156*7594170eSAndroid Build Coastguard Worker no_platform_available_transitive_dep_name = name + "_no_platform_available_transitive_dep" 2157*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2158*7594170eSAndroid Build Coastguard Worker name = no_platform_available_transitive_dep_name, 2159*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2160*7594170eSAndroid Build Coastguard Worker tags = [ 2161*7594170eSAndroid Build Coastguard Worker "manual", 2162*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2163*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 2164*7594170eSAndroid Build Coastguard Worker ], 2165*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 2166*7594170eSAndroid Build Coastguard Worker ) 2167*7594170eSAndroid Build Coastguard Worker 2168*7594170eSAndroid Build Coastguard Worker platform_available_but_dep_with_no_platform_available_name = name + "_shared_platform_available_but_dep_with_no_platform_available" 2169*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2170*7594170eSAndroid Build Coastguard Worker name = platform_available_but_dep_with_no_platform_available_name, 2171*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2172*7594170eSAndroid Build Coastguard Worker deps = [no_platform_available_transitive_dep_name], 2173*7594170eSAndroid Build Coastguard Worker tags = [ 2174*7594170eSAndroid Build Coastguard Worker "manual", 2175*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2176*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:anyapex", 2177*7594170eSAndroid Build Coastguard Worker "apex_available=//apex_available:platform", 2178*7594170eSAndroid Build Coastguard Worker ], 2179*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 2180*7594170eSAndroid Build Coastguard Worker ) 2181*7594170eSAndroid Build Coastguard Worker 2182*7594170eSAndroid Build Coastguard Worker test_apex( 2183*7594170eSAndroid Build Coastguard Worker name = name, 2184*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [ 2185*7594170eSAndroid Build Coastguard Worker specific_apex_available_name, 2186*7594170eSAndroid Build Coastguard Worker any_apex_available_name, 2187*7594170eSAndroid Build Coastguard Worker no_platform_available_name, 2188*7594170eSAndroid Build Coastguard Worker platform_available_but_dep_with_no_platform_available_name, 2189*7594170eSAndroid Build Coastguard Worker ], 2190*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 2191*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30", 2192*7594170eSAndroid Build Coastguard Worker ) 2193*7594170eSAndroid Build Coastguard Worker 2194*7594170eSAndroid Build Coastguard Worker _apex_deps_validation_test( 2195*7594170eSAndroid Build Coastguard Worker name = test_name, 2196*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2197*7594170eSAndroid Build Coastguard Worker allowed_deps_manifest = [ 2198*7594170eSAndroid Build Coastguard Worker specific_apex_available_name + "(minSdkVersion:30)", 2199*7594170eSAndroid Build Coastguard Worker any_apex_available_name + "(minSdkVersion:30)", 2200*7594170eSAndroid Build Coastguard Worker platform_available_but_dep_with_no_platform_available_name + "(minSdkVersion:30)", 2201*7594170eSAndroid Build Coastguard Worker aidl_interface_name + "-V1-ndk(minSdkVersion:28)", 2202*7594170eSAndroid Build Coastguard Worker "jni_headers(minSdkVersion:29)", 2203*7594170eSAndroid Build Coastguard Worker ], 2204*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2205*7594170eSAndroid Build Coastguard Worker ) 2206*7594170eSAndroid Build Coastguard Worker 2207*7594170eSAndroid Build Coastguard Worker return test_name 2208*7594170eSAndroid Build Coastguard Worker 2209*7594170eSAndroid Build Coastguard Worker_MarchInfo = provider(fields = {"march": "list of march values found in the cc deps of this apex"}) 2210*7594170eSAndroid Build Coastguard Worker 2211*7594170eSAndroid Build Coastguard Workerdef _apex_transition_test(ctx): 2212*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2213*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 2214*7594170eSAndroid Build Coastguard Worker march_values = target_under_test[_MarchInfo].march 2215*7594170eSAndroid Build Coastguard Worker 2216*7594170eSAndroid Build Coastguard Worker asserts.equals(env, ctx.attr.expected, march_values.to_list()) 2217*7594170eSAndroid Build Coastguard Worker 2218*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2219*7594170eSAndroid Build Coastguard Worker 2220*7594170eSAndroid Build Coastguard Workerdef _cc_compile_test_aspect_impl(target, ctx): 2221*7594170eSAndroid Build Coastguard Worker transitive_march = [] 2222*7594170eSAndroid Build Coastguard Worker for attr_deps in get_dep_targets(ctx.rule.attr, predicate = lambda target: _MarchInfo in target).values(): 2223*7594170eSAndroid Build Coastguard Worker for dep in attr_deps: 2224*7594170eSAndroid Build Coastguard Worker transitive_march.append(dep[_MarchInfo].march) 2225*7594170eSAndroid Build Coastguard Worker march_values = [] 2226*7594170eSAndroid Build Coastguard Worker if (target.label.name).startswith("apex_transition_lib"): 2227*7594170eSAndroid Build Coastguard Worker for a in target.actions: 2228*7594170eSAndroid Build Coastguard Worker if a.mnemonic == "CppCompile": 2229*7594170eSAndroid Build Coastguard Worker march_values += [arg for arg in a.argv if "march" in arg] 2230*7594170eSAndroid Build Coastguard Worker return [ 2231*7594170eSAndroid Build Coastguard Worker _MarchInfo( 2232*7594170eSAndroid Build Coastguard Worker march = depset( 2233*7594170eSAndroid Build Coastguard Worker direct = march_values, 2234*7594170eSAndroid Build Coastguard Worker transitive = transitive_march, 2235*7594170eSAndroid Build Coastguard Worker ), 2236*7594170eSAndroid Build Coastguard Worker ), 2237*7594170eSAndroid Build Coastguard Worker ] 2238*7594170eSAndroid Build Coastguard Worker 2239*7594170eSAndroid Build Coastguard Worker_cc_compile_test_aspect = aspect( 2240*7594170eSAndroid Build Coastguard Worker implementation = _cc_compile_test_aspect_impl, 2241*7594170eSAndroid Build Coastguard Worker attr_aspects = ["*"], 2242*7594170eSAndroid Build Coastguard Worker) 2243*7594170eSAndroid Build Coastguard Worker 2244*7594170eSAndroid Build Coastguard Workerapex_transition_test = analysistest.make( 2245*7594170eSAndroid Build Coastguard Worker _apex_transition_test, 2246*7594170eSAndroid Build Coastguard Worker attrs = { 2247*7594170eSAndroid Build Coastguard Worker "expected": attr.string_list(), 2248*7594170eSAndroid Build Coastguard Worker }, 2249*7594170eSAndroid Build Coastguard Worker extra_target_under_test_aspects = [_cc_compile_test_aspect], 2250*7594170eSAndroid Build Coastguard Worker) 2251*7594170eSAndroid Build Coastguard Worker 2252*7594170eSAndroid Build Coastguard Workerdef _test_apex_transition(): 2253*7594170eSAndroid Build Coastguard Worker name = "apex_transition" 2254*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2255*7594170eSAndroid Build Coastguard Worker 2256*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2257*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 2258*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2259*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2260*7594170eSAndroid Build Coastguard Worker ) 2261*7594170eSAndroid Build Coastguard Worker 2262*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2263*7594170eSAndroid Build Coastguard Worker name = name + "_lib2_cc", 2264*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib2.cc"], 2265*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2266*7594170eSAndroid Build Coastguard Worker ) 2267*7594170eSAndroid Build Coastguard Worker 2268*7594170eSAndroid Build Coastguard Worker test_apex( 2269*7594170eSAndroid Build Coastguard Worker name = name, 2270*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 2271*7594170eSAndroid Build Coastguard Worker native_shared_libs_64 = [name + "_lib2_cc"], 2272*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 2273*7594170eSAndroid Build Coastguard Worker ) 2274*7594170eSAndroid Build Coastguard Worker 2275*7594170eSAndroid Build Coastguard Worker apex_transition_test( 2276*7594170eSAndroid Build Coastguard Worker name = test_name + "_32", 2277*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2278*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android", "//build/bazel_common_rules/platforms/arch:arm"], 2279*7594170eSAndroid Build Coastguard Worker expected = ["-march=armv7-a"], 2280*7594170eSAndroid Build Coastguard Worker ) 2281*7594170eSAndroid Build Coastguard Worker 2282*7594170eSAndroid Build Coastguard Worker apex_transition_test( 2283*7594170eSAndroid Build Coastguard Worker name = test_name + "_64", 2284*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2285*7594170eSAndroid Build Coastguard Worker target_compatible_with = ["//build/bazel_common_rules/platforms/os:android", "//build/bazel_common_rules/platforms/arch:arm64"], 2286*7594170eSAndroid Build Coastguard Worker expected = ["-march=armv8-a"], 2287*7594170eSAndroid Build Coastguard Worker ) 2288*7594170eSAndroid Build Coastguard Worker 2289*7594170eSAndroid Build Coastguard Worker return [test_name + "_32", test_name + "_64"] 2290*7594170eSAndroid Build Coastguard Worker 2291*7594170eSAndroid Build Coastguard Workerdef _test_no_static_linking_for_stubs_lib(): 2292*7594170eSAndroid Build Coastguard Worker name = "no_static_linking_for_stubs_lib" 2293*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2294*7594170eSAndroid Build Coastguard Worker 2295*7594170eSAndroid Build Coastguard Worker cc_library_static( 2296*7594170eSAndroid Build Coastguard Worker name = name + "_static_unavailable_to_apex", 2297*7594170eSAndroid Build Coastguard Worker tags = [ 2298*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2299*7594170eSAndroid Build Coastguard Worker "manual", 2300*7594170eSAndroid Build Coastguard Worker ], 2301*7594170eSAndroid Build Coastguard Worker ) 2302*7594170eSAndroid Build Coastguard Worker 2303*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2304*7594170eSAndroid Build Coastguard Worker name = name + "_shared", 2305*7594170eSAndroid Build Coastguard Worker deps = [name + "_static_unavailable_to_apex"], 2306*7594170eSAndroid Build Coastguard Worker tags = [ 2307*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2308*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2309*7594170eSAndroid Build Coastguard Worker "manual", 2310*7594170eSAndroid Build Coastguard Worker ], 2311*7594170eSAndroid Build Coastguard Worker ) 2312*7594170eSAndroid Build Coastguard Worker 2313*7594170eSAndroid Build Coastguard Worker test_apex( 2314*7594170eSAndroid Build Coastguard Worker name = name, 2315*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_shared"], 2316*7594170eSAndroid Build Coastguard Worker ) 2317*7594170eSAndroid Build Coastguard Worker 2318*7594170eSAndroid Build Coastguard Worker expect_failure_test( 2319*7594170eSAndroid Build Coastguard Worker name = test_name, 2320*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2321*7594170eSAndroid Build Coastguard Worker failure_message = """ 2322*7594170eSAndroid Build Coastguard WorkerError in fail: `@//build/bazel/rules/apex:no_static_linking_for_stubs_lib` apex has transitive dependencies that do not include the apex in their apex_available tags: 2323*7594170eSAndroid Build Coastguard Worker @//build/bazel/rules/apex:no_static_linking_for_stubs_lib_static_unavailable_to_apex; apex_available tags: []""", 2324*7594170eSAndroid Build Coastguard Worker ) 2325*7594170eSAndroid Build Coastguard Worker 2326*7594170eSAndroid Build Coastguard Worker return test_name 2327*7594170eSAndroid Build Coastguard Worker 2328*7594170eSAndroid Build Coastguard Workerdef _test_directly_included_stubs_lib_with_indirectly_static_variant(): 2329*7594170eSAndroid Build Coastguard Worker name = "directly_included_stubs_lib_with_indirectly_static_variant" 2330*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2331*7594170eSAndroid Build Coastguard Worker 2332*7594170eSAndroid Build Coastguard Worker cc_binary( 2333*7594170eSAndroid Build Coastguard Worker name = name + "bar", 2334*7594170eSAndroid Build Coastguard Worker deps = [name + "_shared_bp2build_cc_library_static"], 2335*7594170eSAndroid Build Coastguard Worker tags = [ 2336*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2337*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2338*7594170eSAndroid Build Coastguard Worker "manual", 2339*7594170eSAndroid Build Coastguard Worker ], 2340*7594170eSAndroid Build Coastguard Worker ) 2341*7594170eSAndroid Build Coastguard Worker 2342*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2343*7594170eSAndroid Build Coastguard Worker name = name + "foo", 2344*7594170eSAndroid Build Coastguard Worker deps = [name + "_shared_bp2build_cc_library_static"], 2345*7594170eSAndroid Build Coastguard Worker tags = [ 2346*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2347*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2348*7594170eSAndroid Build Coastguard Worker "manual", 2349*7594170eSAndroid Build Coastguard Worker ], 2350*7594170eSAndroid Build Coastguard Worker ) 2351*7594170eSAndroid Build Coastguard Worker 2352*7594170eSAndroid Build Coastguard Worker # This target is unavailable to apex but is allowed to be required by 2353*7594170eSAndroid Build Coastguard Worker # cc_binary bar and cc_library_shared foo because its shared variant 2354*7594170eSAndroid Build Coastguard Worker # is directly in the apex 2355*7594170eSAndroid Build Coastguard Worker cc_library_static( 2356*7594170eSAndroid Build Coastguard Worker name = name + "_shared_bp2build_cc_library_static", 2357*7594170eSAndroid Build Coastguard Worker tags = [ 2358*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2359*7594170eSAndroid Build Coastguard Worker "manual", 2360*7594170eSAndroid Build Coastguard Worker ], 2361*7594170eSAndroid Build Coastguard Worker ) 2362*7594170eSAndroid Build Coastguard Worker 2363*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2364*7594170eSAndroid Build Coastguard Worker name = name + "_shared", 2365*7594170eSAndroid Build Coastguard Worker tags = [ 2366*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2367*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2368*7594170eSAndroid Build Coastguard Worker "manual", 2369*7594170eSAndroid Build Coastguard Worker ], 2370*7594170eSAndroid Build Coastguard Worker ) 2371*7594170eSAndroid Build Coastguard Worker 2372*7594170eSAndroid Build Coastguard Worker test_apex( 2373*7594170eSAndroid Build Coastguard Worker name = name, 2374*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_shared", name + "foo"], 2375*7594170eSAndroid Build Coastguard Worker binaries = [name + "bar"], 2376*7594170eSAndroid Build Coastguard Worker ) 2377*7594170eSAndroid Build Coastguard Worker 2378*7594170eSAndroid Build Coastguard Worker target_under_test_exist_test( 2379*7594170eSAndroid Build Coastguard Worker name = test_name, 2380*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2381*7594170eSAndroid Build Coastguard Worker ) 2382*7594170eSAndroid Build Coastguard Worker 2383*7594170eSAndroid Build Coastguard Worker return test_name 2384*7594170eSAndroid Build Coastguard Worker 2385*7594170eSAndroid Build Coastguard Workerdef cc_library_shared_with_stubs(name): 2386*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2387*7594170eSAndroid Build Coastguard Worker name = name, 2388*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = [], 2389*7594170eSAndroid Build Coastguard Worker stl = "none", 2390*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2391*7594170eSAndroid Build Coastguard Worker stubs_symbol_file = name + ".map.txt", 2392*7594170eSAndroid Build Coastguard Worker ) 2393*7594170eSAndroid Build Coastguard Worker 2394*7594170eSAndroid Build Coastguard Worker native.genrule( 2395*7594170eSAndroid Build Coastguard Worker name = name + "_genrule_map_txt", 2396*7594170eSAndroid Build Coastguard Worker outs = [name + ".map.txt"], 2397*7594170eSAndroid Build Coastguard Worker cmd = "touch $@", 2398*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2399*7594170eSAndroid Build Coastguard Worker ) 2400*7594170eSAndroid Build Coastguard Worker 2401*7594170eSAndroid Build Coastguard Worker cc_stub_suite( 2402*7594170eSAndroid Build Coastguard Worker name = name + "_stub_libs", 2403*7594170eSAndroid Build Coastguard Worker soname = name + ".so", 2404*7594170eSAndroid Build Coastguard Worker source_library_label = ":" + name, 2405*7594170eSAndroid Build Coastguard Worker symbol_file = name + ".map.txt", 2406*7594170eSAndroid Build Coastguard Worker versions = ["30"], 2407*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2408*7594170eSAndroid Build Coastguard Worker ) 2409*7594170eSAndroid Build Coastguard Worker 2410*7594170eSAndroid Build Coastguard Worker return [ 2411*7594170eSAndroid Build Coastguard Worker name, 2412*7594170eSAndroid Build Coastguard Worker name + "_stub_libs", 2413*7594170eSAndroid Build Coastguard Worker ] 2414*7594170eSAndroid Build Coastguard Worker 2415*7594170eSAndroid Build Coastguard Workerdef _apex_in_unbundled_build_test(ctx): 2416*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2417*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 2418*7594170eSAndroid Build Coastguard Worker mk_modules_to_install = target_under_test[ApexMkInfo].make_modules_to_install 2419*7594170eSAndroid Build Coastguard Worker asserts.true( 2420*7594170eSAndroid Build Coastguard Worker env, 2421*7594170eSAndroid Build Coastguard Worker "apex_in_unbundled_build_libfoo" not in mk_modules_to_install, 2422*7594170eSAndroid Build Coastguard Worker "stub libs apex_in_unbundled_build_libfoo should not be propagated " + 2423*7594170eSAndroid Build Coastguard Worker "to make for installation in unbundled mode", 2424*7594170eSAndroid Build Coastguard Worker ) 2425*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2426*7594170eSAndroid Build Coastguard Worker 2427*7594170eSAndroid Build Coastguard Workerapex_in_unbundled_build_test = analysistest.make( 2428*7594170eSAndroid Build Coastguard Worker _apex_in_unbundled_build_test, 2429*7594170eSAndroid Build Coastguard Worker config_settings = { 2430*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_unbundled_build", 2431*7594170eSAndroid Build Coastguard Worker }, 2432*7594170eSAndroid Build Coastguard Worker) 2433*7594170eSAndroid Build Coastguard Worker 2434*7594170eSAndroid Build Coastguard Workerdef _test_apex_in_unbundled_build(): 2435*7594170eSAndroid Build Coastguard Worker name = "apex_in_unbundled_build" 2436*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2437*7594170eSAndroid Build Coastguard Worker 2438*7594170eSAndroid Build Coastguard Worker [cc_library_shared_name, cc_stub_suite_name] = cc_library_shared_with_stubs(name + "_libfoo") 2439*7594170eSAndroid Build Coastguard Worker 2440*7594170eSAndroid Build Coastguard Worker cc_binary( 2441*7594170eSAndroid Build Coastguard Worker name = name + "_bar", 2442*7594170eSAndroid Build Coastguard Worker tags = [ 2443*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2444*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2445*7594170eSAndroid Build Coastguard Worker "manual", 2446*7594170eSAndroid Build Coastguard Worker ], 2447*7594170eSAndroid Build Coastguard Worker dynamic_deps = select({ 2448*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-in_apex": [cc_stub_suite_name + "_current"], 2449*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-non_apex": [cc_library_shared_name], 2450*7594170eSAndroid Build Coastguard Worker }), 2451*7594170eSAndroid Build Coastguard Worker ) 2452*7594170eSAndroid Build Coastguard Worker 2453*7594170eSAndroid Build Coastguard Worker test_apex( 2454*7594170eSAndroid Build Coastguard Worker name = name, 2455*7594170eSAndroid Build Coastguard Worker binaries = [name + "_bar"], 2456*7594170eSAndroid Build Coastguard Worker ) 2457*7594170eSAndroid Build Coastguard Worker 2458*7594170eSAndroid Build Coastguard Worker apex_in_unbundled_build_test( 2459*7594170eSAndroid Build Coastguard Worker name = test_name, 2460*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2461*7594170eSAndroid Build Coastguard Worker ) 2462*7594170eSAndroid Build Coastguard Worker 2463*7594170eSAndroid Build Coastguard Worker return test_name 2464*7594170eSAndroid Build Coastguard Worker 2465*7594170eSAndroid Build Coastguard Workerdef _apex_in_bundled_build_test(ctx): 2466*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2467*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 2468*7594170eSAndroid Build Coastguard Worker mk_modules_to_install = target_under_test[ApexMkInfo].make_modules_to_install 2469*7594170eSAndroid Build Coastguard Worker asserts.true( 2470*7594170eSAndroid Build Coastguard Worker env, 2471*7594170eSAndroid Build Coastguard Worker "apex_in_bundled_build_libfoo" in mk_modules_to_install, 2472*7594170eSAndroid Build Coastguard Worker "stub libs apex_in_unbundled_build_libfoo should be propagated " + 2473*7594170eSAndroid Build Coastguard Worker "to make for installation in unbundled mode", 2474*7594170eSAndroid Build Coastguard Worker ) 2475*7594170eSAndroid Build Coastguard Worker 2476*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2477*7594170eSAndroid Build Coastguard Worker 2478*7594170eSAndroid Build Coastguard Workerapex_in_bundled_build_test = analysistest.make( 2479*7594170eSAndroid Build Coastguard Worker _apex_in_bundled_build_test, 2480*7594170eSAndroid Build Coastguard Worker config_settings = { 2481*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing", 2482*7594170eSAndroid Build Coastguard Worker }, 2483*7594170eSAndroid Build Coastguard Worker) 2484*7594170eSAndroid Build Coastguard Worker 2485*7594170eSAndroid Build Coastguard Workerdef _test_apex_in_bundled_build(): 2486*7594170eSAndroid Build Coastguard Worker name = "apex_in_bundled_build" 2487*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2488*7594170eSAndroid Build Coastguard Worker 2489*7594170eSAndroid Build Coastguard Worker [cc_library_shared_name, cc_stub_suite_name] = cc_library_shared_with_stubs(name + "_libfoo") 2490*7594170eSAndroid Build Coastguard Worker 2491*7594170eSAndroid Build Coastguard Worker cc_binary( 2492*7594170eSAndroid Build Coastguard Worker name = name + "_bar", 2493*7594170eSAndroid Build Coastguard Worker tags = [ 2494*7594170eSAndroid Build Coastguard Worker "apex_available=" + name, 2495*7594170eSAndroid Build Coastguard Worker "apex_available_checked_manual_for_testing", 2496*7594170eSAndroid Build Coastguard Worker "manual", 2497*7594170eSAndroid Build Coastguard Worker ], 2498*7594170eSAndroid Build Coastguard Worker dynamic_deps = select({ 2499*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-in_apex": [cc_stub_suite_name + "_current"], 2500*7594170eSAndroid Build Coastguard Worker "//build/bazel/rules/apex:android-non_apex": [cc_library_shared_name], 2501*7594170eSAndroid Build Coastguard Worker }), 2502*7594170eSAndroid Build Coastguard Worker ) 2503*7594170eSAndroid Build Coastguard Worker 2504*7594170eSAndroid Build Coastguard Worker test_apex( 2505*7594170eSAndroid Build Coastguard Worker name = name, 2506*7594170eSAndroid Build Coastguard Worker binaries = [name + "_bar"], 2507*7594170eSAndroid Build Coastguard Worker ) 2508*7594170eSAndroid Build Coastguard Worker 2509*7594170eSAndroid Build Coastguard Worker apex_in_bundled_build_test( 2510*7594170eSAndroid Build Coastguard Worker name = test_name, 2511*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2512*7594170eSAndroid Build Coastguard Worker ) 2513*7594170eSAndroid Build Coastguard Worker 2514*7594170eSAndroid Build Coastguard Worker return test_name 2515*7594170eSAndroid Build Coastguard Worker 2516*7594170eSAndroid Build Coastguard Workerdef _apex_compression_test(ctx): 2517*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2518*7594170eSAndroid Build Coastguard Worker 2519*7594170eSAndroid Build Coastguard Worker target = analysistest.target_under_test(env) 2520*7594170eSAndroid Build Coastguard Worker asserts.true( 2521*7594170eSAndroid Build Coastguard Worker env, 2522*7594170eSAndroid Build Coastguard Worker target[ApexInfo].signed_compressed_output != None, 2523*7594170eSAndroid Build Coastguard Worker "ApexInfo.signed_compressed_output should exist from compressible apex", 2524*7594170eSAndroid Build Coastguard Worker ) 2525*7594170eSAndroid Build Coastguard Worker 2526*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2527*7594170eSAndroid Build Coastguard Worker 2528*7594170eSAndroid Build Coastguard Workerapex_compression_test = analysistest.make( 2529*7594170eSAndroid Build Coastguard Worker _apex_compression_test, 2530*7594170eSAndroid Build Coastguard Worker config_settings = { 2531*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing", 2532*7594170eSAndroid Build Coastguard Worker }, 2533*7594170eSAndroid Build Coastguard Worker) 2534*7594170eSAndroid Build Coastguard Worker 2535*7594170eSAndroid Build Coastguard Workerdef _test_apex_compression(): 2536*7594170eSAndroid Build Coastguard Worker name = "apex_compression" 2537*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2538*7594170eSAndroid Build Coastguard Worker 2539*7594170eSAndroid Build Coastguard Worker test_apex( 2540*7594170eSAndroid Build Coastguard Worker name = name, 2541*7594170eSAndroid Build Coastguard Worker compressible = True, 2542*7594170eSAndroid Build Coastguard Worker ) 2543*7594170eSAndroid Build Coastguard Worker 2544*7594170eSAndroid Build Coastguard Worker apex_compression_test( 2545*7594170eSAndroid Build Coastguard Worker name = test_name, 2546*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2547*7594170eSAndroid Build Coastguard Worker ) 2548*7594170eSAndroid Build Coastguard Worker 2549*7594170eSAndroid Build Coastguard Worker return test_name 2550*7594170eSAndroid Build Coastguard Worker 2551*7594170eSAndroid Build Coastguard Workerdef _apex_no_compression_test(ctx): 2552*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2553*7594170eSAndroid Build Coastguard Worker 2554*7594170eSAndroid Build Coastguard Worker target = analysistest.target_under_test(env) 2555*7594170eSAndroid Build Coastguard Worker asserts.true( 2556*7594170eSAndroid Build Coastguard Worker env, 2557*7594170eSAndroid Build Coastguard Worker target[ApexInfo].signed_compressed_output == None, 2558*7594170eSAndroid Build Coastguard Worker "ApexInfo.signed_compressed_output should not exist when compression_enabled is not specified", 2559*7594170eSAndroid Build Coastguard Worker ) 2560*7594170eSAndroid Build Coastguard Worker 2561*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2562*7594170eSAndroid Build Coastguard Worker 2563*7594170eSAndroid Build Coastguard Workerapex_no_compression_test = analysistest.make( 2564*7594170eSAndroid Build Coastguard Worker _apex_no_compression_test, 2565*7594170eSAndroid Build Coastguard Worker config_settings = { 2566*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_no_compression", 2567*7594170eSAndroid Build Coastguard Worker }, 2568*7594170eSAndroid Build Coastguard Worker) 2569*7594170eSAndroid Build Coastguard Worker 2570*7594170eSAndroid Build Coastguard Workerdef _test_apex_no_compression(): 2571*7594170eSAndroid Build Coastguard Worker name = "apex_no_compression" 2572*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2573*7594170eSAndroid Build Coastguard Worker 2574*7594170eSAndroid Build Coastguard Worker test_apex( 2575*7594170eSAndroid Build Coastguard Worker name = name, 2576*7594170eSAndroid Build Coastguard Worker ) 2577*7594170eSAndroid Build Coastguard Worker 2578*7594170eSAndroid Build Coastguard Worker apex_no_compression_test( 2579*7594170eSAndroid Build Coastguard Worker name = test_name, 2580*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2581*7594170eSAndroid Build Coastguard Worker ) 2582*7594170eSAndroid Build Coastguard Worker 2583*7594170eSAndroid Build Coastguard Worker return test_name 2584*7594170eSAndroid Build Coastguard Worker 2585*7594170eSAndroid Build Coastguard Workerdef _min_target_sdk_version_api_fingerprint_test(ctx): 2586*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2587*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 2588*7594170eSAndroid Build Coastguard Worker 2589*7594170eSAndroid Build Coastguard Worker apexer_action = None 2590*7594170eSAndroid Build Coastguard Worker for action in actions: 2591*7594170eSAndroid Build Coastguard Worker if action.argv == None: 2592*7594170eSAndroid Build Coastguard Worker continue 2593*7594170eSAndroid Build Coastguard Worker for a in action.argv: 2594*7594170eSAndroid Build Coastguard Worker if "--min_sdk_version" in a: 2595*7594170eSAndroid Build Coastguard Worker apexer_action = action 2596*7594170eSAndroid Build Coastguard Worker break 2597*7594170eSAndroid Build Coastguard Worker if apexer_action != None: 2598*7594170eSAndroid Build Coastguard Worker break 2599*7594170eSAndroid Build Coastguard Worker 2600*7594170eSAndroid Build Coastguard Worker asserts.true( 2601*7594170eSAndroid Build Coastguard Worker env, 2602*7594170eSAndroid Build Coastguard Worker apexer_action != None, 2603*7594170eSAndroid Build Coastguard Worker "There is no apexer action in all the actions", 2604*7594170eSAndroid Build Coastguard Worker ) 2605*7594170eSAndroid Build Coastguard Worker 2606*7594170eSAndroid Build Coastguard Worker argv = apexer_action.argv[:-1] + apexer_action.argv[-1].split(" ") 2607*7594170eSAndroid Build Coastguard Worker api_fingerprint_in_input = False 2608*7594170eSAndroid Build Coastguard Worker api_fingerprint_path = None 2609*7594170eSAndroid Build Coastguard Worker for f in apexer_action.inputs.to_list(): 2610*7594170eSAndroid Build Coastguard Worker if f.basename == "api_fingerprint.txt": 2611*7594170eSAndroid Build Coastguard Worker api_fingerprint_in_input = True 2612*7594170eSAndroid Build Coastguard Worker api_fingerprint_path = f.path 2613*7594170eSAndroid Build Coastguard Worker break 2614*7594170eSAndroid Build Coastguard Worker 2615*7594170eSAndroid Build Coastguard Worker asserts.true( 2616*7594170eSAndroid Build Coastguard Worker env, 2617*7594170eSAndroid Build Coastguard Worker api_fingerprint_in_input, 2618*7594170eSAndroid Build Coastguard Worker "api_fingerprint.txt is not in the input files", 2619*7594170eSAndroid Build Coastguard Worker ) 2620*7594170eSAndroid Build Coastguard Worker 2621*7594170eSAndroid Build Coastguard Worker expected_target_sdk_version = "123" + ".$(cat {})".format(api_fingerprint_path) 2622*7594170eSAndroid Build Coastguard Worker target_sdk_version_index = argv.index("--target_sdk_version") 2623*7594170eSAndroid Build Coastguard Worker asserts.equals( 2624*7594170eSAndroid Build Coastguard Worker env, 2625*7594170eSAndroid Build Coastguard Worker expected = expected_target_sdk_version, 2626*7594170eSAndroid Build Coastguard Worker actual = argv[target_sdk_version_index + 1] + " " + argv[target_sdk_version_index + 2], 2627*7594170eSAndroid Build Coastguard Worker ) 2628*7594170eSAndroid Build Coastguard Worker 2629*7594170eSAndroid Build Coastguard Worker min_sdk_version_index = argv.index("--min_sdk_version") 2630*7594170eSAndroid Build Coastguard Worker if ctx.attr.min_sdk_version in ["current", "10000"]: 2631*7594170eSAndroid Build Coastguard Worker expected_min_sdk_version = "123" + ".$(cat {})".format(api_fingerprint_path) 2632*7594170eSAndroid Build Coastguard Worker actual_min_sdk_version = argv[min_sdk_version_index + 1] + " " + argv[min_sdk_version_index + 2] 2633*7594170eSAndroid Build Coastguard Worker else: 2634*7594170eSAndroid Build Coastguard Worker expected_min_sdk_version = ctx.attr.min_sdk_version 2635*7594170eSAndroid Build Coastguard Worker actual_min_sdk_version = argv[min_sdk_version_index + 1] 2636*7594170eSAndroid Build Coastguard Worker asserts.equals( 2637*7594170eSAndroid Build Coastguard Worker env, 2638*7594170eSAndroid Build Coastguard Worker expected = expected_min_sdk_version, 2639*7594170eSAndroid Build Coastguard Worker actual = actual_min_sdk_version, 2640*7594170eSAndroid Build Coastguard Worker ) 2641*7594170eSAndroid Build Coastguard Worker 2642*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2643*7594170eSAndroid Build Coastguard Worker 2644*7594170eSAndroid Build Coastguard Workermin_target_sdk_version_api_fingerprint_test = analysistest.make( 2645*7594170eSAndroid Build Coastguard Worker _min_target_sdk_version_api_fingerprint_test, 2646*7594170eSAndroid Build Coastguard Worker attrs = { 2647*7594170eSAndroid Build Coastguard Worker "min_sdk_version": attr.string( 2648*7594170eSAndroid Build Coastguard Worker default = "current", 2649*7594170eSAndroid Build Coastguard Worker ), 2650*7594170eSAndroid Build Coastguard Worker }, 2651*7594170eSAndroid Build Coastguard Worker config_settings = { 2652*7594170eSAndroid Build Coastguard Worker "//command_line_option:platforms": "@//build/bazel/tests/products:aosp_arm64_for_testing_unbundled_build", 2653*7594170eSAndroid Build Coastguard Worker "@//build/bazel/rules/apex:unbundled_build_target_sdk_with_api_fingerprint": True, 2654*7594170eSAndroid Build Coastguard Worker "@//build/bazel/rules/apex:platform_sdk_codename": "123", 2655*7594170eSAndroid Build Coastguard Worker }, 2656*7594170eSAndroid Build Coastguard Worker) 2657*7594170eSAndroid Build Coastguard Worker 2658*7594170eSAndroid Build Coastguard Workerdef _test_min_target_sdk_version_api_fingerprint_min_sdk_version_specified(): 2659*7594170eSAndroid Build Coastguard Worker name = "min_target_sdk_version_api_fingerprint_min_sdk_version_specified" 2660*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2661*7594170eSAndroid Build Coastguard Worker min_sdk_version = "30" 2662*7594170eSAndroid Build Coastguard Worker 2663*7594170eSAndroid Build Coastguard Worker test_apex( 2664*7594170eSAndroid Build Coastguard Worker name = name, 2665*7594170eSAndroid Build Coastguard Worker min_sdk_version = min_sdk_version, 2666*7594170eSAndroid Build Coastguard Worker ) 2667*7594170eSAndroid Build Coastguard Worker 2668*7594170eSAndroid Build Coastguard Worker min_target_sdk_version_api_fingerprint_test( 2669*7594170eSAndroid Build Coastguard Worker name = test_name, 2670*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2671*7594170eSAndroid Build Coastguard Worker min_sdk_version = min_sdk_version, 2672*7594170eSAndroid Build Coastguard Worker ) 2673*7594170eSAndroid Build Coastguard Worker 2674*7594170eSAndroid Build Coastguard Worker return test_name 2675*7594170eSAndroid Build Coastguard Worker 2676*7594170eSAndroid Build Coastguard Workerdef _test_min_target_sdk_version_api_fingerprint_min_sdk_version_not_specified(): 2677*7594170eSAndroid Build Coastguard Worker name = "min_target_sdk_version_api_fingerprint_min_sdk_version_not_specified" 2678*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2679*7594170eSAndroid Build Coastguard Worker 2680*7594170eSAndroid Build Coastguard Worker test_apex( 2681*7594170eSAndroid Build Coastguard Worker name = name, 2682*7594170eSAndroid Build Coastguard Worker ) 2683*7594170eSAndroid Build Coastguard Worker 2684*7594170eSAndroid Build Coastguard Worker min_target_sdk_version_api_fingerprint_test( 2685*7594170eSAndroid Build Coastguard Worker name = test_name, 2686*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2687*7594170eSAndroid Build Coastguard Worker ) 2688*7594170eSAndroid Build Coastguard Worker 2689*7594170eSAndroid Build Coastguard Worker return test_name 2690*7594170eSAndroid Build Coastguard Worker 2691*7594170eSAndroid Build Coastguard Workerdef _apex_sbom_test(ctx): 2692*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 2693*7594170eSAndroid Build Coastguard Worker 2694*7594170eSAndroid Build Coastguard Worker # Action GenerateSBOMMetadata 2695*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "GenerateSBOMMetadata"] 2696*7594170eSAndroid Build Coastguard Worker asserts.true( 2697*7594170eSAndroid Build Coastguard Worker env, 2698*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 2699*7594170eSAndroid Build Coastguard Worker "No GenerateSBOMMetadata action found for creating <apex>-sbom-metadata.csv file: %s" % actions, 2700*7594170eSAndroid Build Coastguard Worker ) 2701*7594170eSAndroid Build Coastguard Worker 2702*7594170eSAndroid Build Coastguard Worker input_files = [input.basename for input in actions[0].inputs.to_list()] 2703*7594170eSAndroid Build Coastguard Worker asserts.true( 2704*7594170eSAndroid Build Coastguard Worker env, 2705*7594170eSAndroid Build Coastguard Worker "apex_sbom_lib_cc.so" in input_files, 2706*7594170eSAndroid Build Coastguard Worker "No expected file in inputs of GenerateSBOMMetadata action", 2707*7594170eSAndroid Build Coastguard Worker ) 2708*7594170eSAndroid Build Coastguard Worker 2709*7594170eSAndroid Build Coastguard Worker output_files = [output.basename for output in actions[0].outputs.to_list()] 2710*7594170eSAndroid Build Coastguard Worker asserts.true( 2711*7594170eSAndroid Build Coastguard Worker env, 2712*7594170eSAndroid Build Coastguard Worker "apex_sbom.apex-sbom-metadata.csv" in output_files, 2713*7594170eSAndroid Build Coastguard Worker "No expected file in outputs of GenerateSBOMMetadata action", 2714*7594170eSAndroid Build Coastguard Worker ) 2715*7594170eSAndroid Build Coastguard Worker 2716*7594170eSAndroid Build Coastguard Worker # Action GenerateSBOM 2717*7594170eSAndroid Build Coastguard Worker actions = [a for a in analysistest.target_actions(env) if a.mnemonic == "GenerateSBOM"] 2718*7594170eSAndroid Build Coastguard Worker asserts.true( 2719*7594170eSAndroid Build Coastguard Worker env, 2720*7594170eSAndroid Build Coastguard Worker len(actions) == 1, 2721*7594170eSAndroid Build Coastguard Worker "No GenerateSBOM action found for creating sbom.spdx.json file: %s" % actions, 2722*7594170eSAndroid Build Coastguard Worker ) 2723*7594170eSAndroid Build Coastguard Worker input_files = [input.short_path for input in actions[0].inputs.to_list()] 2724*7594170eSAndroid Build Coastguard Worker expected_input_files = [ 2725*7594170eSAndroid Build Coastguard Worker "build/bazel/rules/apex/apex_sbom.apex", 2726*7594170eSAndroid Build Coastguard Worker "build/bazel/rules/apex/apex_sbom.apex-sbom-metadata.csv", 2727*7594170eSAndroid Build Coastguard Worker "build/make/tools/sbom/generate-sbom", 2728*7594170eSAndroid Build Coastguard Worker "build/bazel/rules/apex/apex_sbom_lib_cc/apex_sbom_lib_cc.so", 2729*7594170eSAndroid Build Coastguard Worker "build/bazel/rules/apex/METADATA", 2730*7594170eSAndroid Build Coastguard Worker ] 2731*7594170eSAndroid Build Coastguard Worker asserts.true( 2732*7594170eSAndroid Build Coastguard Worker env, 2733*7594170eSAndroid Build Coastguard Worker all([f in input_files for f in expected_input_files]), 2734*7594170eSAndroid Build Coastguard Worker "Missing input files: %s" % input_files, 2735*7594170eSAndroid Build Coastguard Worker ) 2736*7594170eSAndroid Build Coastguard Worker 2737*7594170eSAndroid Build Coastguard Worker output_files = [output.basename for output in actions[0].outputs.to_list()] 2738*7594170eSAndroid Build Coastguard Worker expected_output_files = [ 2739*7594170eSAndroid Build Coastguard Worker "apex_sbom.apex.spdx.json", 2740*7594170eSAndroid Build Coastguard Worker "apex_sbom.apex-fragment.spdx", 2741*7594170eSAndroid Build Coastguard Worker ] 2742*7594170eSAndroid Build Coastguard Worker asserts.true( 2743*7594170eSAndroid Build Coastguard Worker env, 2744*7594170eSAndroid Build Coastguard Worker all([f in output_files for f in expected_output_files]), 2745*7594170eSAndroid Build Coastguard Worker "Missing output files: %s" % input_files, 2746*7594170eSAndroid Build Coastguard Worker ) 2747*7594170eSAndroid Build Coastguard Worker 2748*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 2749*7594170eSAndroid Build Coastguard Worker 2750*7594170eSAndroid Build Coastguard Workerapex_sbom_test = analysistest.make( 2751*7594170eSAndroid Build Coastguard Worker _apex_sbom_test, 2752*7594170eSAndroid Build Coastguard Worker) 2753*7594170eSAndroid Build Coastguard Worker 2754*7594170eSAndroid Build Coastguard Workerdef _test_apex_sbom(): 2755*7594170eSAndroid Build Coastguard Worker name = "apex_sbom" 2756*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2757*7594170eSAndroid Build Coastguard Worker 2758*7594170eSAndroid Build Coastguard Worker cc_library_shared( 2759*7594170eSAndroid Build Coastguard Worker name = name + "_lib_cc", 2760*7594170eSAndroid Build Coastguard Worker srcs = [name + "_lib.cc"], 2761*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 2762*7594170eSAndroid Build Coastguard Worker ) 2763*7594170eSAndroid Build Coastguard Worker 2764*7594170eSAndroid Build Coastguard Worker test_apex( 2765*7594170eSAndroid Build Coastguard Worker name = name, 2766*7594170eSAndroid Build Coastguard Worker native_shared_libs_32 = [name + "_lib_cc"], 2767*7594170eSAndroid Build Coastguard Worker android_manifest = "AndroidManifest.xml", 2768*7594170eSAndroid Build Coastguard Worker ) 2769*7594170eSAndroid Build Coastguard Worker 2770*7594170eSAndroid Build Coastguard Worker apex_sbom_test( 2771*7594170eSAndroid Build Coastguard Worker name = test_name, 2772*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2773*7594170eSAndroid Build Coastguard Worker ) 2774*7594170eSAndroid Build Coastguard Worker 2775*7594170eSAndroid Build Coastguard Worker return test_name 2776*7594170eSAndroid Build Coastguard Worker 2777*7594170eSAndroid Build Coastguard Workerdef _test_apex_variant_version(): 2778*7594170eSAndroid Build Coastguard Worker name = "apex_variant_version" 2779*7594170eSAndroid Build Coastguard Worker test_name = name + "_test" 2780*7594170eSAndroid Build Coastguard Worker 2781*7594170eSAndroid Build Coastguard Worker test_apex( 2782*7594170eSAndroid Build Coastguard Worker name = name, 2783*7594170eSAndroid Build Coastguard Worker variant_version = "3", 2784*7594170eSAndroid Build Coastguard Worker ) 2785*7594170eSAndroid Build Coastguard Worker 2786*7594170eSAndroid Build Coastguard Worker expected_manifest_version = default_manifest_version + 3 2787*7594170eSAndroid Build Coastguard Worker 2788*7594170eSAndroid Build Coastguard Worker action_flags_present_only_for_mnemonic_test( 2789*7594170eSAndroid Build Coastguard Worker name = test_name, 2790*7594170eSAndroid Build Coastguard Worker target_under_test = name, 2791*7594170eSAndroid Build Coastguard Worker mnemonics = ["ApexManifestModify"], 2792*7594170eSAndroid Build Coastguard Worker expected_flags = ["-se", "version", "0", str(expected_manifest_version)], 2793*7594170eSAndroid Build Coastguard Worker ) 2794*7594170eSAndroid Build Coastguard Worker 2795*7594170eSAndroid Build Coastguard Worker return test_name 2796*7594170eSAndroid Build Coastguard Worker 2797*7594170eSAndroid Build Coastguard Workerdef apex_test_suite(name): 2798*7594170eSAndroid Build Coastguard Worker native.test_suite( 2799*7594170eSAndroid Build Coastguard Worker name = name, 2800*7594170eSAndroid Build Coastguard Worker tests = [ 2801*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_basic(), 2802*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_custom(), 2803*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_binaries(), 2804*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_native_shared_libs_arm(), 2805*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_native_shared_libs_arm64(), 2806*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_prebuilts(), 2807*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_prebuilts_sort_order(), 2808*7594170eSAndroid Build Coastguard Worker _test_canned_fs_config_runtime_deps(), 2809*7594170eSAndroid Build Coastguard Worker _test_apex_manifest(), 2810*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_min_sdk_version(), 2811*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_min_sdk_version_current(), 2812*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_min_sdk_version_override(), 2813*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_nodep(), 2814*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_cc_binary_bionic_deps(), 2815*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_cc_library_shared_bionic_deps(), 2816*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_requires(), 2817*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_provides(), 2818*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_selfcontained(), 2819*7594170eSAndroid Build Coastguard Worker _test_apex_manifest_dependencies_cc_binary(), 2820*7594170eSAndroid Build Coastguard Worker _test_logging_parent_flag(), 2821*7594170eSAndroid Build Coastguard Worker _test_package_name(), 2822*7594170eSAndroid Build Coastguard Worker _test_package_name_override_from_config(), 2823*7594170eSAndroid Build Coastguard Worker _test_generate_file_contexts(), 2824*7594170eSAndroid Build Coastguard Worker _test_default_apex_manifest_version(), 2825*7594170eSAndroid Build Coastguard Worker _test_override_apex_manifest_version(), 2826*7594170eSAndroid Build Coastguard Worker _test_min_sdk_version_failure(), 2827*7594170eSAndroid Build Coastguard Worker _test_min_sdk_version_failure_transitive(), 2828*7594170eSAndroid Build Coastguard Worker _test_apex_certificate_none(), 2829*7594170eSAndroid Build Coastguard Worker _test_apex_certificate_name(), 2830*7594170eSAndroid Build Coastguard Worker _test_apex_certificate_label(), 2831*7594170eSAndroid Build Coastguard Worker _test_apex_certificate_label_with_overrides(), 2832*7594170eSAndroid Build Coastguard Worker _test_min_sdk_version_apex_inherit(), 2833*7594170eSAndroid Build Coastguard Worker _test_min_sdk_version_apex_inherit_override_min_sdk_tiramisu(), 2834*7594170eSAndroid Build Coastguard Worker _test_apex_testonly_with_manifest(), 2835*7594170eSAndroid Build Coastguard Worker _test_apex_provides_base_zip_files(), 2836*7594170eSAndroid Build Coastguard Worker _test_apex_testonly_without_manifest(), 2837*7594170eSAndroid Build Coastguard Worker _test_apex_backing_file(), 2838*7594170eSAndroid Build Coastguard Worker _test_apex_symbols_used_by_apex(), 2839*7594170eSAndroid Build Coastguard Worker _test_apex_installed_files(), 2840*7594170eSAndroid Build Coastguard Worker _test_apex_java_symbols_used_by_apex(), 2841*7594170eSAndroid Build Coastguard Worker _test_apex_generate_notice_file(), 2842*7594170eSAndroid Build Coastguard Worker _test_apex_available(), 2843*7594170eSAndroid Build Coastguard Worker _test_apex_available_failure(), 2844*7594170eSAndroid Build Coastguard Worker _test_apex_available_with_base_apex(), 2845*7594170eSAndroid Build Coastguard Worker _test_apex_deps_validation(), 2846*7594170eSAndroid Build Coastguard Worker _test_no_static_linking_for_stubs_lib(), 2847*7594170eSAndroid Build Coastguard Worker _test_directly_included_stubs_lib_with_indirectly_static_variant(), 2848*7594170eSAndroid Build Coastguard Worker _test_apex_in_unbundled_build(), 2849*7594170eSAndroid Build Coastguard Worker _test_apex_in_bundled_build(), 2850*7594170eSAndroid Build Coastguard Worker _test_apex_compression(), 2851*7594170eSAndroid Build Coastguard Worker _test_apex_no_compression(), 2852*7594170eSAndroid Build Coastguard Worker _test_min_target_sdk_version_api_fingerprint_min_sdk_version_specified(), 2853*7594170eSAndroid Build Coastguard Worker _test_min_target_sdk_version_api_fingerprint_min_sdk_version_not_specified(), 2854*7594170eSAndroid Build Coastguard Worker _test_apex_sbom(), 2855*7594170eSAndroid Build Coastguard Worker _test_apex_variant_version(), 2856*7594170eSAndroid Build Coastguard Worker ] + _test_apex_transition(), 2857*7594170eSAndroid Build Coastguard Worker ) 2858