xref: /aosp_15_r20/build/bazel/rules/hidl/hidl_library_test.bzl (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
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