blob: 7283cf050857afe0f200e36e4f141ee1cae5a73d [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"],
104 }
105
106 apex_key {
107 name: "com.android.art.key",
108 public_key: "com.android.art.avbpubkey",
109 private_key: "com.android.art.pem",
110 }
111
112 java_library {
113 name: "mybootlib",
114 srcs: ["Test.java"],
115 system_modules: "none",
116 sdk_version: "none",
117 compile_dex: true,
118 apex_available: ["com.android.art"],
119 }
120 `),
121 ).RunTest(t)
122
Paul Duffin7c475152021-06-09 16:17:58 +0100123 // A preparer to update the test fixture used when processing an unpackage snapshot.
124 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("com.android.art", "mybootclasspathfragment")
Paul Duffin023dba02021-04-22 01:45:29 +0100125
Paul Duffina57835e2021-04-19 13:23:06 +0100126 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin42cdd622022-05-24 20:10:05 +0000127 checkAndroidBpContents(`
Paul Duffina57835e2021-04-19 13:23:06 +0100128// This is auto-generated. DO NOT EDIT.
129
130prebuilt_bootclasspath_fragment {
131 name: "mybootclasspathfragment",
132 prefer: false,
133 visibility: ["//visibility:public"],
134 apex_available: ["com.android.art"],
135 image_name: "art",
Paul Duffin2dc665b2021-04-23 16:58:51 +0100136 contents: ["mybootlib"],
Paul Duffinda286f42021-06-29 11:59:23 +0100137 hidden_api: {
Paul Duffinda286f42021-06-29 11:59:23 +0100138 annotation_flags: "hiddenapi/annotation-flags.csv",
139 metadata: "hiddenapi/metadata.csv",
140 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100141 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100142 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
143 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffinda286f42021-06-29 11:59:23 +0100144 },
Paul Duffina57835e2021-04-19 13:23:06 +0100145}
146
147java_import {
148 name: "mybootlib",
149 prefer: false,
150 visibility: ["//visibility:public"],
151 apex_available: ["com.android.art"],
Paul Duffin5c211452021-07-15 12:42:44 +0100152 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffina57835e2021-04-19 13:23:06 +0100153}
154`),
Paul Duffina57835e2021-04-19 13:23:06 +0100155 checkAllCopyRules(`
Paul Duffinda286f42021-06-29 11:59:23 +0100156.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
157.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
158.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100159.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100160.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
161.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100162.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffinda286f42021-06-29 11:59:23 +0100163 `),
Paul Duffin7c475152021-06-09 16:17:58 +0100164 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffinc8ead412021-06-07 19:28:15 +0100165
166 // Check the behavior of the snapshot without the source.
167 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
168 // Make sure that the boot jars package check rule includes the dex jar retrieved from the prebuilt apex.
169 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/prebuilts/apex/com.android.art.deapexer/android_common/deapexer/javalib/mybootlib.jar")
170 }),
171
Paul Duffin7c475152021-06-09 16:17:58 +0100172 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
173 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffina57835e2021-04-19 13:23:06 +0100174 )
Paul Duffinc8ead412021-06-07 19:28:15 +0100175
176 // Make sure that the boot jars package check rule includes the dex jar created from the source.
177 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/mybootlib/android_common_apex10000/aligned/mybootlib.jar")
178}
179
180// checkBootJarsPackageCheckRule checks that the supplied module is an input to the boot jars
181// package check rule.
182func checkBootJarsPackageCheckRule(t *testing.T, result *android.TestResult, expectedModule string) {
183 platformBcp := result.ModuleForTests("platform-bootclasspath", "android_common")
184 bootJarsCheckRule := platformBcp.Rule("boot_jars_package_check")
185 command := bootJarsCheckRule.RuleParams.Command
186 expectedCommandArgs := " out/soong/host/linux-x86/bin/dexdump build/soong/scripts/check_boot_jars/package_allowed_list.txt " + expectedModule + " &&"
187 android.AssertStringDoesContain(t, "boot jars package check", command, expectedCommandArgs)
Paul Duffina57835e2021-04-19 13:23:06 +0100188}
189
Paul Duffin2bf43892022-05-13 13:12:19 +0000190func testSnapshotWithBootClasspathFragment_Contents(t *testing.T, sdk string, copyRules string) {
Paul Duffin4a1d4512021-03-18 10:12:26 +0000191 result := android.GroupFixturePreparers(
192 prepareForSdkTestWithJava,
Paul Duffin895c7142021-04-25 13:40:15 +0100193 java.PrepareForTestWithJavaDefaultModules,
194 java.PrepareForTestWithJavaSdkLibraryFiles,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100195 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"),
satayevd604b212021-07-21 14:23:52 +0100196 java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:myothersdklibrary"),
Paul Duffin7c475152021-06-09 16:17:58 +0100197 prepareForSdkTestWithApex,
198
199 // Add a platform_bootclasspath that depends on the fragment.
200 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
201
Paul Duffin2bf43892022-05-13 13:12:19 +0000202 android.FixtureWithRootAndroidBp(sdk+`
Paul Duffin7c475152021-06-09 16:17:58 +0100203 apex {
204 name: "myapex",
205 key: "myapex.key",
206 min_sdk_version: "2",
207 bootclasspath_fragments: ["mybootclasspathfragment"],
208 }
209
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100210 bootclasspath_fragment {
211 name: "mybootclasspathfragment",
Paul Duffin7c475152021-06-09 16:17:58 +0100212 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100213 contents: [
214 // This should be automatically added to the sdk_snapshot as a java_boot_libs module.
215 "mybootlib",
216 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
217 "myothersdklibrary",
218 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100219 api: {
220 stub_libs: ["mysdklibrary"],
221 },
222 core_platform_api: {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100223 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
Paul Duffin895c7142021-04-25 13:40:15 +0100224 stub_libs: ["mycoreplatform"],
225 },
Paul Duffina57835e2021-04-19 13:23:06 +0100226 }
227
228 java_library {
229 name: "mybootlib",
Paul Duffin7c475152021-06-09 16:17:58 +0100230 apex_available: ["myapex"],
Paul Duffina57835e2021-04-19 13:23:06 +0100231 srcs: ["Test.java"],
232 system_modules: "none",
233 sdk_version: "none",
Paul Duffin7c475152021-06-09 16:17:58 +0100234 min_sdk_version: "2",
Paul Duffina57835e2021-04-19 13:23:06 +0100235 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100236 permitted_packages: ["mybootlib"],
Paul Duffin4a1d4512021-03-18 10:12:26 +0000237 }
Paul Duffin895c7142021-04-25 13:40:15 +0100238
239 java_sdk_library {
240 name: "mysdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100241 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100242 srcs: ["Test.java"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100243 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100244 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100245 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100246 }
247
248 java_sdk_library {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100249 name: "myothersdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100250 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100251 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100252 compile_dex: true,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100253 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100254 min_sdk_version: "2",
255 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100256 }
257
258 java_sdk_library {
Paul Duffin895c7142021-04-25 13:40:15 +0100259 name: "mycoreplatform",
Paul Duffin7c475152021-06-09 16:17:58 +0100260 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100261 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100262 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100263 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100264 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100265 }
Paul Duffin4a1d4512021-03-18 10:12:26 +0000266 `),
267 ).RunTest(t)
Paul Duffinf7f65da2021-03-10 15:00:46 +0000268
Paul Duffin7c475152021-06-09 16:17:58 +0100269 // A preparer to update the test fixture used when processing an unpackage snapshot.
270 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
271
Paul Duffin36474d32021-03-12 12:19:43 +0000272 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin42cdd622022-05-24 20:10:05 +0000273 checkAndroidBpContents(`
Paul Duffinf7f65da2021-03-10 15:00:46 +0000274// This is auto-generated. DO NOT EDIT.
275
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100276prebuilt_bootclasspath_fragment {
277 name: "mybootclasspathfragment",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000278 prefer: false,
279 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100280 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100281 contents: [
282 "mybootlib",
283 "myothersdklibrary",
284 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100285 api: {
286 stub_libs: ["mysdklibrary"],
287 },
288 core_platform_api: {
289 stub_libs: ["mycoreplatform"],
290 },
Paul Duffin2fef1362021-04-15 13:32:00 +0100291 hidden_api: {
Paul Duffin2fef1362021-04-15 13:32:00 +0100292 annotation_flags: "hiddenapi/annotation-flags.csv",
293 metadata: "hiddenapi/metadata.csv",
294 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100295 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100296 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
297 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100298 },
Paul Duffina57835e2021-04-19 13:23:06 +0100299}
300
301java_import {
302 name: "mybootlib",
303 prefer: false,
304 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100305 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100306 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100307 permitted_packages: ["mybootlib"],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000308}
Paul Duffin895c7142021-04-25 13:40:15 +0100309
310java_sdk_library_import {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100311 name: "myothersdklibrary",
312 prefer: false,
313 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100314 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100315 shared_library: true,
316 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100317 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100318 public: {
319 jars: ["sdk_library/public/myothersdklibrary-stubs.jar"],
320 stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"],
321 current_api: "sdk_library/public/myothersdklibrary.txt",
322 removed_api: "sdk_library/public/myothersdklibrary-removed.txt",
323 sdk_version: "current",
324 },
325}
326
327java_sdk_library_import {
Paul Duffin895c7142021-04-25 13:40:15 +0100328 name: "mysdklibrary",
329 prefer: false,
330 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100331 apex_available: ["myapex"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100332 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100333 public: {
334 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
335 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
336 current_api: "sdk_library/public/mysdklibrary.txt",
337 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
338 sdk_version: "current",
339 },
340}
341
342java_sdk_library_import {
343 name: "mycoreplatform",
344 prefer: false,
345 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100346 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100347 shared_library: true,
348 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100349 public: {
350 jars: ["sdk_library/public/mycoreplatform-stubs.jar"],
351 stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"],
352 current_api: "sdk_library/public/mycoreplatform.txt",
353 removed_api: "sdk_library/public/mycoreplatform-removed.txt",
354 sdk_version: "current",
355 },
356}
Paul Duffina10bd3c2021-05-12 13:46:54 +0100357 `),
Paul Duffin2bf43892022-05-13 13:12:19 +0000358 checkAllCopyRules(copyRules),
Paul Duffin7c475152021-06-09 16:17:58 +0100359 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffind061d402021-06-07 21:36:01 +0100360 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
361 module := result.ModuleForTests("platform-bootclasspath", "android_common")
362 var rule android.TestingBuildParams
363 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv")
364 java.CheckHiddenAPIRuleInputs(t, "monolithic flags", `
365 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/annotation-flags-from-classes.csv
366 out/soong/hiddenapi/hiddenapi-stub-flags.txt
367 snapshot/hiddenapi/annotation-flags.csv
368 `, rule)
369
370 rule = module.Output("out/soong/hiddenapi/hiddenapi-unsupported.csv")
371 java.CheckHiddenAPIRuleInputs(t, "monolithic metadata", `
372 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/metadata-from-classes.csv
373 snapshot/hiddenapi/metadata.csv
374 `, rule)
375
376 rule = module.Output("out/soong/hiddenapi/hiddenapi-index.csv")
377 java.CheckHiddenAPIRuleInputs(t, "monolithic index", `
378 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/index-from-classes.csv
379 snapshot/hiddenapi/index.csv
380 `, rule)
Paul Duffin630b11e2021-07-15 13:35:26 +0100381
Paul Duffin8d007e92021-07-22 12:00:49 +0100382 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid")
Paul Duffin280bae62021-07-20 18:03:53 +0100383 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 +0100384 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100385 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
Paul Duffin8d007e92021-07-22 12:00:49 +0100386 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
387 module := result.ModuleForTests("platform-bootclasspath", "android_common")
388 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, " 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 +0100390 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100391 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
392 )
Paul Duffinf7f65da2021-03-10 15:00:46 +0000393}
Paul Duffin04b4a192021-03-18 11:05:31 +0000394
Paul Duffin2bf43892022-05-13 13:12:19 +0000395func TestSnapshotWithBootClasspathFragment_Contents(t *testing.T) {
396 t.Run("added-directly", func(t *testing.T) {
397 testSnapshotWithBootClasspathFragment_Contents(t, `
398 sdk {
399 name: "mysdk",
400 bootclasspath_fragments: ["mybootclasspathfragment"],
401 java_sdk_libs: [
402 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
403 // a java_sdk_libs module because it is used in the mybootclasspathfragment's
404 // api.stub_libs property. However, it is specified here to ensure that duplicates are
405 // correctly deduped.
406 "mysdklibrary",
407 ],
408 }
409 `, `
410.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
411.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
412.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
413.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
414.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
415.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
416.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
417.intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar
418.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt
419.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt
420.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
421.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
422.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
423.intermediates/mycoreplatform.stubs/android_common/javac/mycoreplatform.stubs.jar -> sdk_library/public/mycoreplatform-stubs.jar
424.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt
425.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt
426`)
427 })
428
429 copyBootclasspathFragmentFromApexVariantRules := `
430.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
431.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
432.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/index.csv -> hiddenapi/index.csv
433.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
434.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
435.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
436.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
437.intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar
438.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt
439.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt
440.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
441.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
442.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
443.intermediates/mycoreplatform.stubs/android_common/javac/mycoreplatform.stubs.jar -> sdk_library/public/mycoreplatform-stubs.jar
444.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt
445.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt
446`
447 t.Run("added-via-apex", func(t *testing.T) {
448 testSnapshotWithBootClasspathFragment_Contents(t, `
449 sdk {
450 name: "mysdk",
451 apexes: ["myapex"],
452 }
453 `, copyBootclasspathFragmentFromApexVariantRules)
454 })
455
456 t.Run("added-directly-and-indirectly", func(t *testing.T) {
457 testSnapshotWithBootClasspathFragment_Contents(t, `
458 sdk {
459 name: "mysdk",
460 apexes: ["myapex"],
461 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
462 // a bootclasspath_fragments module because it is used in the myapex's
463 // bootclasspath_fragments property. However, it is specified here to ensure that duplicates
464 // are correctly deduped.
465 bootclasspath_fragments: ["mybootclasspathfragment"],
466 java_sdk_libs: [
467 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
468 // a java_sdk_libs module because it is used in the mybootclasspathfragment's
469 // api.stub_libs property. However, it is specified here to ensure that duplicates are
470 // correctly deduped.
471 "mysdklibrary",
472 ],
473 }
474 `, copyBootclasspathFragmentFromApexVariantRules)
475 })
476}
477
Paul Duffin51227d82021-05-18 12:54:27 +0100478// TestSnapshotWithBootClasspathFragment_Fragments makes sure that the fragments property of a
479// bootclasspath_fragment is correctly output to the sdk snapshot.
480func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) {
481 result := android.GroupFixturePreparers(
482 prepareForSdkTestWithJava,
483 java.PrepareForTestWithJavaDefaultModules,
484 java.PrepareForTestWithJavaSdkLibraryFiles,
485 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary"),
satayevabcd5972021-08-06 17:49:46 +0100486 java.FixtureConfigureApexBootJars("someapex:mysdklibrary", "myotherapex:myotherlib"),
Paul Duffin51227d82021-05-18 12:54:27 +0100487 prepareForSdkTestWithApex,
488
489 // Some additional files needed for the myotherapex.
490 android.FixtureMergeMockFs(android.MockFS{
491 "system/sepolicy/apex/myotherapex-file_contexts": nil,
492 "myotherapex/apex_manifest.json": nil,
493 "myotherapex/Test.java": nil,
494 }),
495
496 android.FixtureAddTextFile("myotherapex/Android.bp", `
497 apex {
498 name: "myotherapex",
499 key: "myapex.key",
500 min_sdk_version: "2",
501 bootclasspath_fragments: ["myotherbootclasspathfragment"],
502 }
503
504 bootclasspath_fragment {
505 name: "myotherbootclasspathfragment",
506 apex_available: ["myotherapex"],
507 contents: [
508 "myotherlib",
509 ],
510 }
511
512 java_library {
513 name: "myotherlib",
514 apex_available: ["myotherapex"],
515 srcs: ["Test.java"],
516 min_sdk_version: "2",
517 permitted_packages: ["myothersdklibrary"],
518 compile_dex: true,
519 }
520 `),
521
522 android.FixtureWithRootAndroidBp(`
523 sdk {
524 name: "mysdk",
525 bootclasspath_fragments: ["mybootclasspathfragment"],
526 }
527
528 bootclasspath_fragment {
529 name: "mybootclasspathfragment",
530 contents: [
531 "mysdklibrary",
532 ],
533 fragments: [
534 {
535 apex: "myotherapex",
536 module: "myotherbootclasspathfragment"
537 },
538 ],
539 }
540
541 java_sdk_library {
542 name: "mysdklibrary",
543 srcs: ["Test.java"],
544 shared_library: false,
545 public: {enabled: true},
546 min_sdk_version: "2",
547 }
548 `),
549 ).RunTest(t)
550
551 // A preparer to update the test fixture used when processing an unpackage snapshot.
552 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
553
554 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin42cdd622022-05-24 20:10:05 +0000555 checkAndroidBpContents(`
Paul Duffin51227d82021-05-18 12:54:27 +0100556// This is auto-generated. DO NOT EDIT.
557
558prebuilt_bootclasspath_fragment {
559 name: "mybootclasspathfragment",
560 prefer: false,
561 visibility: ["//visibility:public"],
562 apex_available: ["//apex_available:platform"],
563 contents: ["mysdklibrary"],
564 fragments: [
565 {
566 apex: "myotherapex",
567 module: "myotherbootclasspathfragment",
568 },
569 ],
570 hidden_api: {
Paul Duffin51227d82021-05-18 12:54:27 +0100571 annotation_flags: "hiddenapi/annotation-flags.csv",
572 metadata: "hiddenapi/metadata.csv",
573 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100574 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100575 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
576 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin51227d82021-05-18 12:54:27 +0100577 },
578}
579
580java_sdk_library_import {
581 name: "mysdklibrary",
582 prefer: false,
583 visibility: ["//visibility:public"],
584 apex_available: ["//apex_available:platform"],
585 shared_library: false,
586 public: {
587 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
588 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
589 current_api: "sdk_library/public/mysdklibrary.txt",
590 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
591 sdk_version: "current",
592 },
593}
594 `),
595 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
596 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
597 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
598 )
599}
600
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100601// Test that bootclasspath_fragment works with sdk.
602func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
Paul Duffin04b4a192021-03-18 11:05:31 +0000603 android.GroupFixturePreparers(
604 prepareForSdkTestWithApex,
605 prepareForSdkTestWithJava,
Paul Duffin8018e502021-05-21 19:28:09 +0100606 android.FixtureAddFile("java/mybootlib.jar", nil),
Paul Duffin04b4a192021-03-18 11:05:31 +0000607 android.FixtureWithRootAndroidBp(`
608 sdk {
609 name: "mysdk",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100610 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000611 }
612
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100613 bootclasspath_fragment {
614 name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000615 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100616 contents: ["mybootlib"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000617 apex_available: ["myapex"],
618 }
619
Paul Duffin8018e502021-05-21 19:28:09 +0100620 java_library {
621 name: "mybootlib",
622 apex_available: ["myapex"],
623 srcs: ["Test.java"],
624 system_modules: "none",
625 sdk_version: "none",
626 min_sdk_version: "1",
627 compile_dex: true,
628 }
629
Paul Duffin04b4a192021-03-18 11:05:31 +0000630 sdk_snapshot {
631 name: "mysdk@1",
Paul Duffin8018e502021-05-21 19:28:09 +0100632 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@1"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000633 }
634
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100635 prebuilt_bootclasspath_fragment {
Paul Duffin8018e502021-05-21 19:28:09 +0100636 name: "mysdk_mybootclasspathfragment@1",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100637 sdk_member_name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000638 prefer: false,
639 visibility: ["//visibility:public"],
640 apex_available: [
641 "myapex",
642 ],
643 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100644 contents: ["mysdk_mybootlib@1"],
645 }
646
647 java_import {
648 name: "mysdk_mybootlib@1",
649 sdk_member_name: "mybootlib",
650 visibility: ["//visibility:public"],
651 apex_available: ["com.android.art"],
652 jars: ["java/mybootlib.jar"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000653 }
654 `),
655 ).RunTest(t)
656}
Paul Duffin7c955552021-04-19 13:23:53 +0100657
658func TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) {
659 result := android.GroupFixturePreparers(
660 prepareForSdkTestWithJava,
Paul Duffin475daaf2021-05-13 00:57:55 +0100661 java.PrepareForTestWithJavaDefaultModules,
662 java.PrepareForTestWithJavaSdkLibraryFiles,
663 java.FixtureWithLastReleaseApis("mysdklibrary"),
satayevd604b212021-07-21 14:23:52 +0100664 java.FixtureConfigureApexBootJars("myapex:mybootlib"),
Paul Duffin475daaf2021-05-13 00:57:55 +0100665 prepareForSdkTestWithApex,
Paul Duffin7c475152021-06-09 16:17:58 +0100666
667 // Add a platform_bootclasspath that depends on the fragment.
668 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
669
Paul Duffin7c955552021-04-19 13:23:53 +0100670 android.MockFS{
671 "my-blocked.txt": nil,
672 "my-max-target-o-low-priority.txt": nil,
673 "my-max-target-p.txt": nil,
674 "my-max-target-q.txt": nil,
675 "my-max-target-r-low-priority.txt": nil,
676 "my-removed.txt": nil,
677 "my-unsupported-packages.txt": nil,
678 "my-unsupported.txt": nil,
679 }.AddToFixture(),
680 android.FixtureWithRootAndroidBp(`
681 sdk {
682 name: "mysdk",
683 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin7c955552021-04-19 13:23:53 +0100684 }
685
Paul Duffin475daaf2021-05-13 00:57:55 +0100686 apex {
687 name: "myapex",
688 key: "myapex.key",
689 min_sdk_version: "1",
690 bootclasspath_fragments: ["mybootclasspathfragment"],
691 }
692
Paul Duffin7c955552021-04-19 13:23:53 +0100693 bootclasspath_fragment {
694 name: "mybootclasspathfragment",
Paul Duffin475daaf2021-05-13 00:57:55 +0100695 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100696 contents: ["mybootlib"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100697 api: {
698 stub_libs: ["mysdklibrary"],
699 },
Paul Duffin7c955552021-04-19 13:23:53 +0100700 hidden_api: {
701 unsupported: [
702 "my-unsupported.txt",
703 ],
704 removed: [
705 "my-removed.txt",
706 ],
707 max_target_r_low_priority: [
708 "my-max-target-r-low-priority.txt",
709 ],
710 max_target_q: [
711 "my-max-target-q.txt",
712 ],
713 max_target_p: [
714 "my-max-target-p.txt",
715 ],
716 max_target_o_low_priority: [
717 "my-max-target-o-low-priority.txt",
718 ],
719 blocked: [
720 "my-blocked.txt",
721 ],
722 unsupported_packages: [
723 "my-unsupported-packages.txt",
724 ],
725 },
726 }
727
728 java_library {
729 name: "mybootlib",
Paul Duffin475daaf2021-05-13 00:57:55 +0100730 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100731 srcs: ["Test.java"],
732 system_modules: "none",
733 sdk_version: "none",
Paul Duffin475daaf2021-05-13 00:57:55 +0100734 min_sdk_version: "1",
Paul Duffin7c955552021-04-19 13:23:53 +0100735 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100736 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100737 }
Paul Duffin475daaf2021-05-13 00:57:55 +0100738
739 java_sdk_library {
740 name: "mysdklibrary",
741 srcs: ["Test.java"],
742 compile_dex: true,
743 public: {enabled: true},
Paul Duffin869de142021-07-15 14:14:41 +0100744 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100745 }
Paul Duffin7c955552021-04-19 13:23:53 +0100746 `),
747 ).RunTest(t)
748
Paul Duffin7c475152021-06-09 16:17:58 +0100749 // A preparer to update the test fixture used when processing an unpackage snapshot.
750 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
751
Paul Duffin7c955552021-04-19 13:23:53 +0100752 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin42cdd622022-05-24 20:10:05 +0000753 checkAndroidBpContents(`
Paul Duffin7c955552021-04-19 13:23:53 +0100754// This is auto-generated. DO NOT EDIT.
755
756prebuilt_bootclasspath_fragment {
757 name: "mybootclasspathfragment",
758 prefer: false,
759 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100760 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100761 contents: ["mybootlib"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100762 api: {
763 stub_libs: ["mysdklibrary"],
764 },
Paul Duffin7c955552021-04-19 13:23:53 +0100765 hidden_api: {
766 unsupported: ["hiddenapi/my-unsupported.txt"],
767 removed: ["hiddenapi/my-removed.txt"],
768 max_target_r_low_priority: ["hiddenapi/my-max-target-r-low-priority.txt"],
769 max_target_q: ["hiddenapi/my-max-target-q.txt"],
770 max_target_p: ["hiddenapi/my-max-target-p.txt"],
771 max_target_o_low_priority: ["hiddenapi/my-max-target-o-low-priority.txt"],
772 blocked: ["hiddenapi/my-blocked.txt"],
773 unsupported_packages: ["hiddenapi/my-unsupported-packages.txt"],
Paul Duffin2fef1362021-04-15 13:32:00 +0100774 annotation_flags: "hiddenapi/annotation-flags.csv",
775 metadata: "hiddenapi/metadata.csv",
776 index: "hiddenapi/index.csv",
Paul Duffin8d007e92021-07-22 12:00:49 +0100777 signature_patterns: "hiddenapi/signature-patterns.csv",
Paul Duffin191be3a2021-08-10 16:14:16 +0100778 filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
779 filtered_flags: "hiddenapi/filtered-flags.csv",
Paul Duffin7c955552021-04-19 13:23:53 +0100780 },
781}
782
783java_import {
784 name: "mybootlib",
785 prefer: false,
786 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100787 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100788 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100789 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100790}
Paul Duffin475daaf2021-05-13 00:57:55 +0100791
792java_sdk_library_import {
793 name: "mysdklibrary",
794 prefer: false,
795 visibility: ["//visibility:public"],
796 apex_available: ["//apex_available:platform"],
797 shared_library: true,
798 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100799 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100800 public: {
801 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
802 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
803 current_api: "sdk_library/public/mysdklibrary.txt",
804 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
805 sdk_version: "current",
806 },
807}
Paul Duffin7c955552021-04-19 13:23:53 +0100808`),
809 checkAllCopyRules(`
810my-unsupported.txt -> hiddenapi/my-unsupported.txt
811my-removed.txt -> hiddenapi/my-removed.txt
812my-max-target-r-low-priority.txt -> hiddenapi/my-max-target-r-low-priority.txt
813my-max-target-q.txt -> hiddenapi/my-max-target-q.txt
814my-max-target-p.txt -> hiddenapi/my-max-target-p.txt
815my-max-target-o-low-priority.txt -> hiddenapi/my-max-target-o-low-priority.txt
816my-blocked.txt -> hiddenapi/my-blocked.txt
817my-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt
Paul Duffin2fef1362021-04-15 13:32:00 +0100818.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
819.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
820.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin8d007e92021-07-22 12:00:49 +0100821.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
Paul Duffin280bae62021-07-20 18:03:53 +0100822.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
823.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100824.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffin475daaf2021-05-13 00:57:55 +0100825.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
826.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
827.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 +0100828`),
Paul Duffin7c475152021-06-09 16:17:58 +0100829 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
830 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
831 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffin7c955552021-04-19 13:23:53 +0100832 )
833}