1*7594170eSAndroid Build Coastguard Worker""" 2*7594170eSAndroid Build Coastguard WorkerCopyright (C) 2023 The Android Open Source Project 3*7594170eSAndroid Build Coastguard Worker 4*7594170eSAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License"); 5*7594170eSAndroid Build Coastguard Workeryou may not use this file except in compliance with the License. 6*7594170eSAndroid Build Coastguard WorkerYou may obtain a copy of the License at 7*7594170eSAndroid Build Coastguard Worker 8*7594170eSAndroid Build Coastguard Worker http://www.apache.org/licenses/LICENSE-2.0 9*7594170eSAndroid Build Coastguard Worker 10*7594170eSAndroid Build Coastguard WorkerUnless required by applicable law or agreed to in writing, software 11*7594170eSAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS, 12*7594170eSAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*7594170eSAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and 14*7594170eSAndroid Build Coastguard Workerlimitations under the License. 15*7594170eSAndroid Build Coastguard Worker""" 16*7594170eSAndroid Build Coastguard Worker 17*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:paths.bzl", "paths") 18*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") 19*7594170eSAndroid Build Coastguard Workerload(":merged_txts.bzl", "merged_txts") 20*7594170eSAndroid Build Coastguard Workerload(":sdk_library.bzl", "java_sdk_library") 21*7594170eSAndroid Build Coastguard Worker 22*7594170eSAndroid Build Coastguard WorkerSCOPE_TO_JAVA_SDK_LIBRARY_FILE = { 23*7594170eSAndroid Build Coastguard Worker "public": "sdk_public.txt", 24*7594170eSAndroid Build Coastguard Worker "system": "sdk_system.txt", 25*7594170eSAndroid Build Coastguard Worker "module-lib": "sdk_module_lib.txt", 26*7594170eSAndroid Build Coastguard Worker "system-server": "sdk_system_server.txt", 27*7594170eSAndroid Build Coastguard Worker} 28*7594170eSAndroid Build Coastguard Worker 29*7594170eSAndroid Build Coastguard Workerdef _basic_merged_txts_test_impl(ctx): 30*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 31*7594170eSAndroid Build Coastguard Worker actions = analysistest.target_actions(env) 32*7594170eSAndroid Build Coastguard Worker 33*7594170eSAndroid Build Coastguard Worker base_file = paths.join(paths.dirname(ctx.build_file_path), ctx.attr.base) 34*7594170eSAndroid Build Coastguard Worker asserts.true( 35*7594170eSAndroid Build Coastguard Worker env, 36*7594170eSAndroid Build Coastguard Worker base_file in actions[0].argv, 37*7594170eSAndroid Build Coastguard Worker "Base file {} of scope {} is not in args list".format(base_file, ctx.attr.scope), 38*7594170eSAndroid Build Coastguard Worker ) 39*7594170eSAndroid Build Coastguard Worker 40*7594170eSAndroid Build Coastguard Worker java_sdk_library_file = paths.join( 41*7594170eSAndroid Build Coastguard Worker paths.dirname(ctx.build_file_path), 42*7594170eSAndroid Build Coastguard Worker SCOPE_TO_JAVA_SDK_LIBRARY_FILE[ctx.attr.scope], 43*7594170eSAndroid Build Coastguard Worker ) 44*7594170eSAndroid Build Coastguard Worker asserts.true( 45*7594170eSAndroid Build Coastguard Worker env, 46*7594170eSAndroid Build Coastguard Worker java_sdk_library_file in actions[0].argv, 47*7594170eSAndroid Build Coastguard Worker "java_sdk_library file {} of scope {} is not in args list".format(java_sdk_library_file, ctx.attr.scope), 48*7594170eSAndroid Build Coastguard Worker ) 49*7594170eSAndroid Build Coastguard Worker 50*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 51*7594170eSAndroid Build Coastguard Worker 52*7594170eSAndroid Build Coastguard Workerbasic_merged_txts_test = analysistest.make( 53*7594170eSAndroid Build Coastguard Worker _basic_merged_txts_test_impl, 54*7594170eSAndroid Build Coastguard Worker attrs = { 55*7594170eSAndroid Build Coastguard Worker "scope": attr.string(), 56*7594170eSAndroid Build Coastguard Worker "base": attr.string(), 57*7594170eSAndroid Build Coastguard Worker }, 58*7594170eSAndroid Build Coastguard Worker) 59*7594170eSAndroid Build Coastguard Worker 60*7594170eSAndroid Build Coastguard Workerdef test_generated_current_txt(): 61*7594170eSAndroid Build Coastguard Worker name = "generated_current_txt_test" 62*7594170eSAndroid Build Coastguard Worker target_name = name + "_target" 63*7594170eSAndroid Build Coastguard Worker scope = "public" 64*7594170eSAndroid Build Coastguard Worker base = "non-updatable-current.txt" 65*7594170eSAndroid Build Coastguard Worker merged_txts( 66*7594170eSAndroid Build Coastguard Worker name = target_name, 67*7594170eSAndroid Build Coastguard Worker scope = scope, 68*7594170eSAndroid Build Coastguard Worker base = base, 69*7594170eSAndroid Build Coastguard Worker deps = ["dep"], 70*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 71*7594170eSAndroid Build Coastguard Worker ) 72*7594170eSAndroid Build Coastguard Worker java_sdk_library( 73*7594170eSAndroid Build Coastguard Worker name = "dep", 74*7594170eSAndroid Build Coastguard Worker public = SCOPE_TO_JAVA_SDK_LIBRARY_FILE["public"], 75*7594170eSAndroid Build Coastguard Worker system = SCOPE_TO_JAVA_SDK_LIBRARY_FILE["system"], 76*7594170eSAndroid Build Coastguard Worker module_lib = SCOPE_TO_JAVA_SDK_LIBRARY_FILE["module-lib"], 77*7594170eSAndroid Build Coastguard Worker system_server = SCOPE_TO_JAVA_SDK_LIBRARY_FILE["system-server"], 78*7594170eSAndroid Build Coastguard Worker ) 79*7594170eSAndroid Build Coastguard Worker basic_merged_txts_test( 80*7594170eSAndroid Build Coastguard Worker name = name, 81*7594170eSAndroid Build Coastguard Worker target_under_test = target_name, 82*7594170eSAndroid Build Coastguard Worker scope = scope, 83*7594170eSAndroid Build Coastguard Worker base = base, 84*7594170eSAndroid Build Coastguard Worker ) 85*7594170eSAndroid Build Coastguard Worker return name 86*7594170eSAndroid Build Coastguard Worker 87*7594170eSAndroid Build Coastguard Workerdef test_generated_system_current_txt(): 88*7594170eSAndroid Build Coastguard Worker name = "generated_system_current_txt_test" 89*7594170eSAndroid Build Coastguard Worker target_name = name + "_target" 90*7594170eSAndroid Build Coastguard Worker scope = "system" 91*7594170eSAndroid Build Coastguard Worker base = "non-updatable-system-current.txt" 92*7594170eSAndroid Build Coastguard Worker merged_txts( 93*7594170eSAndroid Build Coastguard Worker name = target_name, 94*7594170eSAndroid Build Coastguard Worker scope = scope, 95*7594170eSAndroid Build Coastguard Worker base = base, 96*7594170eSAndroid Build Coastguard Worker deps = ["dep"], 97*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 98*7594170eSAndroid Build Coastguard Worker ) 99*7594170eSAndroid Build Coastguard Worker basic_merged_txts_test( 100*7594170eSAndroid Build Coastguard Worker name = name, 101*7594170eSAndroid Build Coastguard Worker target_under_test = target_name, 102*7594170eSAndroid Build Coastguard Worker scope = scope, 103*7594170eSAndroid Build Coastguard Worker base = base, 104*7594170eSAndroid Build Coastguard Worker ) 105*7594170eSAndroid Build Coastguard Worker return name 106*7594170eSAndroid Build Coastguard Worker 107*7594170eSAndroid Build Coastguard Workerdef test_generated_module_lib_current_txt(): 108*7594170eSAndroid Build Coastguard Worker name = "generated_module_lib_current_txt_test" 109*7594170eSAndroid Build Coastguard Worker target_name = name + "_target" 110*7594170eSAndroid Build Coastguard Worker scope = "module-lib" 111*7594170eSAndroid Build Coastguard Worker base = "non-updatable-module-lib_current.txt" 112*7594170eSAndroid Build Coastguard Worker merged_txts( 113*7594170eSAndroid Build Coastguard Worker name = target_name, 114*7594170eSAndroid Build Coastguard Worker scope = scope, 115*7594170eSAndroid Build Coastguard Worker base = base, 116*7594170eSAndroid Build Coastguard Worker deps = ["dep"], 117*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 118*7594170eSAndroid Build Coastguard Worker ) 119*7594170eSAndroid Build Coastguard Worker basic_merged_txts_test( 120*7594170eSAndroid Build Coastguard Worker name = name, 121*7594170eSAndroid Build Coastguard Worker target_under_test = target_name, 122*7594170eSAndroid Build Coastguard Worker scope = scope, 123*7594170eSAndroid Build Coastguard Worker base = base, 124*7594170eSAndroid Build Coastguard Worker ) 125*7594170eSAndroid Build Coastguard Worker return name 126*7594170eSAndroid Build Coastguard Worker 127*7594170eSAndroid Build Coastguard Workerdef test_generated_system_server_current_txt(): 128*7594170eSAndroid Build Coastguard Worker name = "generated_system_server_current_txt_test" 129*7594170eSAndroid Build Coastguard Worker target_name = name + "_target" 130*7594170eSAndroid Build Coastguard Worker scope = "system-server" 131*7594170eSAndroid Build Coastguard Worker base = "non-updatable-system-server-current.txt" 132*7594170eSAndroid Build Coastguard Worker merged_txts( 133*7594170eSAndroid Build Coastguard Worker name = target_name, 134*7594170eSAndroid Build Coastguard Worker scope = scope, 135*7594170eSAndroid Build Coastguard Worker base = base, 136*7594170eSAndroid Build Coastguard Worker deps = ["dep"], 137*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 138*7594170eSAndroid Build Coastguard Worker ) 139*7594170eSAndroid Build Coastguard Worker basic_merged_txts_test( 140*7594170eSAndroid Build Coastguard Worker name = name, 141*7594170eSAndroid Build Coastguard Worker target_under_test = target_name, 142*7594170eSAndroid Build Coastguard Worker scope = scope, 143*7594170eSAndroid Build Coastguard Worker base = base, 144*7594170eSAndroid Build Coastguard Worker ) 145*7594170eSAndroid Build Coastguard Worker return name 146*7594170eSAndroid Build Coastguard Worker 147*7594170eSAndroid Build Coastguard Workerdef merged_txts_test_suite(name): 148*7594170eSAndroid Build Coastguard Worker native.test_suite( 149*7594170eSAndroid Build Coastguard Worker name = name, 150*7594170eSAndroid Build Coastguard Worker tests = [ 151*7594170eSAndroid Build Coastguard Worker test_generated_current_txt(), 152*7594170eSAndroid Build Coastguard Worker test_generated_system_current_txt(), 153*7594170eSAndroid Build Coastguard Worker test_generated_module_lib_current_txt(), 154*7594170eSAndroid Build Coastguard Worker test_generated_system_server_current_txt(), 155*7594170eSAndroid Build Coastguard Worker ], 156*7594170eSAndroid Build Coastguard Worker ) 157