blob: bed2ecff70dac7d3110a4155d405d5d1e57f6e7c [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),
Paul Duffinc8ead412021-06-07 19:28:15 +010043 android.FixtureAddFile("build/soong/scripts/check_boot_jars/package_allowed_list.txt", nil),
Paul Duffin7c475152021-06-09 16:17:58 +010044 )
45}
46
47// fixtureAddPrebuiltApexForBootclasspathFragment adds a prebuilt_apex that exports the fragment.
48func fixtureAddPrebuiltApexForBootclasspathFragment(apex, fragment string) android.FixturePreparer {
49 apexFile := fmt.Sprintf("%s.apex", apex)
50 dir := "prebuilts/apex"
51 return android.GroupFixturePreparers(
52 // A preparer to add a prebuilt apex to the test fixture.
53 android.FixtureAddTextFile(filepath.Join(dir, "Android.bp"), fmt.Sprintf(`
54 prebuilt_apex {
55 name: "%s",
56 src: "%s",
57 exported_bootclasspath_fragments: [
58 "%s",
59 ],
60 }
61 `, apex, apexFile, fragment)),
62 android.FixtureAddFile(filepath.Join(dir, apexFile), nil),
63 )
64}
65
Paul Duffina57835e2021-04-19 13:23:06 +010066func TestSnapshotWithBootclasspathFragment_ImageName(t *testing.T) {
67 result := android.GroupFixturePreparers(
68 prepareForSdkTestWithJava,
Paul Duffin023dba02021-04-22 01:45:29 +010069 java.PrepareForTestWithJavaDefaultModules,
Paul Duffina57835e2021-04-19 13:23:06 +010070 prepareForSdkTestWithApex,
71
72 // Some additional files needed for the art apex.
73 android.FixtureMergeMockFs(android.MockFS{
74 "com.android.art.avbpubkey": nil,
75 "com.android.art.pem": nil,
76 "system/sepolicy/apex/com.android.art-file_contexts": nil,
77 }),
Paul Duffin023dba02021-04-22 01:45:29 +010078
Paul Duffin7c475152021-06-09 16:17:58 +010079 // Add a platform_bootclasspath that depends on the fragment.
80 fixtureAddPlatformBootclasspathForBootclasspathFragment("com.android.art", "mybootclasspathfragment"),
Paul Duffin023dba02021-04-22 01:45:29 +010081
Paul Duffina57835e2021-04-19 13:23:06 +010082 java.FixtureConfigureBootJars("com.android.art:mybootlib"),
83 android.FixtureWithRootAndroidBp(`
84 sdk {
85 name: "mysdk",
86 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffina57835e2021-04-19 13:23:06 +010087 }
88
89 apex {
90 name: "com.android.art",
91 key: "com.android.art.key",
92 bootclasspath_fragments: [
93 "mybootclasspathfragment",
94 ],
95 updatable: false,
96 }
97
98 bootclasspath_fragment {
99 name: "mybootclasspathfragment",
100 image_name: "art",
Paul Duffinf23bc472021-04-27 12:42:20 +0100101 contents: ["mybootlib"],
Paul Duffina57835e2021-04-19 13:23:06 +0100102 apex_available: ["com.android.art"],
103 }
104
105 apex_key {
106 name: "com.android.art.key",
107 public_key: "com.android.art.avbpubkey",
108 private_key: "com.android.art.pem",
109 }
110
111 java_library {
112 name: "mybootlib",
113 srcs: ["Test.java"],
114 system_modules: "none",
115 sdk_version: "none",
116 compile_dex: true,
117 apex_available: ["com.android.art"],
118 }
119 `),
120 ).RunTest(t)
121
Paul Duffin7c475152021-06-09 16:17:58 +0100122 // A preparer to update the test fixture used when processing an unpackage snapshot.
123 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("com.android.art", "mybootclasspathfragment")
Paul Duffin023dba02021-04-22 01:45:29 +0100124
Paul Duffina57835e2021-04-19 13:23:06 +0100125 CheckSnapshot(t, result, "mysdk", "",
126 checkUnversionedAndroidBpContents(`
127// This is auto-generated. DO NOT EDIT.
128
129prebuilt_bootclasspath_fragment {
130 name: "mybootclasspathfragment",
131 prefer: false,
132 visibility: ["//visibility:public"],
133 apex_available: ["com.android.art"],
134 image_name: "art",
Paul Duffin2dc665b2021-04-23 16:58:51 +0100135 contents: ["mybootlib"],
Paul Duffinda286f42021-06-29 11:59:23 +0100136 hidden_api: {
Paul Duffinda286f42021-06-29 11:59:23 +0100137 annotation_flags: "hiddenapi/annotation-flags.csv",
138 metadata: "hiddenapi/metadata.csv",
139 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100140 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin280bae62021-07-20 18:03:53 +0100141 stub_flags: "hiddenapi/filtered-stub-flags.csv",
142 all_flags: "hiddenapi/filtered-flags.csv",
Paul Duffinda286f42021-06-29 11:59:23 +0100143 },
Paul Duffina57835e2021-04-19 13:23:06 +0100144}
145
146java_import {
147 name: "mybootlib",
148 prefer: false,
149 visibility: ["//visibility:public"],
150 apex_available: ["com.android.art"],
Paul Duffin5c211452021-07-15 12:42:44 +0100151 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffina57835e2021-04-19 13:23:06 +0100152}
153`),
154 checkVersionedAndroidBpContents(`
155// This is auto-generated. DO NOT EDIT.
156
157prebuilt_bootclasspath_fragment {
158 name: "mysdk_mybootclasspathfragment@current",
159 sdk_member_name: "mybootclasspathfragment",
160 visibility: ["//visibility:public"],
161 apex_available: ["com.android.art"],
162 image_name: "art",
Paul Duffin2dc665b2021-04-23 16:58:51 +0100163 contents: ["mysdk_mybootlib@current"],
Paul Duffinda286f42021-06-29 11:59:23 +0100164 hidden_api: {
Paul Duffinda286f42021-06-29 11:59:23 +0100165 annotation_flags: "hiddenapi/annotation-flags.csv",
166 metadata: "hiddenapi/metadata.csv",
167 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100168 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin280bae62021-07-20 18:03:53 +0100169 stub_flags: "hiddenapi/filtered-stub-flags.csv",
170 all_flags: "hiddenapi/filtered-flags.csv",
Paul Duffinda286f42021-06-29 11:59:23 +0100171 },
Paul Duffina57835e2021-04-19 13:23:06 +0100172}
173
174java_import {
175 name: "mysdk_mybootlib@current",
176 sdk_member_name: "mybootlib",
177 visibility: ["//visibility:public"],
178 apex_available: ["com.android.art"],
Paul Duffin5c211452021-07-15 12:42:44 +0100179 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffina57835e2021-04-19 13:23:06 +0100180}
181
182sdk_snapshot {
183 name: "mysdk@current",
184 visibility: ["//visibility:public"],
185 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@current"],
186 java_boot_libs: ["mysdk_mybootlib@current"],
187}
188`),
189 checkAllCopyRules(`
Paul Duffinda286f42021-06-29 11:59:23 +0100190.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
191.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
192.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100193.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100194.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
195.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100196.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffinda286f42021-06-29 11:59:23 +0100197 `),
Paul Duffin7c475152021-06-09 16:17:58 +0100198 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffinc8ead412021-06-07 19:28:15 +0100199
200 // Check the behavior of the snapshot without the source.
201 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
202 // Make sure that the boot jars package check rule includes the dex jar retrieved from the prebuilt apex.
203 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/prebuilts/apex/com.android.art.deapexer/android_common/deapexer/javalib/mybootlib.jar")
204 }),
205
Paul Duffin7c475152021-06-09 16:17:58 +0100206 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
207 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffina57835e2021-04-19 13:23:06 +0100208 )
Paul Duffinc8ead412021-06-07 19:28:15 +0100209
210 // Make sure that the boot jars package check rule includes the dex jar created from the source.
211 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/mybootlib/android_common_apex10000/aligned/mybootlib.jar")
212}
213
214// checkBootJarsPackageCheckRule checks that the supplied module is an input to the boot jars
215// package check rule.
216func checkBootJarsPackageCheckRule(t *testing.T, result *android.TestResult, expectedModule string) {
217 platformBcp := result.ModuleForTests("platform-bootclasspath", "android_common")
218 bootJarsCheckRule := platformBcp.Rule("boot_jars_package_check")
219 command := bootJarsCheckRule.RuleParams.Command
220 expectedCommandArgs := " out/soong/host/linux-x86/bin/dexdump build/soong/scripts/check_boot_jars/package_allowed_list.txt " + expectedModule + " &&"
221 android.AssertStringDoesContain(t, "boot jars package check", command, expectedCommandArgs)
Paul Duffina57835e2021-04-19 13:23:06 +0100222}
223
224func TestSnapshotWithBootClasspathFragment_Contents(t *testing.T) {
Paul Duffin4a1d4512021-03-18 10:12:26 +0000225 result := android.GroupFixturePreparers(
226 prepareForSdkTestWithJava,
Paul Duffin895c7142021-04-25 13:40:15 +0100227 java.PrepareForTestWithJavaDefaultModules,
228 java.PrepareForTestWithJavaSdkLibraryFiles,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100229 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"),
satayevd604b212021-07-21 14:23:52 +0100230 java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:myothersdklibrary"),
Paul Duffin7c475152021-06-09 16:17:58 +0100231 prepareForSdkTestWithApex,
232
233 // Add a platform_bootclasspath that depends on the fragment.
234 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
235
Paul Duffin4a1d4512021-03-18 10:12:26 +0000236 android.FixtureWithRootAndroidBp(`
237 sdk {
238 name: "mysdk",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100239 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100240 java_sdk_libs: [
241 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
242 // a java_sdk_libs module because it is used in the mybootclasspathfragment's
243 // api.stub_libs property. However, it is specified here to ensure that duplicates are
244 // correctly deduped.
245 "mysdklibrary",
246 ],
Paul Duffin4a1d4512021-03-18 10:12:26 +0000247 }
Paul Duffinf7f65da2021-03-10 15:00:46 +0000248
Paul Duffin7c475152021-06-09 16:17:58 +0100249 apex {
250 name: "myapex",
251 key: "myapex.key",
252 min_sdk_version: "2",
253 bootclasspath_fragments: ["mybootclasspathfragment"],
254 }
255
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100256 bootclasspath_fragment {
257 name: "mybootclasspathfragment",
Paul Duffin7c475152021-06-09 16:17:58 +0100258 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100259 contents: [
260 // This should be automatically added to the sdk_snapshot as a java_boot_libs module.
261 "mybootlib",
262 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
263 "myothersdklibrary",
264 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100265 api: {
266 stub_libs: ["mysdklibrary"],
267 },
268 core_platform_api: {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100269 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
Paul Duffin895c7142021-04-25 13:40:15 +0100270 stub_libs: ["mycoreplatform"],
271 },
Paul Duffina57835e2021-04-19 13:23:06 +0100272 }
273
274 java_library {
275 name: "mybootlib",
Paul Duffin7c475152021-06-09 16:17:58 +0100276 apex_available: ["myapex"],
Paul Duffina57835e2021-04-19 13:23:06 +0100277 srcs: ["Test.java"],
278 system_modules: "none",
279 sdk_version: "none",
Paul Duffin7c475152021-06-09 16:17:58 +0100280 min_sdk_version: "2",
Paul Duffina57835e2021-04-19 13:23:06 +0100281 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100282 permitted_packages: ["mybootlib"],
Paul Duffin4a1d4512021-03-18 10:12:26 +0000283 }
Paul Duffin895c7142021-04-25 13:40:15 +0100284
285 java_sdk_library {
286 name: "mysdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100287 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100288 srcs: ["Test.java"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100289 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100290 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100291 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100292 }
293
294 java_sdk_library {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100295 name: "myothersdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100296 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100297 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100298 compile_dex: true,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100299 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100300 min_sdk_version: "2",
301 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100302 }
303
304 java_sdk_library {
Paul Duffin895c7142021-04-25 13:40:15 +0100305 name: "mycoreplatform",
Paul Duffin7c475152021-06-09 16:17:58 +0100306 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100307 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100308 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100309 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100310 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100311 }
Paul Duffin4a1d4512021-03-18 10:12:26 +0000312 `),
313 ).RunTest(t)
Paul Duffinf7f65da2021-03-10 15:00:46 +0000314
Paul Duffin7c475152021-06-09 16:17:58 +0100315 // A preparer to update the test fixture used when processing an unpackage snapshot.
316 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
317
Paul Duffin36474d32021-03-12 12:19:43 +0000318 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000319 checkUnversionedAndroidBpContents(`
320// This is auto-generated. DO NOT EDIT.
321
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100322prebuilt_bootclasspath_fragment {
323 name: "mybootclasspathfragment",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000324 prefer: false,
325 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100326 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100327 contents: [
328 "mybootlib",
329 "myothersdklibrary",
330 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100331 api: {
332 stub_libs: ["mysdklibrary"],
333 },
334 core_platform_api: {
335 stub_libs: ["mycoreplatform"],
336 },
Paul Duffin2fef1362021-04-15 13:32:00 +0100337 hidden_api: {
Paul Duffin2fef1362021-04-15 13:32:00 +0100338 annotation_flags: "hiddenapi/annotation-flags.csv",
339 metadata: "hiddenapi/metadata.csv",
340 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100341 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin280bae62021-07-20 18:03:53 +0100342 stub_flags: "hiddenapi/filtered-stub-flags.csv",
343 all_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100344 },
Paul Duffina57835e2021-04-19 13:23:06 +0100345}
346
347java_import {
348 name: "mybootlib",
349 prefer: false,
350 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100351 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100352 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100353 permitted_packages: ["mybootlib"],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000354}
Paul Duffin895c7142021-04-25 13:40:15 +0100355
356java_sdk_library_import {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100357 name: "myothersdklibrary",
358 prefer: false,
359 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100360 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100361 shared_library: true,
362 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100363 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100364 public: {
365 jars: ["sdk_library/public/myothersdklibrary-stubs.jar"],
366 stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"],
367 current_api: "sdk_library/public/myothersdklibrary.txt",
368 removed_api: "sdk_library/public/myothersdklibrary-removed.txt",
369 sdk_version: "current",
370 },
371}
372
373java_sdk_library_import {
Paul Duffin895c7142021-04-25 13:40:15 +0100374 name: "mysdklibrary",
375 prefer: false,
376 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100377 apex_available: ["myapex"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100378 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100379 public: {
380 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
381 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
382 current_api: "sdk_library/public/mysdklibrary.txt",
383 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
384 sdk_version: "current",
385 },
386}
387
388java_sdk_library_import {
389 name: "mycoreplatform",
390 prefer: false,
391 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100392 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100393 shared_library: true,
394 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100395 public: {
396 jars: ["sdk_library/public/mycoreplatform-stubs.jar"],
397 stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"],
398 current_api: "sdk_library/public/mycoreplatform.txt",
399 removed_api: "sdk_library/public/mycoreplatform-removed.txt",
400 sdk_version: "current",
401 },
402}
Paul Duffina10bd3c2021-05-12 13:46:54 +0100403 `),
Paul Duffinf7f65da2021-03-10 15:00:46 +0000404 checkVersionedAndroidBpContents(`
405// This is auto-generated. DO NOT EDIT.
406
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100407prebuilt_bootclasspath_fragment {
408 name: "mysdk_mybootclasspathfragment@current",
409 sdk_member_name: "mybootclasspathfragment",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000410 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100411 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100412 contents: [
413 "mysdk_mybootlib@current",
414 "mysdk_myothersdklibrary@current",
415 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100416 api: {
417 stub_libs: ["mysdk_mysdklibrary@current"],
418 },
419 core_platform_api: {
420 stub_libs: ["mysdk_mycoreplatform@current"],
421 },
Paul Duffin2fef1362021-04-15 13:32:00 +0100422 hidden_api: {
Paul Duffin2fef1362021-04-15 13:32:00 +0100423 annotation_flags: "hiddenapi/annotation-flags.csv",
424 metadata: "hiddenapi/metadata.csv",
425 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100426 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin280bae62021-07-20 18:03:53 +0100427 stub_flags: "hiddenapi/filtered-stub-flags.csv",
428 all_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100429 },
Paul Duffina57835e2021-04-19 13:23:06 +0100430}
431
432java_import {
433 name: "mysdk_mybootlib@current",
434 sdk_member_name: "mybootlib",
435 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100436 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100437 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100438 permitted_packages: ["mybootlib"],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000439}
440
Paul Duffin895c7142021-04-25 13:40:15 +0100441java_sdk_library_import {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100442 name: "mysdk_myothersdklibrary@current",
443 sdk_member_name: "myothersdklibrary",
444 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100445 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100446 shared_library: true,
447 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100448 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100449 public: {
450 jars: ["sdk_library/public/myothersdklibrary-stubs.jar"],
451 stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"],
452 current_api: "sdk_library/public/myothersdklibrary.txt",
453 removed_api: "sdk_library/public/myothersdklibrary-removed.txt",
454 sdk_version: "current",
455 },
456}
457
458java_sdk_library_import {
Paul Duffin895c7142021-04-25 13:40:15 +0100459 name: "mysdk_mysdklibrary@current",
460 sdk_member_name: "mysdklibrary",
461 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100462 apex_available: ["myapex"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100463 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100464 public: {
465 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
466 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
467 current_api: "sdk_library/public/mysdklibrary.txt",
468 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
469 sdk_version: "current",
470 },
471}
472
473java_sdk_library_import {
474 name: "mysdk_mycoreplatform@current",
475 sdk_member_name: "mycoreplatform",
476 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100477 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100478 shared_library: true,
479 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100480 public: {
481 jars: ["sdk_library/public/mycoreplatform-stubs.jar"],
482 stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"],
483 current_api: "sdk_library/public/mycoreplatform.txt",
484 removed_api: "sdk_library/public/mycoreplatform-removed.txt",
485 sdk_version: "current",
486 },
487}
488
Paul Duffinf7f65da2021-03-10 15:00:46 +0000489sdk_snapshot {
490 name: "mysdk@current",
491 visibility: ["//visibility:public"],
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100492 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@current"],
Paul Duffina57835e2021-04-19 13:23:06 +0100493 java_boot_libs: ["mysdk_mybootlib@current"],
Paul Duffin895c7142021-04-25 13:40:15 +0100494 java_sdk_libs: [
Paul Duffina10bd3c2021-05-12 13:46:54 +0100495 "mysdk_myothersdklibrary@current",
Paul Duffin895c7142021-04-25 13:40:15 +0100496 "mysdk_mysdklibrary@current",
497 "mysdk_mycoreplatform@current",
498 ],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000499}
Paul Duffina10bd3c2021-05-12 13:46:54 +0100500 `),
Paul Duffina57835e2021-04-19 13:23:06 +0100501 checkAllCopyRules(`
Paul Duffin2fef1362021-04-15 13:32:00 +0100502.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
503.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
504.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100505.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100506.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
507.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100508.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffina10bd3c2021-05-12 13:46:54 +0100509.intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar
510.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt
511.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt
Paul Duffin895c7142021-04-25 13:40:15 +0100512.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
513.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
514.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
515.intermediates/mycoreplatform.stubs/android_common/javac/mycoreplatform.stubs.jar -> sdk_library/public/mycoreplatform-stubs.jar
516.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt
517.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt
Paul Duffin7c475152021-06-09 16:17:58 +0100518`),
519 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffind061d402021-06-07 21:36:01 +0100520 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
521 module := result.ModuleForTests("platform-bootclasspath", "android_common")
522 var rule android.TestingBuildParams
523 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv")
524 java.CheckHiddenAPIRuleInputs(t, "monolithic flags", `
525 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/annotation-flags-from-classes.csv
526 out/soong/hiddenapi/hiddenapi-stub-flags.txt
527 snapshot/hiddenapi/annotation-flags.csv
528 `, rule)
529
530 rule = module.Output("out/soong/hiddenapi/hiddenapi-unsupported.csv")
531 java.CheckHiddenAPIRuleInputs(t, "monolithic metadata", `
532 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/metadata-from-classes.csv
533 snapshot/hiddenapi/metadata.csv
534 `, rule)
535
536 rule = module.Output("out/soong/hiddenapi/hiddenapi-index.csv")
537 java.CheckHiddenAPIRuleInputs(t, "monolithic index", `
538 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/index-from-classes.csv
539 snapshot/hiddenapi/index.csv
540 `, rule)
Paul Duffin630b11e2021-07-15 13:35:26 +0100541
542 // Make sure that the permitted packages from the prebuilts end up in the
543 // updatable-bcp-packages.txt file.
544 rule = module.Output("updatable-bcp-packages.txt")
545 expectedContents := `'mybootlib\nmyothersdklibrary\n'`
546 android.AssertStringEquals(t, "updatable-bcp-packages.txt", expectedContents, rule.Args["content"])
Paul Duffin8d007e92021-07-22 12:00:49 +0100547
548 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid")
Paul Duffin280bae62021-07-20 18:03:53 +0100549 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 +0100550 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100551 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
Paul Duffin8d007e92021-07-22 12:00:49 +0100552 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
553 module := result.ModuleForTests("platform-bootclasspath", "android_common")
554 rule := module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid")
Paul Duffin280bae62021-07-20 18:03:53 +0100555 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 +0100556 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100557 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
558 )
Paul Duffinf7f65da2021-03-10 15:00:46 +0000559}
Paul Duffin04b4a192021-03-18 11:05:31 +0000560
Paul Duffin51227d82021-05-18 12:54:27 +0100561// TestSnapshotWithBootClasspathFragment_Fragments makes sure that the fragments property of a
562// bootclasspath_fragment is correctly output to the sdk snapshot.
563func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) {
564 result := android.GroupFixturePreparers(
565 prepareForSdkTestWithJava,
566 java.PrepareForTestWithJavaDefaultModules,
567 java.PrepareForTestWithJavaSdkLibraryFiles,
568 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary"),
satayevabcd5972021-08-06 17:49:46 +0100569 java.FixtureConfigureApexBootJars("someapex:mysdklibrary", "myotherapex:myotherlib"),
Paul Duffin51227d82021-05-18 12:54:27 +0100570 prepareForSdkTestWithApex,
571
572 // Some additional files needed for the myotherapex.
573 android.FixtureMergeMockFs(android.MockFS{
574 "system/sepolicy/apex/myotherapex-file_contexts": nil,
575 "myotherapex/apex_manifest.json": nil,
576 "myotherapex/Test.java": nil,
577 }),
578
579 android.FixtureAddTextFile("myotherapex/Android.bp", `
580 apex {
581 name: "myotherapex",
582 key: "myapex.key",
583 min_sdk_version: "2",
584 bootclasspath_fragments: ["myotherbootclasspathfragment"],
585 }
586
587 bootclasspath_fragment {
588 name: "myotherbootclasspathfragment",
589 apex_available: ["myotherapex"],
590 contents: [
591 "myotherlib",
592 ],
593 }
594
595 java_library {
596 name: "myotherlib",
597 apex_available: ["myotherapex"],
598 srcs: ["Test.java"],
599 min_sdk_version: "2",
600 permitted_packages: ["myothersdklibrary"],
601 compile_dex: true,
602 }
603 `),
604
605 android.FixtureWithRootAndroidBp(`
606 sdk {
607 name: "mysdk",
608 bootclasspath_fragments: ["mybootclasspathfragment"],
609 }
610
611 bootclasspath_fragment {
612 name: "mybootclasspathfragment",
613 contents: [
614 "mysdklibrary",
615 ],
616 fragments: [
617 {
618 apex: "myotherapex",
619 module: "myotherbootclasspathfragment"
620 },
621 ],
622 }
623
624 java_sdk_library {
625 name: "mysdklibrary",
626 srcs: ["Test.java"],
627 shared_library: false,
628 public: {enabled: true},
629 min_sdk_version: "2",
630 }
631 `),
632 ).RunTest(t)
633
634 // A preparer to update the test fixture used when processing an unpackage snapshot.
635 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
636
637 CheckSnapshot(t, result, "mysdk", "",
638 checkUnversionedAndroidBpContents(`
639// This is auto-generated. DO NOT EDIT.
640
641prebuilt_bootclasspath_fragment {
642 name: "mybootclasspathfragment",
643 prefer: false,
644 visibility: ["//visibility:public"],
645 apex_available: ["//apex_available:platform"],
646 contents: ["mysdklibrary"],
647 fragments: [
648 {
649 apex: "myotherapex",
650 module: "myotherbootclasspathfragment",
651 },
652 ],
653 hidden_api: {
Paul Duffin51227d82021-05-18 12:54:27 +0100654 annotation_flags: "hiddenapi/annotation-flags.csv",
655 metadata: "hiddenapi/metadata.csv",
656 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100657 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin280bae62021-07-20 18:03:53 +0100658 stub_flags: "hiddenapi/filtered-stub-flags.csv",
659 all_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin51227d82021-05-18 12:54:27 +0100660 },
661}
662
663java_sdk_library_import {
664 name: "mysdklibrary",
665 prefer: false,
666 visibility: ["//visibility:public"],
667 apex_available: ["//apex_available:platform"],
668 shared_library: false,
669 public: {
670 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
671 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
672 current_api: "sdk_library/public/mysdklibrary.txt",
673 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
674 sdk_version: "current",
675 },
676}
677 `),
678 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
679 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
680 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
681 )
682}
683
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100684// Test that bootclasspath_fragment works with sdk.
685func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
Paul Duffin04b4a192021-03-18 11:05:31 +0000686 android.GroupFixturePreparers(
687 prepareForSdkTestWithApex,
688 prepareForSdkTestWithJava,
Paul Duffin8018e502021-05-21 19:28:09 +0100689 android.FixtureAddFile("java/mybootlib.jar", nil),
Paul Duffin04b4a192021-03-18 11:05:31 +0000690 android.FixtureWithRootAndroidBp(`
691 sdk {
692 name: "mysdk",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100693 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000694 }
695
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100696 bootclasspath_fragment {
697 name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000698 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100699 contents: ["mybootlib"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000700 apex_available: ["myapex"],
701 }
702
Paul Duffin8018e502021-05-21 19:28:09 +0100703 java_library {
704 name: "mybootlib",
705 apex_available: ["myapex"],
706 srcs: ["Test.java"],
707 system_modules: "none",
708 sdk_version: "none",
709 min_sdk_version: "1",
710 compile_dex: true,
711 }
712
Paul Duffin04b4a192021-03-18 11:05:31 +0000713 sdk_snapshot {
714 name: "mysdk@1",
Paul Duffin8018e502021-05-21 19:28:09 +0100715 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@1"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000716 }
717
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100718 prebuilt_bootclasspath_fragment {
Paul Duffin8018e502021-05-21 19:28:09 +0100719 name: "mysdk_mybootclasspathfragment@1",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100720 sdk_member_name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000721 prefer: false,
722 visibility: ["//visibility:public"],
723 apex_available: [
724 "myapex",
725 ],
726 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100727 contents: ["mysdk_mybootlib@1"],
728 }
729
730 java_import {
731 name: "mysdk_mybootlib@1",
732 sdk_member_name: "mybootlib",
733 visibility: ["//visibility:public"],
734 apex_available: ["com.android.art"],
735 jars: ["java/mybootlib.jar"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000736 }
737 `),
738 ).RunTest(t)
739}
Paul Duffin7c955552021-04-19 13:23:53 +0100740
741func TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) {
742 result := android.GroupFixturePreparers(
743 prepareForSdkTestWithJava,
Paul Duffin475daaf2021-05-13 00:57:55 +0100744 java.PrepareForTestWithJavaDefaultModules,
745 java.PrepareForTestWithJavaSdkLibraryFiles,
746 java.FixtureWithLastReleaseApis("mysdklibrary"),
satayevd604b212021-07-21 14:23:52 +0100747 java.FixtureConfigureApexBootJars("myapex:mybootlib"),
Paul Duffin475daaf2021-05-13 00:57:55 +0100748 prepareForSdkTestWithApex,
Paul Duffin7c475152021-06-09 16:17:58 +0100749
750 // Add a platform_bootclasspath that depends on the fragment.
751 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
752
Paul Duffin7c955552021-04-19 13:23:53 +0100753 android.MockFS{
754 "my-blocked.txt": nil,
755 "my-max-target-o-low-priority.txt": nil,
756 "my-max-target-p.txt": nil,
757 "my-max-target-q.txt": nil,
758 "my-max-target-r-low-priority.txt": nil,
759 "my-removed.txt": nil,
760 "my-unsupported-packages.txt": nil,
761 "my-unsupported.txt": nil,
762 }.AddToFixture(),
763 android.FixtureWithRootAndroidBp(`
764 sdk {
765 name: "mysdk",
766 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin7c955552021-04-19 13:23:53 +0100767 }
768
Paul Duffin475daaf2021-05-13 00:57:55 +0100769 apex {
770 name: "myapex",
771 key: "myapex.key",
772 min_sdk_version: "1",
773 bootclasspath_fragments: ["mybootclasspathfragment"],
774 }
775
Paul Duffin7c955552021-04-19 13:23:53 +0100776 bootclasspath_fragment {
777 name: "mybootclasspathfragment",
Paul Duffin475daaf2021-05-13 00:57:55 +0100778 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100779 contents: ["mybootlib"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100780 api: {
781 stub_libs: ["mysdklibrary"],
782 },
Paul Duffin7c955552021-04-19 13:23:53 +0100783 hidden_api: {
784 unsupported: [
785 "my-unsupported.txt",
786 ],
787 removed: [
788 "my-removed.txt",
789 ],
790 max_target_r_low_priority: [
791 "my-max-target-r-low-priority.txt",
792 ],
793 max_target_q: [
794 "my-max-target-q.txt",
795 ],
796 max_target_p: [
797 "my-max-target-p.txt",
798 ],
799 max_target_o_low_priority: [
800 "my-max-target-o-low-priority.txt",
801 ],
802 blocked: [
803 "my-blocked.txt",
804 ],
805 unsupported_packages: [
806 "my-unsupported-packages.txt",
807 ],
808 },
809 }
810
811 java_library {
812 name: "mybootlib",
Paul Duffin475daaf2021-05-13 00:57:55 +0100813 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100814 srcs: ["Test.java"],
815 system_modules: "none",
816 sdk_version: "none",
Paul Duffin475daaf2021-05-13 00:57:55 +0100817 min_sdk_version: "1",
Paul Duffin7c955552021-04-19 13:23:53 +0100818 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100819 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100820 }
Paul Duffin475daaf2021-05-13 00:57:55 +0100821
822 java_sdk_library {
823 name: "mysdklibrary",
824 srcs: ["Test.java"],
825 compile_dex: true,
826 public: {enabled: true},
Paul Duffin869de142021-07-15 14:14:41 +0100827 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100828 }
Paul Duffin7c955552021-04-19 13:23:53 +0100829 `),
830 ).RunTest(t)
831
Paul Duffin7c475152021-06-09 16:17:58 +0100832 // A preparer to update the test fixture used when processing an unpackage snapshot.
833 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
834
Paul Duffin7c955552021-04-19 13:23:53 +0100835 CheckSnapshot(t, result, "mysdk", "",
836 checkUnversionedAndroidBpContents(`
837// This is auto-generated. DO NOT EDIT.
838
839prebuilt_bootclasspath_fragment {
840 name: "mybootclasspathfragment",
841 prefer: false,
842 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100843 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100844 contents: ["mybootlib"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100845 api: {
846 stub_libs: ["mysdklibrary"],
847 },
Paul Duffin7c955552021-04-19 13:23:53 +0100848 hidden_api: {
849 unsupported: ["hiddenapi/my-unsupported.txt"],
850 removed: ["hiddenapi/my-removed.txt"],
851 max_target_r_low_priority: ["hiddenapi/my-max-target-r-low-priority.txt"],
852 max_target_q: ["hiddenapi/my-max-target-q.txt"],
853 max_target_p: ["hiddenapi/my-max-target-p.txt"],
854 max_target_o_low_priority: ["hiddenapi/my-max-target-o-low-priority.txt"],
855 blocked: ["hiddenapi/my-blocked.txt"],
856 unsupported_packages: ["hiddenapi/my-unsupported-packages.txt"],
Paul Duffin2fef1362021-04-15 13:32:00 +0100857 annotation_flags: "hiddenapi/annotation-flags.csv",
858 metadata: "hiddenapi/metadata.csv",
859 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100860 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin280bae62021-07-20 18:03:53 +0100861 stub_flags: "hiddenapi/filtered-stub-flags.csv",
862 all_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin7c955552021-04-19 13:23:53 +0100863 },
864}
865
866java_import {
867 name: "mybootlib",
868 prefer: false,
869 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100870 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100871 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100872 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100873}
Paul Duffin475daaf2021-05-13 00:57:55 +0100874
875java_sdk_library_import {
876 name: "mysdklibrary",
877 prefer: false,
878 visibility: ["//visibility:public"],
879 apex_available: ["//apex_available:platform"],
880 shared_library: true,
881 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100882 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100883 public: {
884 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
885 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
886 current_api: "sdk_library/public/mysdklibrary.txt",
887 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
888 sdk_version: "current",
889 },
890}
Paul Duffin7c955552021-04-19 13:23:53 +0100891`),
892 checkAllCopyRules(`
893my-unsupported.txt -> hiddenapi/my-unsupported.txt
894my-removed.txt -> hiddenapi/my-removed.txt
895my-max-target-r-low-priority.txt -> hiddenapi/my-max-target-r-low-priority.txt
896my-max-target-q.txt -> hiddenapi/my-max-target-q.txt
897my-max-target-p.txt -> hiddenapi/my-max-target-p.txt
898my-max-target-o-low-priority.txt -> hiddenapi/my-max-target-o-low-priority.txt
899my-blocked.txt -> hiddenapi/my-blocked.txt
900my-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt
Paul Duffin2fef1362021-04-15 13:32:00 +0100901.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
902.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
903.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100904.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100905.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
906.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100907.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffin475daaf2021-05-13 00:57:55 +0100908.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
909.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
910.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 +0100911`),
Paul Duffin7c475152021-06-09 16:17:58 +0100912 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
913 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
914 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffin7c955552021-04-19 13:23:53 +0100915 )
916}