1*7594170eSAndroid Build Coastguard Worker"""Copyright (C) 2022 The Android Open Source Project 2*7594170eSAndroid Build Coastguard Worker 3*7594170eSAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License"); 4*7594170eSAndroid Build Coastguard Workeryou may not use this file except in compliance with the License. 5*7594170eSAndroid Build Coastguard WorkerYou 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 WorkerUnless required by applicable law or agreed to in writing, software 10*7594170eSAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS, 11*7594170eSAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7594170eSAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and 13*7594170eSAndroid Build Coastguard Workerlimitations under the License. 14*7594170eSAndroid Build Coastguard Worker""" 15*7594170eSAndroid Build Coastguard Worker 16*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:paths.bzl", "paths") 17*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") 18*7594170eSAndroid Build Coastguard Workerload(":hidl_library.bzl", "HidlInfo", "hidl_library") 19*7594170eSAndroid Build Coastguard Workerload(":hidl_package_root.bzl", "hidl_package_root") 20*7594170eSAndroid Build Coastguard Worker 21*7594170eSAndroid Build Coastguard WorkerSRC_NAME = "src.hal" 22*7594170eSAndroid Build Coastguard WorkerDEP1_NAME = "dep1.hal" 23*7594170eSAndroid Build Coastguard WorkerDEP2_NAME = "dep2.hal" 24*7594170eSAndroid Build Coastguard WorkerDEP3_NAME = "dep3.hal" 25*7594170eSAndroid Build Coastguard WorkerROOT = "android.hardware" 26*7594170eSAndroid Build Coastguard WorkerROOT_INTERFACE_FILE_LABEL = "//hardware/interfaces:current.txt" 27*7594170eSAndroid Build Coastguard WorkerROOT_INTERFACE_FILE = "hardware/interfaces/current.txt" 28*7594170eSAndroid Build Coastguard WorkerROOT_INTERFACE_PATH = "hardware/interfaces" 29*7594170eSAndroid Build Coastguard WorkerROOT_ARGUMENT = "android.hardware:hardware/interfaces" 30*7594170eSAndroid Build Coastguard WorkerROOT1 = "android.system" 31*7594170eSAndroid Build Coastguard WorkerROOT1_INTERFACE_FILE_LABEL = "//system/hardware/interfaces:current.txt" 32*7594170eSAndroid Build Coastguard WorkerROOT1_INTERFACE_FILE = "system/hardware/interfaces/current.txt" 33*7594170eSAndroid Build Coastguard WorkerROOT1_INTERFACE_PATH = "system/hardware/interfaces" 34*7594170eSAndroid Build Coastguard WorkerROOT1_ARGUMENT = "android.system:system/hardware/interfaces" 35*7594170eSAndroid Build Coastguard WorkerROOT2 = "android.hidl" 36*7594170eSAndroid Build Coastguard WorkerROOT2_INTERFACE_FILE_LABEL = "//system/libhidl/transport:current.txt" 37*7594170eSAndroid Build Coastguard WorkerROOT2_INTERFACE_FILE = "system/libhidl/transport/current.txt" 38*7594170eSAndroid Build Coastguard WorkerROOT2_INTERFACE_PATH = "system/libhidl/transport" 39*7594170eSAndroid Build Coastguard WorkerROOT2_ARGUMENT = "android.hidl:system/libhidl/transport" 40*7594170eSAndroid Build Coastguard Worker 41*7594170eSAndroid Build Coastguard Workerdef _setup_roots(): 42*7594170eSAndroid Build Coastguard Worker hidl_package_root( 43*7594170eSAndroid Build Coastguard Worker name = ROOT, 44*7594170eSAndroid Build Coastguard Worker current = ROOT_INTERFACE_FILE_LABEL, 45*7594170eSAndroid Build Coastguard Worker path = ROOT_INTERFACE_PATH, 46*7594170eSAndroid Build Coastguard Worker ) 47*7594170eSAndroid Build Coastguard Worker 48*7594170eSAndroid Build Coastguard Worker hidl_package_root( 49*7594170eSAndroid Build Coastguard Worker name = ROOT1, 50*7594170eSAndroid Build Coastguard Worker current = ROOT1_INTERFACE_FILE_LABEL, 51*7594170eSAndroid Build Coastguard Worker path = ROOT1_INTERFACE_PATH, 52*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 53*7594170eSAndroid Build Coastguard Worker ) 54*7594170eSAndroid Build Coastguard Worker 55*7594170eSAndroid Build Coastguard Worker hidl_package_root( 56*7594170eSAndroid Build Coastguard Worker name = ROOT2, 57*7594170eSAndroid Build Coastguard Worker current = ROOT2_INTERFACE_FILE_LABEL, 58*7594170eSAndroid Build Coastguard Worker path = ROOT2_INTERFACE_PATH, 59*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 60*7594170eSAndroid Build Coastguard Worker ) 61*7594170eSAndroid Build Coastguard Worker 62*7594170eSAndroid Build Coastguard Workerdef _hidl_info_simple_test_impl(ctx): 63*7594170eSAndroid Build Coastguard Worker env = analysistest.begin(ctx) 64*7594170eSAndroid Build Coastguard Worker target_under_test = analysistest.target_under_test(env) 65*7594170eSAndroid Build Coastguard Worker package_root = paths.dirname(ctx.build_file_path) 66*7594170eSAndroid Build Coastguard Worker 67*7594170eSAndroid Build Coastguard Worker asserts.equals( 68*7594170eSAndroid Build Coastguard Worker env, 69*7594170eSAndroid Build Coastguard Worker expected = [ 70*7594170eSAndroid Build Coastguard Worker paths.join(package_root, "src.hal"), 71*7594170eSAndroid Build Coastguard Worker ], 72*7594170eSAndroid Build Coastguard Worker actual = [ 73*7594170eSAndroid Build Coastguard Worker file.short_path 74*7594170eSAndroid Build Coastguard Worker for file in target_under_test[HidlInfo].srcs.to_list() 75*7594170eSAndroid Build Coastguard Worker ], 76*7594170eSAndroid Build Coastguard Worker ) 77*7594170eSAndroid Build Coastguard Worker 78*7594170eSAndroid Build Coastguard Worker asserts.equals( 79*7594170eSAndroid Build Coastguard Worker env, 80*7594170eSAndroid Build Coastguard Worker expected = sorted([ 81*7594170eSAndroid Build Coastguard Worker paths.join(package_root, DEP1_NAME), 82*7594170eSAndroid Build Coastguard Worker paths.join(package_root, DEP3_NAME), 83*7594170eSAndroid Build Coastguard Worker paths.join(package_root, DEP2_NAME), 84*7594170eSAndroid Build Coastguard Worker paths.join(package_root, SRC_NAME), 85*7594170eSAndroid Build Coastguard Worker ]), 86*7594170eSAndroid Build Coastguard Worker actual = sorted([ 87*7594170eSAndroid Build Coastguard Worker file.short_path 88*7594170eSAndroid Build Coastguard Worker for file in target_under_test[HidlInfo].transitive_srcs.to_list() 89*7594170eSAndroid Build Coastguard Worker ]), 90*7594170eSAndroid Build Coastguard Worker ) 91*7594170eSAndroid Build Coastguard Worker 92*7594170eSAndroid Build Coastguard Worker asserts.equals( 93*7594170eSAndroid Build Coastguard Worker env, 94*7594170eSAndroid Build Coastguard Worker expected = sorted([ 95*7594170eSAndroid Build Coastguard Worker ROOT1_ARGUMENT, 96*7594170eSAndroid Build Coastguard Worker ROOT2_ARGUMENT, 97*7594170eSAndroid Build Coastguard Worker ROOT_ARGUMENT, 98*7594170eSAndroid Build Coastguard Worker ]), 99*7594170eSAndroid Build Coastguard Worker actual = sorted(target_under_test[HidlInfo].transitive_roots.to_list()), 100*7594170eSAndroid Build Coastguard Worker msg = "arguments", 101*7594170eSAndroid Build Coastguard Worker ) 102*7594170eSAndroid Build Coastguard Worker 103*7594170eSAndroid Build Coastguard Worker asserts.equals( 104*7594170eSAndroid Build Coastguard Worker env, 105*7594170eSAndroid Build Coastguard Worker expected = sorted([ 106*7594170eSAndroid Build Coastguard Worker ROOT1_INTERFACE_FILE, 107*7594170eSAndroid Build Coastguard Worker ROOT2_INTERFACE_FILE, 108*7594170eSAndroid Build Coastguard Worker ROOT_INTERFACE_FILE, 109*7594170eSAndroid Build Coastguard Worker ]), 110*7594170eSAndroid Build Coastguard Worker actual = sorted([ 111*7594170eSAndroid Build Coastguard Worker file.short_path 112*7594170eSAndroid Build Coastguard Worker for file in target_under_test[HidlInfo].transitive_root_interface_files.to_list() 113*7594170eSAndroid Build Coastguard Worker ]), 114*7594170eSAndroid Build Coastguard Worker msg = "interface files", 115*7594170eSAndroid Build Coastguard Worker ) 116*7594170eSAndroid Build Coastguard Worker 117*7594170eSAndroid Build Coastguard Worker return analysistest.end(env) 118*7594170eSAndroid Build Coastguard Worker 119*7594170eSAndroid Build Coastguard Workerhidl_info_simple_test = analysistest.make( 120*7594170eSAndroid Build Coastguard Worker _hidl_info_simple_test_impl, 121*7594170eSAndroid Build Coastguard Worker) 122*7594170eSAndroid Build Coastguard Worker 123*7594170eSAndroid Build Coastguard Workerdef _test_hidl_info_simple(): 124*7594170eSAndroid Build Coastguard Worker test_base_name = "hidl_info_simple" 125*7594170eSAndroid Build Coastguard Worker test_name = test_base_name + "_test" 126*7594170eSAndroid Build Coastguard Worker dep1 = test_base_name + "_dep1" 127*7594170eSAndroid Build Coastguard Worker dep2 = test_base_name + "_dep2" 128*7594170eSAndroid Build Coastguard Worker dep3 = test_base_name + "_dep3" 129*7594170eSAndroid Build Coastguard Worker 130*7594170eSAndroid Build Coastguard Worker hidl_library( 131*7594170eSAndroid Build Coastguard Worker name = test_base_name, 132*7594170eSAndroid Build Coastguard Worker srcs = [SRC_NAME], 133*7594170eSAndroid Build Coastguard Worker deps = [ 134*7594170eSAndroid Build Coastguard Worker ":" + dep1, 135*7594170eSAndroid Build Coastguard Worker ":" + dep2, 136*7594170eSAndroid Build Coastguard Worker ], 137*7594170eSAndroid Build Coastguard Worker root = ROOT, 138*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 139*7594170eSAndroid Build Coastguard Worker ) 140*7594170eSAndroid Build Coastguard Worker hidl_library( 141*7594170eSAndroid Build Coastguard Worker name = dep1, 142*7594170eSAndroid Build Coastguard Worker srcs = [DEP1_NAME], 143*7594170eSAndroid Build Coastguard Worker root = ROOT1, 144*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 145*7594170eSAndroid Build Coastguard Worker ) 146*7594170eSAndroid Build Coastguard Worker hidl_library( 147*7594170eSAndroid Build Coastguard Worker name = dep2, 148*7594170eSAndroid Build Coastguard Worker srcs = [DEP2_NAME], 149*7594170eSAndroid Build Coastguard Worker deps = [ 150*7594170eSAndroid Build Coastguard Worker ":" + dep3, 151*7594170eSAndroid Build Coastguard Worker ], 152*7594170eSAndroid Build Coastguard Worker root = ROOT2, 153*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 154*7594170eSAndroid Build Coastguard Worker ) 155*7594170eSAndroid Build Coastguard Worker hidl_library( 156*7594170eSAndroid Build Coastguard Worker name = dep3, 157*7594170eSAndroid Build Coastguard Worker srcs = [DEP3_NAME], 158*7594170eSAndroid Build Coastguard Worker root = ROOT2, 159*7594170eSAndroid Build Coastguard Worker tags = ["manual"], 160*7594170eSAndroid Build Coastguard Worker ) 161*7594170eSAndroid Build Coastguard Worker hidl_info_simple_test( 162*7594170eSAndroid Build Coastguard Worker name = test_name, 163*7594170eSAndroid Build Coastguard Worker target_under_test = test_base_name, 164*7594170eSAndroid Build Coastguard Worker ) 165*7594170eSAndroid Build Coastguard Worker 166*7594170eSAndroid Build Coastguard Worker return test_name 167*7594170eSAndroid Build Coastguard Worker 168*7594170eSAndroid Build Coastguard Workerdef hidl_library_test_suite(name): 169*7594170eSAndroid Build Coastguard Worker _setup_roots() 170*7594170eSAndroid Build Coastguard Worker native.test_suite( 171*7594170eSAndroid Build Coastguard Worker name = name, 172*7594170eSAndroid Build Coastguard Worker tests = [ 173*7594170eSAndroid Build Coastguard Worker _test_hidl_info_simple(), 174*7594170eSAndroid Build Coastguard Worker ], 175*7594170eSAndroid Build Coastguard Worker ) 176