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