blob: c93055a512c5fe23c14a5cc8f29d81f3a3f35fee [file] [log] [blame]
Paul Duffinf7f65da2021-03-10 15:00:46 +00001// Copyright (C) 2021 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sdk
16
Paul Duffin4a1d4512021-03-18 10:12:26 +000017import (
Paul Duffin7c475152021-06-09 16:17:58 +010018 "fmt"
19 "path/filepath"
Paul Duffin4a1d4512021-03-18 10:12:26 +000020 "testing"
21
22 "android/soong/android"
Paul Duffina57835e2021-04-19 13:23:06 +010023 "android/soong/java"
Paul Duffin4a1d4512021-03-18 10:12:26 +000024)
Paul Duffinf7f65da2021-03-10 15:00:46 +000025
Paul Duffin7c475152021-06-09 16:17:58 +010026// fixtureAddPlatformBootclasspathForBootclasspathFragment adds a platform_bootclasspath module that
27// references the bootclasspath fragment.
28func fixtureAddPlatformBootclasspathForBootclasspathFragment(apex, fragment string) android.FixturePreparer {
29 return android.GroupFixturePreparers(
30 // Add a platform_bootclasspath module.
31 android.FixtureAddTextFile("frameworks/base/boot/Android.bp", fmt.Sprintf(`
32 platform_bootclasspath {
33 name: "platform-bootclasspath",
34 fragments: [
35 {
36 apex: "%s",
37 module: "%s",
38 },
39 ],
40 }
41 `, apex, fragment)),
42 android.FixtureAddFile("frameworks/base/config/boot-profile.txt", nil),
Jiakai Zhang49b1eb62021-11-26 18:09:27 +000043 android.FixtureAddFile("frameworks/base/config/boot-image-profile.txt", nil),
Paul Duffinc8ead412021-06-07 19:28:15 +010044 android.FixtureAddFile("build/soong/scripts/check_boot_jars/package_allowed_list.txt", nil),
Paul Duffin7c475152021-06-09 16:17:58 +010045 )
46}
47
48// fixtureAddPrebuiltApexForBootclasspathFragment adds a prebuilt_apex that exports the fragment.
49func fixtureAddPrebuiltApexForBootclasspathFragment(apex, fragment string) android.FixturePreparer {
50 apexFile := fmt.Sprintf("%s.apex", apex)
51 dir := "prebuilts/apex"
52 return android.GroupFixturePreparers(
53 // A preparer to add a prebuilt apex to the test fixture.
54 android.FixtureAddTextFile(filepath.Join(dir, "Android.bp"), fmt.Sprintf(`
55 prebuilt_apex {
56 name: "%s",
57 src: "%s",
58 exported_bootclasspath_fragments: [
59 "%s",
60 ],
61 }
62 `, apex, apexFile, fragment)),
63 android.FixtureAddFile(filepath.Join(dir, apexFile), nil),
64 )
65}
66
Paul Duffina57835e2021-04-19 13:23:06 +010067func TestSnapshotWithBootclasspathFragment_ImageName(t *testing.T) {
68 result := android.GroupFixturePreparers(
69 prepareForSdkTestWithJava,
Paul Duffin023dba02021-04-22 01:45:29 +010070 java.PrepareForTestWithJavaDefaultModules,
Paul Duffina57835e2021-04-19 13:23:06 +010071 prepareForSdkTestWithApex,
72
73 // Some additional files needed for the art apex.
74 android.FixtureMergeMockFs(android.MockFS{
75 "com.android.art.avbpubkey": nil,
76 "com.android.art.pem": nil,
77 "system/sepolicy/apex/com.android.art-file_contexts": nil,
78 }),
Paul Duffin023dba02021-04-22 01:45:29 +010079
Paul Duffin7c475152021-06-09 16:17:58 +010080 // Add a platform_bootclasspath that depends on the fragment.
81 fixtureAddPlatformBootclasspathForBootclasspathFragment("com.android.art", "mybootclasspathfragment"),
Paul Duffin023dba02021-04-22 01:45:29 +010082
Paul Duffina57835e2021-04-19 13:23:06 +010083 java.FixtureConfigureBootJars("com.android.art:mybootlib"),
84 android.FixtureWithRootAndroidBp(`
85 sdk {
86 name: "mysdk",
87 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffina57835e2021-04-19 13:23:06 +010088 }
89
90 apex {
91 name: "com.android.art",
92 key: "com.android.art.key",
93 bootclasspath_fragments: [
94 "mybootclasspathfragment",
95 ],
96 updatable: false,
97 }
98
99 bootclasspath_fragment {
100 name: "mybootclasspathfragment",
101 image_name: "art",
Paul Duffinf23bc472021-04-27 12:42:20 +0100102 contents: ["mybootlib"],
Paul Duffina57835e2021-04-19 13:23:06 +0100103 apex_available: ["com.android.art"],
Paul Duffin9fd56472022-03-31 15:42:30 +0100104 hidden_api: {
105 split_packages: ["*"],
106 },
Paul Duffina57835e2021-04-19 13:23:06 +0100107 }
108
109 apex_key {
110 name: "com.android.art.key",
111 public_key: "com.android.art.avbpubkey",
112 private_key: "com.android.art.pem",
113 }
114
115 java_library {
116 name: "mybootlib",
117 srcs: ["Test.java"],
118 system_modules: "none",
119 sdk_version: "none",
120 compile_dex: true,
121 apex_available: ["com.android.art"],
122 }
123 `),
124 ).RunTest(t)
125
Paul Duffin7c475152021-06-09 16:17:58 +0100126 // A preparer to update the test fixture used when processing an unpackage snapshot.
127 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("com.android.art", "mybootclasspathfragment")
Paul Duffin023dba02021-04-22 01:45:29 +0100128
Paul Duffina57835e2021-04-19 13:23:06 +0100129 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000130 checkAndroidBpContents(`
Paul Duffina57835e2021-04-19 13:23:06 +0100131// This is auto-generated. DO NOT EDIT.
132
133prebuilt_bootclasspath_fragment {
134 name: "mybootclasspathfragment",
135 prefer: false,
136 visibility: ["//visibility:public"],
137 apex_available: ["com.android.art"],
138 image_name: "art",
Paul Duffin2dc665b2021-04-23 16:58:51 +0100139 contents: ["mybootlib"],
Paul Duffinda286f42021-06-29 11:59:23 +0100140 hidden_api: {
Paul Duffinda286f42021-06-29 11:59:23 +0100141 annotation_flags: "hiddenapi/annotation-flags.csv",
142 metadata: "hiddenapi/metadata.csv",
143 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100144 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100145 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
146 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffinda286f42021-06-29 11:59:23 +0100147 },
Paul Duffina57835e2021-04-19 13:23:06 +0100148}
149
150java_import {
151 name: "mybootlib",
152 prefer: false,
153 visibility: ["//visibility:public"],
154 apex_available: ["com.android.art"],
Paul Duffin5c211452021-07-15 12:42:44 +0100155 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffina57835e2021-04-19 13:23:06 +0100156}
157`),
Paul Duffina57835e2021-04-19 13:23:06 +0100158 checkAllCopyRules(`
Paul Duffinda286f42021-06-29 11:59:23 +0100159.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
160.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
161.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100162.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100163.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
164.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100165.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffinda286f42021-06-29 11:59:23 +0100166 `),
Paul Duffin7c475152021-06-09 16:17:58 +0100167 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffinc8ead412021-06-07 19:28:15 +0100168
169 // Check the behavior of the snapshot without the source.
170 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
171 // Make sure that the boot jars package check rule includes the dex jar retrieved from the prebuilt apex.
172 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/prebuilts/apex/com.android.art.deapexer/android_common/deapexer/javalib/mybootlib.jar")
173 }),
174
Paul Duffin7c475152021-06-09 16:17:58 +0100175 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
176 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffina57835e2021-04-19 13:23:06 +0100177 )
Paul Duffinc8ead412021-06-07 19:28:15 +0100178
179 // Make sure that the boot jars package check rule includes the dex jar created from the source.
180 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/mybootlib/android_common_apex10000/aligned/mybootlib.jar")
181}
182
183// checkBootJarsPackageCheckRule checks that the supplied module is an input to the boot jars
184// package check rule.
185func checkBootJarsPackageCheckRule(t *testing.T, result *android.TestResult, expectedModule string) {
186 platformBcp := result.ModuleForTests("platform-bootclasspath", "android_common")
187 bootJarsCheckRule := platformBcp.Rule("boot_jars_package_check")
188 command := bootJarsCheckRule.RuleParams.Command
189 expectedCommandArgs := " out/soong/host/linux-x86/bin/dexdump build/soong/scripts/check_boot_jars/package_allowed_list.txt " + expectedModule + " &&"
190 android.AssertStringDoesContain(t, "boot jars package check", command, expectedCommandArgs)
Paul Duffina57835e2021-04-19 13:23:06 +0100191}
192
Paul Duffin4e7d1c42022-05-13 13:12:19 +0000193func testSnapshotWithBootClasspathFragment_Contents(t *testing.T, sdk string, copyRules string) {
Paul Duffin4a1d4512021-03-18 10:12:26 +0000194 result := android.GroupFixturePreparers(
195 prepareForSdkTestWithJava,
Paul Duffin895c7142021-04-25 13:40:15 +0100196 java.PrepareForTestWithJavaDefaultModules,
197 java.PrepareForTestWithJavaSdkLibraryFiles,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100198 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"),
satayevd604b212021-07-21 14:23:52 +0100199 java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:myothersdklibrary"),
Paul Duffin7c475152021-06-09 16:17:58 +0100200 prepareForSdkTestWithApex,
201
202 // Add a platform_bootclasspath that depends on the fragment.
203 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
204
Paul Duffin4e7d1c42022-05-13 13:12:19 +0000205 android.FixtureWithRootAndroidBp(sdk+`
Paul Duffin7c475152021-06-09 16:17:58 +0100206 apex {
207 name: "myapex",
208 key: "myapex.key",
209 min_sdk_version: "2",
210 bootclasspath_fragments: ["mybootclasspathfragment"],
211 }
212
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100213 bootclasspath_fragment {
214 name: "mybootclasspathfragment",
Paul Duffin7c475152021-06-09 16:17:58 +0100215 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100216 contents: [
217 // This should be automatically added to the sdk_snapshot as a java_boot_libs module.
218 "mybootlib",
219 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
220 "myothersdklibrary",
221 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100222 api: {
223 stub_libs: ["mysdklibrary"],
224 },
225 core_platform_api: {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100226 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
Paul Duffin895c7142021-04-25 13:40:15 +0100227 stub_libs: ["mycoreplatform"],
228 },
Paul Duffin9fd56472022-03-31 15:42:30 +0100229 hidden_api: {
230 split_packages: ["*"],
231 },
Paul Duffina57835e2021-04-19 13:23:06 +0100232 }
233
234 java_library {
235 name: "mybootlib",
Paul Duffin7c475152021-06-09 16:17:58 +0100236 apex_available: ["myapex"],
Paul Duffina57835e2021-04-19 13:23:06 +0100237 srcs: ["Test.java"],
238 system_modules: "none",
239 sdk_version: "none",
Paul Duffin7c475152021-06-09 16:17:58 +0100240 min_sdk_version: "2",
Paul Duffina57835e2021-04-19 13:23:06 +0100241 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100242 permitted_packages: ["mybootlib"],
Paul Duffin4a1d4512021-03-18 10:12:26 +0000243 }
Paul Duffin895c7142021-04-25 13:40:15 +0100244
245 java_sdk_library {
246 name: "mysdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100247 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100248 srcs: ["Test.java"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100249 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100250 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100251 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100252 }
253
254 java_sdk_library {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100255 name: "myothersdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100256 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100257 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100258 compile_dex: true,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100259 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100260 min_sdk_version: "2",
261 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100262 }
263
264 java_sdk_library {
Paul Duffin895c7142021-04-25 13:40:15 +0100265 name: "mycoreplatform",
Paul Duffin7c475152021-06-09 16:17:58 +0100266 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100267 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100268 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100269 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100270 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100271 }
Paul Duffin4a1d4512021-03-18 10:12:26 +0000272 `),
273 ).RunTest(t)
Paul Duffinf7f65da2021-03-10 15:00:46 +0000274
Paul Duffin7c475152021-06-09 16:17:58 +0100275 // A preparer to update the test fixture used when processing an unpackage snapshot.
276 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
277
Paul Duffin36474d32021-03-12 12:19:43 +0000278 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000279 checkAndroidBpContents(`
Paul Duffinf7f65da2021-03-10 15:00:46 +0000280// This is auto-generated. DO NOT EDIT.
281
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100282prebuilt_bootclasspath_fragment {
283 name: "mybootclasspathfragment",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000284 prefer: false,
285 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100286 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100287 contents: [
288 "mybootlib",
289 "myothersdklibrary",
290 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100291 api: {
292 stub_libs: ["mysdklibrary"],
293 },
294 core_platform_api: {
295 stub_libs: ["mycoreplatform"],
296 },
Paul Duffin2fef1362021-04-15 13:32:00 +0100297 hidden_api: {
Paul Duffin2fef1362021-04-15 13:32:00 +0100298 annotation_flags: "hiddenapi/annotation-flags.csv",
299 metadata: "hiddenapi/metadata.csv",
300 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100301 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100302 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
303 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100304 },
Paul Duffina57835e2021-04-19 13:23:06 +0100305}
306
307java_import {
308 name: "mybootlib",
309 prefer: false,
310 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100311 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100312 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100313 permitted_packages: ["mybootlib"],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000314}
Paul Duffin895c7142021-04-25 13:40:15 +0100315
316java_sdk_library_import {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100317 name: "myothersdklibrary",
318 prefer: false,
319 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100320 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100321 shared_library: true,
322 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100323 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100324 public: {
325 jars: ["sdk_library/public/myothersdklibrary-stubs.jar"],
326 stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"],
327 current_api: "sdk_library/public/myothersdklibrary.txt",
328 removed_api: "sdk_library/public/myothersdklibrary-removed.txt",
329 sdk_version: "current",
330 },
331}
332
333java_sdk_library_import {
Paul Duffin895c7142021-04-25 13:40:15 +0100334 name: "mysdklibrary",
335 prefer: false,
336 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100337 apex_available: ["myapex"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100338 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100339 public: {
340 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
341 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
342 current_api: "sdk_library/public/mysdklibrary.txt",
343 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
344 sdk_version: "current",
345 },
346}
347
348java_sdk_library_import {
349 name: "mycoreplatform",
350 prefer: false,
351 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100352 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100353 shared_library: true,
354 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100355 public: {
356 jars: ["sdk_library/public/mycoreplatform-stubs.jar"],
357 stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"],
358 current_api: "sdk_library/public/mycoreplatform.txt",
359 removed_api: "sdk_library/public/mycoreplatform-removed.txt",
360 sdk_version: "current",
361 },
362}
Paul Duffina10bd3c2021-05-12 13:46:54 +0100363 `),
Paul Duffin4e7d1c42022-05-13 13:12:19 +0000364 checkAllCopyRules(copyRules),
Paul Duffin7c475152021-06-09 16:17:58 +0100365 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffind061d402021-06-07 21:36:01 +0100366 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
367 module := result.ModuleForTests("platform-bootclasspath", "android_common")
368 var rule android.TestingBuildParams
369 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv")
370 java.CheckHiddenAPIRuleInputs(t, "monolithic flags", `
371 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/annotation-flags-from-classes.csv
372 out/soong/hiddenapi/hiddenapi-stub-flags.txt
373 snapshot/hiddenapi/annotation-flags.csv
374 `, rule)
375
376 rule = module.Output("out/soong/hiddenapi/hiddenapi-unsupported.csv")
377 java.CheckHiddenAPIRuleInputs(t, "monolithic metadata", `
378 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/metadata-from-classes.csv
379 snapshot/hiddenapi/metadata.csv
380 `, rule)
381
382 rule = module.Output("out/soong/hiddenapi/hiddenapi-index.csv")
383 java.CheckHiddenAPIRuleInputs(t, "monolithic index", `
384 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/index-from-classes.csv
385 snapshot/hiddenapi/index.csv
386 `, rule)
Paul Duffin630b11e2021-07-15 13:35:26 +0100387
Paul Duffin8d007e92021-07-22 12:00:49 +0100388 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid")
Paul Duffin280bae62021-07-20 18:03:53 +0100389 android.AssertStringDoesContain(t, "verify-overlaps", rule.RuleParams.Command, " snapshot/hiddenapi/filtered-flags.csv:snapshot/hiddenapi/signature-patterns.csv ")
Paul Duffind061d402021-06-07 21:36:01 +0100390 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100391 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
Paul Duffin8d007e92021-07-22 12:00:49 +0100392 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
393 module := result.ModuleForTests("platform-bootclasspath", "android_common")
394 rule := module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid")
Paul Duffin280bae62021-07-20 18:03:53 +0100395 android.AssertStringDoesContain(t, "verify-overlaps", rule.RuleParams.Command, " out/soong/.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv:out/soong/.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv ")
Paul Duffin8d007e92021-07-22 12:00:49 +0100396 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100397 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
398 )
Paul Duffinf7f65da2021-03-10 15:00:46 +0000399}
Paul Duffin04b4a192021-03-18 11:05:31 +0000400
Paul Duffin4e7d1c42022-05-13 13:12:19 +0000401func TestSnapshotWithBootClasspathFragment_Contents(t *testing.T) {
402 t.Run("added-directly", func(t *testing.T) {
403 testSnapshotWithBootClasspathFragment_Contents(t, `
404 sdk {
405 name: "mysdk",
406 bootclasspath_fragments: ["mybootclasspathfragment"],
407 java_sdk_libs: [
408 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
409 // a java_sdk_libs module because it is used in the mybootclasspathfragment's
410 // api.stub_libs property. However, it is specified here to ensure that duplicates are
411 // correctly deduped.
412 "mysdklibrary",
413 ],
414 }
415 `, `
416.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
417.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
418.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
419.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
420.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
421.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
422.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
423.intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar
424.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt
425.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt
426.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
427.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
428.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
429.intermediates/mycoreplatform.stubs/android_common/javac/mycoreplatform.stubs.jar -> sdk_library/public/mycoreplatform-stubs.jar
430.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt
431.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt
432`)
433 })
434
435 copyBootclasspathFragmentFromApexVariantRules := `
436.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
437.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
438.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/index.csv -> hiddenapi/index.csv
439.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
440.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
441.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
442.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
443.intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar
444.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt
445.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt
446.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
447.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
448.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
449.intermediates/mycoreplatform.stubs/android_common/javac/mycoreplatform.stubs.jar -> sdk_library/public/mycoreplatform-stubs.jar
450.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt
451.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt
452`
453 t.Run("added-via-apex", func(t *testing.T) {
454 testSnapshotWithBootClasspathFragment_Contents(t, `
455 sdk {
456 name: "mysdk",
457 apexes: ["myapex"],
458 }
459 `, copyBootclasspathFragmentFromApexVariantRules)
460 })
461
462 t.Run("added-directly-and-indirectly", func(t *testing.T) {
463 testSnapshotWithBootClasspathFragment_Contents(t, `
464 sdk {
465 name: "mysdk",
466 apexes: ["myapex"],
467 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
468 // a bootclasspath_fragments module because it is used in the myapex's
469 // bootclasspath_fragments property. However, it is specified here to ensure that duplicates
470 // are correctly deduped.
471 bootclasspath_fragments: ["mybootclasspathfragment"],
472 java_sdk_libs: [
473 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
474 // a java_sdk_libs module because it is used in the mybootclasspathfragment's
475 // api.stub_libs property. However, it is specified here to ensure that duplicates are
476 // correctly deduped.
477 "mysdklibrary",
478 ],
479 }
480 `, copyBootclasspathFragmentFromApexVariantRules)
481 })
482}
483
Paul Duffin51227d82021-05-18 12:54:27 +0100484// TestSnapshotWithBootClasspathFragment_Fragments makes sure that the fragments property of a
485// bootclasspath_fragment is correctly output to the sdk snapshot.
486func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) {
487 result := android.GroupFixturePreparers(
488 prepareForSdkTestWithJava,
489 java.PrepareForTestWithJavaDefaultModules,
490 java.PrepareForTestWithJavaSdkLibraryFiles,
491 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary"),
satayevabcd5972021-08-06 17:49:46 +0100492 java.FixtureConfigureApexBootJars("someapex:mysdklibrary", "myotherapex:myotherlib"),
Paul Duffin51227d82021-05-18 12:54:27 +0100493 prepareForSdkTestWithApex,
494
495 // Some additional files needed for the myotherapex.
496 android.FixtureMergeMockFs(android.MockFS{
497 "system/sepolicy/apex/myotherapex-file_contexts": nil,
498 "myotherapex/apex_manifest.json": nil,
499 "myotherapex/Test.java": nil,
500 }),
501
502 android.FixtureAddTextFile("myotherapex/Android.bp", `
503 apex {
504 name: "myotherapex",
505 key: "myapex.key",
506 min_sdk_version: "2",
507 bootclasspath_fragments: ["myotherbootclasspathfragment"],
508 }
509
510 bootclasspath_fragment {
511 name: "myotherbootclasspathfragment",
512 apex_available: ["myotherapex"],
513 contents: [
514 "myotherlib",
515 ],
Paul Duffin9fd56472022-03-31 15:42:30 +0100516 hidden_api: {
517 split_packages: ["*"],
518 },
Paul Duffin51227d82021-05-18 12:54:27 +0100519 }
520
521 java_library {
522 name: "myotherlib",
523 apex_available: ["myotherapex"],
524 srcs: ["Test.java"],
525 min_sdk_version: "2",
526 permitted_packages: ["myothersdklibrary"],
527 compile_dex: true,
528 }
529 `),
530
531 android.FixtureWithRootAndroidBp(`
532 sdk {
533 name: "mysdk",
534 bootclasspath_fragments: ["mybootclasspathfragment"],
535 }
536
537 bootclasspath_fragment {
538 name: "mybootclasspathfragment",
539 contents: [
540 "mysdklibrary",
541 ],
542 fragments: [
543 {
544 apex: "myotherapex",
545 module: "myotherbootclasspathfragment"
546 },
547 ],
Paul Duffin9fd56472022-03-31 15:42:30 +0100548 hidden_api: {
549 split_packages: ["*"],
550 },
Paul Duffin51227d82021-05-18 12:54:27 +0100551 }
552
553 java_sdk_library {
554 name: "mysdklibrary",
555 srcs: ["Test.java"],
556 shared_library: false,
557 public: {enabled: true},
558 min_sdk_version: "2",
559 }
560 `),
561 ).RunTest(t)
562
563 // A preparer to update the test fixture used when processing an unpackage snapshot.
564 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
565
566 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000567 checkAndroidBpContents(`
Paul Duffin51227d82021-05-18 12:54:27 +0100568// This is auto-generated. DO NOT EDIT.
569
570prebuilt_bootclasspath_fragment {
571 name: "mybootclasspathfragment",
572 prefer: false,
573 visibility: ["//visibility:public"],
574 apex_available: ["//apex_available:platform"],
575 contents: ["mysdklibrary"],
576 fragments: [
577 {
578 apex: "myotherapex",
579 module: "myotherbootclasspathfragment",
580 },
581 ],
582 hidden_api: {
Paul Duffin51227d82021-05-18 12:54:27 +0100583 annotation_flags: "hiddenapi/annotation-flags.csv",
584 metadata: "hiddenapi/metadata.csv",
585 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100586 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100587 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
588 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin51227d82021-05-18 12:54:27 +0100589 },
590}
591
592java_sdk_library_import {
593 name: "mysdklibrary",
594 prefer: false,
595 visibility: ["//visibility:public"],
596 apex_available: ["//apex_available:platform"],
597 shared_library: false,
598 public: {
599 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
600 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
601 current_api: "sdk_library/public/mysdklibrary.txt",
602 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
603 sdk_version: "current",
604 },
605}
606 `),
607 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
608 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
609 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
610 )
611}
612
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100613// Test that bootclasspath_fragment works with sdk.
614func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
Paul Duffin04b4a192021-03-18 11:05:31 +0000615 android.GroupFixturePreparers(
616 prepareForSdkTestWithApex,
617 prepareForSdkTestWithJava,
Paul Duffin8018e502021-05-21 19:28:09 +0100618 android.FixtureAddFile("java/mybootlib.jar", nil),
Paul Duffin04b4a192021-03-18 11:05:31 +0000619 android.FixtureWithRootAndroidBp(`
620 sdk {
621 name: "mysdk",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100622 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000623 }
624
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100625 bootclasspath_fragment {
626 name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000627 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100628 contents: ["mybootlib"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000629 apex_available: ["myapex"],
Paul Duffin9fd56472022-03-31 15:42:30 +0100630 hidden_api: {
631 split_packages: ["*"],
632 },
Paul Duffin04b4a192021-03-18 11:05:31 +0000633 }
634
Paul Duffin8018e502021-05-21 19:28:09 +0100635 java_library {
636 name: "mybootlib",
637 apex_available: ["myapex"],
638 srcs: ["Test.java"],
639 system_modules: "none",
640 sdk_version: "none",
641 min_sdk_version: "1",
642 compile_dex: true,
643 }
644
Paul Duffin04b4a192021-03-18 11:05:31 +0000645 sdk_snapshot {
646 name: "mysdk@1",
Paul Duffin8018e502021-05-21 19:28:09 +0100647 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@1"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000648 }
649
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100650 prebuilt_bootclasspath_fragment {
Paul Duffin8018e502021-05-21 19:28:09 +0100651 name: "mysdk_mybootclasspathfragment@1",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100652 sdk_member_name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000653 prefer: false,
654 visibility: ["//visibility:public"],
655 apex_available: [
656 "myapex",
657 ],
658 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100659 contents: ["mysdk_mybootlib@1"],
660 }
661
662 java_import {
663 name: "mysdk_mybootlib@1",
664 sdk_member_name: "mybootlib",
665 visibility: ["//visibility:public"],
666 apex_available: ["com.android.art"],
667 jars: ["java/mybootlib.jar"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000668 }
669 `),
670 ).RunTest(t)
671}
Paul Duffin7c955552021-04-19 13:23:53 +0100672
673func TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) {
674 result := android.GroupFixturePreparers(
675 prepareForSdkTestWithJava,
Paul Duffin475daaf2021-05-13 00:57:55 +0100676 java.PrepareForTestWithJavaDefaultModules,
677 java.PrepareForTestWithJavaSdkLibraryFiles,
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000678 java.FixtureWithLastReleaseApis("mysdklibrary", "mynewlibrary"),
679 java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:mynewlibrary"),
Paul Duffin475daaf2021-05-13 00:57:55 +0100680 prepareForSdkTestWithApex,
Paul Duffin7c475152021-06-09 16:17:58 +0100681
682 // Add a platform_bootclasspath that depends on the fragment.
683 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
684
Paul Duffin7c955552021-04-19 13:23:53 +0100685 android.MockFS{
686 "my-blocked.txt": nil,
687 "my-max-target-o-low-priority.txt": nil,
688 "my-max-target-p.txt": nil,
689 "my-max-target-q.txt": nil,
690 "my-max-target-r-low-priority.txt": nil,
691 "my-removed.txt": nil,
692 "my-unsupported-packages.txt": nil,
693 "my-unsupported.txt": nil,
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000694 "my-new-max-target-q.txt": nil,
Paul Duffin7c955552021-04-19 13:23:53 +0100695 }.AddToFixture(),
696 android.FixtureWithRootAndroidBp(`
697 sdk {
698 name: "mysdk",
699 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin7c955552021-04-19 13:23:53 +0100700 }
701
Paul Duffin475daaf2021-05-13 00:57:55 +0100702 apex {
703 name: "myapex",
704 key: "myapex.key",
705 min_sdk_version: "1",
706 bootclasspath_fragments: ["mybootclasspathfragment"],
707 }
708
Paul Duffin7c955552021-04-19 13:23:53 +0100709 bootclasspath_fragment {
710 name: "mybootclasspathfragment",
Paul Duffin475daaf2021-05-13 00:57:55 +0100711 apex_available: ["myapex"],
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000712 contents: ["mybootlib", "mynewlibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100713 api: {
714 stub_libs: ["mysdklibrary"],
715 },
Paul Duffin7c955552021-04-19 13:23:53 +0100716 hidden_api: {
717 unsupported: [
718 "my-unsupported.txt",
719 ],
720 removed: [
721 "my-removed.txt",
722 ],
723 max_target_r_low_priority: [
724 "my-max-target-r-low-priority.txt",
725 ],
726 max_target_q: [
727 "my-max-target-q.txt",
728 ],
729 max_target_p: [
730 "my-max-target-p.txt",
731 ],
732 max_target_o_low_priority: [
733 "my-max-target-o-low-priority.txt",
734 ],
735 blocked: [
736 "my-blocked.txt",
737 ],
738 unsupported_packages: [
739 "my-unsupported-packages.txt",
740 ],
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000741 split_packages: ["sdklibrary"],
742 package_prefixes: ["sdklibrary.all.mine"],
743 single_packages: ["sdklibrary.mine"],
Paul Duffin7c955552021-04-19 13:23:53 +0100744 },
745 }
746
747 java_library {
748 name: "mybootlib",
Paul Duffin475daaf2021-05-13 00:57:55 +0100749 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100750 srcs: ["Test.java"],
751 system_modules: "none",
752 sdk_version: "none",
Paul Duffin475daaf2021-05-13 00:57:55 +0100753 min_sdk_version: "1",
Paul Duffin7c955552021-04-19 13:23:53 +0100754 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100755 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100756 }
Paul Duffin475daaf2021-05-13 00:57:55 +0100757
758 java_sdk_library {
759 name: "mysdklibrary",
760 srcs: ["Test.java"],
761 compile_dex: true,
762 public: {enabled: true},
Paul Duffin869de142021-07-15 14:14:41 +0100763 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100764 }
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000765
766 java_sdk_library {
767 name: "mynewlibrary",
768 apex_available: ["myapex"],
769 srcs: ["Test.java"],
770 min_sdk_version: "10",
771 compile_dex: true,
772 public: {enabled: true},
773 permitted_packages: ["mysdklibrary"],
774 hidden_api: {
775 max_target_q: [
776 "my-new-max-target-q.txt",
777 ],
778 split_packages: ["sdklibrary", "newlibrary"],
779 package_prefixes: ["newlibrary.all.mine"],
780 single_packages: ["newlibrary.mine"],
781 },
782 }
Paul Duffin7c955552021-04-19 13:23:53 +0100783 `),
784 ).RunTest(t)
785
Paul Duffin7c475152021-06-09 16:17:58 +0100786 // A preparer to update the test fixture used when processing an unpackage snapshot.
787 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
788
Paul Duffin7c955552021-04-19 13:23:53 +0100789 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000790 checkAndroidBpContents(`
Paul Duffin7c955552021-04-19 13:23:53 +0100791// This is auto-generated. DO NOT EDIT.
792
793prebuilt_bootclasspath_fragment {
794 name: "mybootclasspathfragment",
795 prefer: false,
796 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100797 apex_available: ["myapex"],
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000798 contents: [
799 "mybootlib",
800 "mynewlibrary",
801 ],
Paul Duffin475daaf2021-05-13 00:57:55 +0100802 api: {
803 stub_libs: ["mysdklibrary"],
804 },
Paul Duffin7c955552021-04-19 13:23:53 +0100805 hidden_api: {
806 unsupported: ["hiddenapi/my-unsupported.txt"],
807 removed: ["hiddenapi/my-removed.txt"],
808 max_target_r_low_priority: ["hiddenapi/my-max-target-r-low-priority.txt"],
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000809 max_target_q: [
810 "hiddenapi/my-max-target-q.txt",
811 "hiddenapi/my-new-max-target-q.txt",
812 ],
Paul Duffin7c955552021-04-19 13:23:53 +0100813 max_target_p: ["hiddenapi/my-max-target-p.txt"],
814 max_target_o_low_priority: ["hiddenapi/my-max-target-o-low-priority.txt"],
815 blocked: ["hiddenapi/my-blocked.txt"],
816 unsupported_packages: ["hiddenapi/my-unsupported-packages.txt"],
Paul Duffin2fef1362021-04-15 13:32:00 +0100817 annotation_flags: "hiddenapi/annotation-flags.csv",
818 metadata: "hiddenapi/metadata.csv",
819 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100820 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100821 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
822 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin7c955552021-04-19 13:23:53 +0100823 },
824}
825
826java_import {
827 name: "mybootlib",
828 prefer: false,
829 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100830 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100831 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100832 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100833}
Paul Duffin475daaf2021-05-13 00:57:55 +0100834
835java_sdk_library_import {
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000836 name: "mynewlibrary",
837 prefer: false,
838 visibility: ["//visibility:public"],
839 apex_available: ["myapex"],
840 shared_library: true,
841 compile_dex: true,
842 permitted_packages: ["mysdklibrary"],
843 public: {
844 jars: ["sdk_library/public/mynewlibrary-stubs.jar"],
845 stub_srcs: ["sdk_library/public/mynewlibrary_stub_sources"],
846 current_api: "sdk_library/public/mynewlibrary.txt",
847 removed_api: "sdk_library/public/mynewlibrary-removed.txt",
848 sdk_version: "current",
849 },
850}
851
852java_sdk_library_import {
Paul Duffin475daaf2021-05-13 00:57:55 +0100853 name: "mysdklibrary",
854 prefer: false,
855 visibility: ["//visibility:public"],
856 apex_available: ["//apex_available:platform"],
857 shared_library: true,
858 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100859 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100860 public: {
861 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
862 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
863 current_api: "sdk_library/public/mysdklibrary.txt",
864 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
865 sdk_version: "current",
866 },
867}
Paul Duffin7c955552021-04-19 13:23:53 +0100868`),
869 checkAllCopyRules(`
870my-unsupported.txt -> hiddenapi/my-unsupported.txt
871my-removed.txt -> hiddenapi/my-removed.txt
872my-max-target-r-low-priority.txt -> hiddenapi/my-max-target-r-low-priority.txt
873my-max-target-q.txt -> hiddenapi/my-max-target-q.txt
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000874my-new-max-target-q.txt -> hiddenapi/my-new-max-target-q.txt
Paul Duffin7c955552021-04-19 13:23:53 +0100875my-max-target-p.txt -> hiddenapi/my-max-target-p.txt
876my-max-target-o-low-priority.txt -> hiddenapi/my-max-target-o-low-priority.txt
877my-blocked.txt -> hiddenapi/my-blocked.txt
878my-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt
Paul Duffin2fef1362021-04-15 13:32:00 +0100879.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
880.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
881.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100882.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100883.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
884.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100885.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffin3f1ae0b2022-07-27 16:27:42 +0000886.intermediates/mynewlibrary.stubs/android_common/javac/mynewlibrary.stubs.jar -> sdk_library/public/mynewlibrary-stubs.jar
887.intermediates/mynewlibrary.stubs.source/android_common/metalava/mynewlibrary.stubs.source_api.txt -> sdk_library/public/mynewlibrary.txt
888.intermediates/mynewlibrary.stubs.source/android_common/metalava/mynewlibrary.stubs.source_removed.txt -> sdk_library/public/mynewlibrary-removed.txt
Paul Duffin475daaf2021-05-13 00:57:55 +0100889.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
890.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
891.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
Paul Duffin7c955552021-04-19 13:23:53 +0100892`),
Paul Duffin7c475152021-06-09 16:17:58 +0100893 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
894 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
895 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffin7c955552021-04-19 13:23:53 +0100896 )
897}