blob: 1b2b0f1f34857266f7778bfe7f33c716a25ddbea [file] [log] [blame]
Paul Duffina80fdec2019-12-03 15:25:00 +00001// Copyright (C) 2019 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
17import (
Paul Duffin13648912022-07-15 13:12:35 +000018 "fmt"
Paul Duffina80fdec2019-12-03 15:25:00 +000019 "testing"
Paul Duffincee7e662020-07-09 17:32:57 +010020
Paul Duffin4a2a29c2021-03-09 22:27:13 +000021 "android/soong/android"
Jiakai Zhangbc698cd2023-05-08 16:28:38 +000022 "android/soong/dexpreopt"
Paul Duffincee7e662020-07-09 17:32:57 +010023 "android/soong/java"
Paul Duffina80fdec2019-12-03 15:25:00 +000024)
25
Paul Duffind14cbc12021-03-18 09:14:23 +000026var prepareForSdkTestWithJava = android.GroupFixturePreparers(
27 java.PrepareForTestWithJavaBuildComponents,
28 PrepareForTestWithSdkBuildComponents,
Jiakai Zhangbc698cd2023-05-08 16:28:38 +000029 dexpreopt.PrepareForTestWithFakeDex2oatd,
Paul Duffindb462dd2021-03-21 22:01:55 +000030
31 // Ensure that all source paths are provided. This helps ensure that the snapshot generation is
32 // consistent and all files referenced from the snapshot's Android.bp file have actually been
33 // copied into the snapshot.
34 android.PrepareForTestDisallowNonExistentPaths,
35
36 // Files needs by most of the tests.
37 android.MockFS{
Jiakai Zhang9c4dc192023-02-09 00:09:24 +080038 "Test.java": nil,
39 "art-profile": nil,
Paul Duffindb462dd2021-03-21 22:01:55 +000040 }.AddToFixture(),
Paul Duffind14cbc12021-03-18 09:14:23 +000041)
42
Paul Duffin9ec86b12021-03-15 11:17:52 +000043var prepareForSdkTestWithJavaSdkLibrary = android.GroupFixturePreparers(
44 prepareForSdkTestWithJava,
45 java.PrepareForTestWithJavaDefaultModules,
46 java.PrepareForTestWithJavaSdkLibraryFiles,
47 java.FixtureWithLastReleaseApis("myjavalib"),
Jihoon Kangf55a5f72024-01-08 08:56:20 +000048 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
49 variables.BuildFlags = map[string]string{
50 "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true",
51 }
52 }),
Paul Duffin9ec86b12021-03-15 11:17:52 +000053)
54
Paul Duffina80fdec2019-12-03 15:25:00 +000055// Contains tests for SDK members provided by the java package.
56
Paul Duffincee7e662020-07-09 17:32:57 +010057func TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +000058 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffincee7e662020-07-09 17:32:57 +010059 sdk {
60 name: "mysdk",
61 java_header_libs: ["sdkmember"],
62 }
63
64 java_library {
65 name: "sdkmember",
66 srcs: ["Test.java"],
67 system_modules: "none",
68 sdk_version: "none",
69 }
Paul Duffincee7e662020-07-09 17:32:57 +010070 `)
71
72 // Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember".
Paul Duffin1822a0a2021-03-21 12:56:33 +000073 sdkChecker := func(t *testing.T, result *android.TestResult) {
74 java.CheckModuleDependencies(t, result.TestContext, "mysdk", "android_common", []string{"sdkmember"})
75 }
Paul Duffincee7e662020-07-09 17:32:57 +010076
Paul Duffin36474d32021-03-12 12:19:43 +000077 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin1822a0a2021-03-21 12:56:33 +000078 snapshotTestChecker(checkSnapshotWithSourcePreferred, sdkChecker),
79 snapshotTestChecker(checkSnapshotPreferredWithSource, sdkChecker),
80 )
Paul Duffincee7e662020-07-09 17:32:57 +010081}
82
Paul Duffina0dbf432019-12-05 11:25:53 +000083func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +000084 result := android.GroupFixturePreparers(
85 prepareForSdkTestWithJava,
86 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
87 ).RunTestWithBp(t, `
Paul Duffina0dbf432019-12-05 11:25:53 +000088 sdk {
89 name: "mysdk",
90 java_header_libs: ["myjavalib"],
91 }
92
93 java_library {
94 name: "myjavalib",
95 srcs: ["Test.java"],
96 aidl: {
97 export_include_dirs: ["aidl"],
98 },
99 system_modules: "none",
100 sdk_version: "none",
101 compile_dex: true,
102 host_supported: true,
Paul Duffin869de142021-07-15 14:14:41 +0100103 permitted_packages: ["pkg.myjavalib"],
Paul Duffina0dbf432019-12-05 11:25:53 +0000104 }
105 `)
106
Paul Duffin36474d32021-03-12 12:19:43 +0000107 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000108 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100109// This is auto-generated. DO NOT EDIT.
110
111java_import {
112 name: "myjavalib",
113 prefer: false,
114 visibility: ["//visibility:public"],
115 apex_available: ["//apex_available:platform"],
116 jars: ["java/myjavalib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100117 permitted_packages: ["pkg.myjavalib"],
Paul Duffine1381882021-04-16 17:05:10 +0100118}
119`),
Paul Duffina0dbf432019-12-05 11:25:53 +0000120 checkAllCopyRules(`
121.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
122aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
123`),
124 )
125}
126
127func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000128 result := android.GroupFixturePreparers(
129 prepareForSdkTestWithJava,
130 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
131 ).RunTestWithBp(t, `
Paul Duffina0dbf432019-12-05 11:25:53 +0000132 sdk {
133 name: "mysdk",
134 device_supported: false,
135 host_supported: true,
136 java_header_libs: ["myjavalib"],
137 }
138
139 java_library {
140 name: "myjavalib",
141 device_supported: false,
142 host_supported: true,
143 srcs: ["Test.java"],
144 aidl: {
145 export_include_dirs: ["aidl"],
146 },
147 system_modules: "none",
148 sdk_version: "none",
149 compile_dex: true,
150 }
151 `)
152
Paul Duffin36474d32021-03-12 12:19:43 +0000153 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000154 checkAndroidBpContents(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000155// This is auto-generated. DO NOT EDIT.
156
157java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100158 name: "myjavalib",
159 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100160 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000161 apex_available: ["//apex_available:platform"],
Paul Duffina0dbf432019-12-05 11:25:53 +0000162 device_supported: false,
163 host_supported: true,
164 jars: ["java/myjavalib.jar"],
165}
Paul Duffine1381882021-04-16 17:05:10 +0100166`),
Paul Duffina0dbf432019-12-05 11:25:53 +0000167 checkAllCopyRules(`
Colin Crossf06d8dc2023-07-18 22:11:07 -0700168.intermediates/myjavalib/linux_glibc_common/javac-header/myjavalib.jar -> java/myjavalib.jar
Paul Duffina0dbf432019-12-05 11:25:53 +0000169aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
170`),
171 )
172}
173
Paul Duffina04c1072020-03-02 10:16:35 +0000174func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000175 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffina04c1072020-03-02 10:16:35 +0000176 sdk {
177 name: "mysdk",
178 host_supported: true,
179 java_header_libs: ["myjavalib"],
180 }
181
182 java_library {
183 name: "myjavalib",
184 host_supported: true,
185 srcs: ["Test.java"],
186 system_modules: "none",
187 sdk_version: "none",
188 compile_dex: true,
189 }
190 `)
191
Paul Duffin36474d32021-03-12 12:19:43 +0000192 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000193 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000194// This is auto-generated. DO NOT EDIT.
195
196java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100197 name: "myjavalib",
198 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100199 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000200 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000201 host_supported: true,
202 target: {
203 android: {
204 jars: ["java/android/myjavalib.jar"],
205 },
206 linux_glibc: {
207 jars: ["java/linux_glibc/myjavalib.jar"],
208 },
209 },
210}
Paul Duffine1381882021-04-16 17:05:10 +0100211`),
Paul Duffina04c1072020-03-02 10:16:35 +0000212 checkAllCopyRules(`
213.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
Colin Crossf06d8dc2023-07-18 22:11:07 -0700214.intermediates/myjavalib/linux_glibc_common/javac-header/myjavalib.jar -> java/linux_glibc/myjavalib.jar
Paul Duffina04c1072020-03-02 10:16:35 +0000215`),
216 )
217}
218
Paul Duffina0dbf432019-12-05 11:25:53 +0000219func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000220 result := android.GroupFixturePreparers(
221 prepareForSdkTestWithJava,
222 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
Paul Duffindb462dd2021-03-21 22:01:55 +0000223 android.FixtureAddFile("resource.txt", nil),
Paul Duffin9ec86b12021-03-15 11:17:52 +0000224 ).RunTestWithBp(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000225 module_exports {
226 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000227 java_libs: ["myjavalib"],
228 }
229
230 java_library {
231 name: "myjavalib",
232 srcs: ["Test.java"],
Paul Duffin4e772842020-06-24 12:10:42 +0100233 java_resources: ["resource.txt"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000234 aidl: {
235 export_include_dirs: ["aidl"],
236 },
237 system_modules: "none",
238 sdk_version: "none",
239 compile_dex: true,
240 host_supported: true,
241 }
242 `)
243
Paul Duffin36474d32021-03-12 12:19:43 +0000244 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000245 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100246// This is auto-generated. DO NOT EDIT.
247
248java_import {
249 name: "myjavalib",
250 prefer: false,
251 visibility: ["//visibility:public"],
252 apex_available: ["//apex_available:platform"],
253 jars: ["java/myjavalib.jar"],
254}
255`),
Paul Duffina80fdec2019-12-03 15:25:00 +0000256 checkAllCopyRules(`
Paul Duffin4e772842020-06-24 12:10:42 +0100257.intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000258aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
259`),
260 )
261}
262
Paul Duffindb170e42020-12-08 17:48:25 +0000263func TestSnapshotWithJavaBootLibrary(t *testing.T) {
Paul Duffindb462dd2021-03-21 22:01:55 +0000264 result := android.GroupFixturePreparers(
265 prepareForSdkTestWithJava,
266 android.FixtureAddFile("aidl", nil),
267 android.FixtureAddFile("resource.txt", nil),
268 ).RunTestWithBp(t, `
Paul Duffin13648912022-07-15 13:12:35 +0000269 sdk {
270 name: "mysdk",
Paul Duffindb170e42020-12-08 17:48:25 +0000271 java_boot_libs: ["myjavalib"],
272 }
273
274 java_library {
275 name: "myjavalib",
276 srcs: ["Test.java"],
277 java_resources: ["resource.txt"],
278 // The aidl files should not be copied to the snapshot because a java_boot_libs member is not
279 // intended to be used for compiling Java, only for accessing the dex implementation jar.
280 aidl: {
281 export_include_dirs: ["aidl"],
282 },
283 system_modules: "none",
284 sdk_version: "none",
285 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100286 permitted_packages: ["pkg.myjavalib"],
Paul Duffindb170e42020-12-08 17:48:25 +0000287 }
288 `)
289
Paul Duffin13648912022-07-15 13:12:35 +0000290 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000291 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100292// This is auto-generated. DO NOT EDIT.
293
294java_import {
295 name: "myjavalib",
296 prefer: false,
297 visibility: ["//visibility:public"],
298 apex_available: ["//apex_available:platform"],
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000299 jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100300 permitted_packages: ["pkg.myjavalib"],
Paul Duffine1381882021-04-16 17:05:10 +0100301}
302`),
Paul Duffindb170e42020-12-08 17:48:25 +0000303 checkAllCopyRules(`
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000304.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
Paul Duffindb170e42020-12-08 17:48:25 +0000305`),
306 )
307}
308
Paul Duffin13648912022-07-15 13:12:35 +0000309func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000310 runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) {
Paul Duffin13648912022-07-15 13:12:35 +0000311 result := android.GroupFixturePreparers(
312 prepareForSdkTestWithJava,
313 android.FixtureMergeEnv(map[string]string{
314 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
315 }),
316 ).RunTestWithBp(t, `
317 sdk {
318 name: "mysdk",
319 java_boot_libs: ["updatable-media"],
320 }
321
322 java_library {
323 name: "updatable-media",
324 srcs: ["Test.java"],
325 system_modules: "none",
326 sdk_version: "none",
327 compile_dex: true,
328 permitted_packages: ["pkg.media"],
329 apex_available: ["com.android.media"],
330 }
331 `)
332
333 CheckSnapshot(t, result, "mysdk", "",
334 checkAndroidBpContents(fmt.Sprintf(`
335// This is auto-generated. DO NOT EDIT.
336
337java_import {
338 name: "updatable-media",
339 prefer: false,
340 visibility: ["//visibility:public"],
341 apex_available: ["com.android.media"],
342 jars: ["%s"],
343 permitted_packages: ["pkg.media"],
344}
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000345`, expectedJarPath)),
Paul Duffin13648912022-07-15 13:12:35 +0000346 checkAllCopyRules(expectedCopyRule),
347 )
348 }
349
350 t.Run("updatable-media in S", func(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000351 runTest(t, "S", "java/updatable-media.jar", `
Paul Duffin13648912022-07-15 13:12:35 +0000352.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar
353`)
354 })
355
356 t.Run("updatable-media in T", func(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000357 runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", `
358.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar
Paul Duffin13648912022-07-15 13:12:35 +0000359`)
360 })
361}
362
Paul Duffinbb638eb2022-11-26 13:36:38 +0000363func TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) {
364 runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) {
365 result := android.GroupFixturePreparers(
366 prepareForSdkTestWithJava,
367 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
368 variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"}
369 }),
370 android.FixtureMergeEnv(map[string]string{
371 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
372 }),
373 ).RunTestWithBp(t, fmt.Sprintf(`
374 sdk {
375 name: "mysdk",
376 java_header_libs: ["mylib"],
377 }
378
379 java_library {
380 name: "mylib",
381 srcs: ["Test.java"],
382 system_modules: "none",
383 sdk_version: "none",
384 compile_dex: true,
385 min_sdk_version: "%s",
386 }
387 `, minSdkVersion))
388
389 expectedMinSdkVersionLine := ""
390 if expectedMinSdkVersion != "" {
391 expectedMinSdkVersionLine = fmt.Sprintf(" min_sdk_version: %q,\n", expectedMinSdkVersion)
392 }
393
394 CheckSnapshot(t, result, "mysdk", "",
395 checkAndroidBpContents(fmt.Sprintf(`
396// This is auto-generated. DO NOT EDIT.
397
398java_import {
399 name: "mylib",
400 prefer: false,
401 visibility: ["//visibility:public"],
402 apex_available: ["//apex_available:platform"],
403 jars: ["java/mylib.jar"],
404%s}
405`, expectedMinSdkVersionLine)),
406 )
407 }
408
409 t.Run("min_sdk_version=S in S", func(t *testing.T) {
410 // min_sdk_version was not added to java_import until Tiramisu.
411 runTest(t, "S", "S", "")
412 })
413
414 t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) {
415 // The canonical form of S is 31.
416 runTest(t, "Tiramisu", "S", "31")
417 })
418
419 t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) {
420 // A numerical min_sdk_version is already in canonical form.
421 runTest(t, "Tiramisu", "24", "24")
422 })
423
424 t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) {
425 // An unfinalized min_sdk_version has no numeric value yet.
426 runTest(t, "", "Unfinalized", "Unfinalized")
427 })
428}
429
Jiakai Zhangea180332021-09-26 08:58:02 +0000430func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) {
431 result := android.GroupFixturePreparers(
432 prepareForSdkTestWithJava,
433 android.FixtureAddFile("aidl", nil),
434 android.FixtureAddFile("resource.txt", nil),
435 ).RunTestWithBp(t, `
436 module_exports {
437 name: "myexports",
438 java_systemserver_libs: ["myjavalib"],
439 }
440
441 java_library {
442 name: "myjavalib",
443 srcs: ["Test.java"],
444 java_resources: ["resource.txt"],
445 // The aidl files should not be copied to the snapshot because a java_systemserver_libs member
446 // is not intended to be used for compiling Java, only for accessing the dex implementation
447 // jar.
448 aidl: {
449 export_include_dirs: ["aidl"],
450 },
451 system_modules: "none",
452 sdk_version: "none",
453 compile_dex: true,
454 permitted_packages: ["pkg.myjavalib"],
455 }
456 `)
457
458 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000459 checkAndroidBpContents(`
Jiakai Zhangea180332021-09-26 08:58:02 +0000460// This is auto-generated. DO NOT EDIT.
461
462java_import {
463 name: "myjavalib",
464 prefer: false,
465 visibility: ["//visibility:public"],
466 apex_available: ["//apex_available:platform"],
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000467 jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"],
Jiakai Zhangea180332021-09-26 08:58:02 +0000468 permitted_packages: ["pkg.myjavalib"],
469}
470`),
Jiakai Zhangea180332021-09-26 08:58:02 +0000471 checkAllCopyRules(`
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000472.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar
Jiakai Zhangea180332021-09-26 08:58:02 +0000473`),
474 )
475}
476
Paul Duffina0dbf432019-12-05 11:25:53 +0000477func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000478 result := android.GroupFixturePreparers(
479 prepareForSdkTestWithJava,
480 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
481 ).RunTestWithBp(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000482 module_exports {
483 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000484 device_supported: false,
485 host_supported: true,
486 java_libs: ["myjavalib"],
487 }
488
489 java_library {
490 name: "myjavalib",
491 device_supported: false,
492 host_supported: true,
493 srcs: ["Test.java"],
494 aidl: {
495 export_include_dirs: ["aidl"],
496 },
497 system_modules: "none",
498 sdk_version: "none",
499 compile_dex: true,
500 }
501 `)
502
Paul Duffin36474d32021-03-12 12:19:43 +0000503 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000504 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +0000505// This is auto-generated. DO NOT EDIT.
506
507java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100508 name: "myjavalib",
509 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100510 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000511 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000512 device_supported: false,
513 host_supported: true,
514 jars: ["java/myjavalib.jar"],
515}
Paul Duffine1381882021-04-16 17:05:10 +0100516`),
Paul Duffina80fdec2019-12-03 15:25:00 +0000517 checkAllCopyRules(`
518.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
519aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
520`),
521 )
522}
523
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000524func TestSnapshotWithJavaTest(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000525 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000526 module_exports {
527 name: "myexports",
528 java_tests: ["myjavatests"],
529 }
530
531 java_test {
532 name: "myjavatests",
533 srcs: ["Test.java"],
534 system_modules: "none",
535 sdk_version: "none",
536 compile_dex: true,
537 host_supported: true,
538 }
539 `)
540
Paul Duffin36474d32021-03-12 12:19:43 +0000541 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000542 checkAndroidBpContents(`
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000543// This is auto-generated. DO NOT EDIT.
544
545java_test_import {
Paul Duffine1381882021-04-16 17:05:10 +0100546 name: "myjavatests",
547 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100548 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000549 apex_available: ["//apex_available:platform"],
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000550 jars: ["java/myjavatests.jar"],
551 test_config: "java/myjavatests-AndroidTest.xml",
552}
Paul Duffine1381882021-04-16 17:05:10 +0100553`),
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000554 checkAllCopyRules(`
555.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
556.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
557`),
558 )
559}
560
561func TestHostSnapshotWithJavaTest(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000562 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000563 module_exports {
564 name: "myexports",
565 device_supported: false,
566 host_supported: true,
567 java_tests: ["myjavatests"],
568 }
569
570 java_test {
571 name: "myjavatests",
572 device_supported: false,
573 host_supported: true,
574 srcs: ["Test.java"],
575 system_modules: "none",
576 sdk_version: "none",
577 compile_dex: true,
578 }
579 `)
580
Paul Duffin36474d32021-03-12 12:19:43 +0000581 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000582 checkAndroidBpContents(`
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000583// This is auto-generated. DO NOT EDIT.
584
585java_test_import {
Paul Duffine1381882021-04-16 17:05:10 +0100586 name: "myjavatests",
587 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100588 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000589 apex_available: ["//apex_available:platform"],
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000590 device_supported: false,
591 host_supported: true,
592 jars: ["java/myjavatests.jar"],
593 test_config: "java/myjavatests-AndroidTest.xml",
594}
Paul Duffine1381882021-04-16 17:05:10 +0100595`),
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000596 checkAllCopyRules(`
597.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
598.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
599`),
600 )
601}
602
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000603func TestSnapshotWithJavaSystemModules(t *testing.T) {
Paul Duffin958806b2022-05-16 13:10:47 +0000604 result := android.GroupFixturePreparers(
605 prepareForSdkTestWithJava,
606 java.PrepareForTestWithJavaDefaultModules,
607 java.PrepareForTestWithJavaSdkLibraryFiles,
608 java.FixtureWithPrebuiltApisAndExtensions(map[string][]string{
609 "31": {"myjavalib"},
610 "32": {"myjavalib"},
611 "current": {"myjavalib"},
612 }, map[string][]string{
613 "1": {"myjavalib"},
614 "2": {"myjavalib"},
615 }),
Jihoon Kangf55a5f72024-01-08 08:56:20 +0000616 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
617 variables.BuildFlags = map[string]string{
618 "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true",
619 }
620 }),
Paul Duffin958806b2022-05-16 13:10:47 +0000621 ).RunTestWithBp(t, `
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000622 sdk {
623 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000624 java_header_libs: ["exported-system-module"],
Paul Duffin33028712021-06-22 11:00:07 +0100625 java_sdk_libs: ["myjavalib"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000626 java_system_modules: ["my-system-modules"],
627 }
628
Paul Duffin33028712021-06-22 11:00:07 +0100629 java_sdk_library {
630 name: "myjavalib",
631 apex_available: ["//apex_available:anyapex"],
632 srcs: ["Test.java"],
633 sdk_version: "current",
634 shared_library: false,
635 public: {
636 enabled: true,
637 },
638 }
639
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000640 java_system_modules {
641 name: "my-system-modules",
Paul Duffin33028712021-06-22 11:00:07 +0100642 libs: ["system-module", "exported-system-module", "myjavalib.stubs"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000643 }
644
645 java_library {
646 name: "system-module",
647 srcs: ["Test.java"],
648 sdk_version: "none",
649 system_modules: "none",
650 }
Paul Duffin72910952020-01-20 18:16:30 +0000651
652 java_library {
653 name: "exported-system-module",
654 srcs: ["Test.java"],
655 sdk_version: "none",
656 system_modules: "none",
657 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000658 `)
659
Paul Duffin36474d32021-03-12 12:19:43 +0000660 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000661 checkAndroidBpContents(`
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000662// This is auto-generated. DO NOT EDIT.
663
664java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100665 name: "exported-system-module",
666 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100667 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000668 apex_available: ["//apex_available:platform"],
Paul Duffin72910952020-01-20 18:16:30 +0000669 jars: ["java/exported-system-module.jar"],
670}
671
672java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100673 name: "mysdk_system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000674 prefer: false,
Paul Duffine1381882021-04-16 17:05:10 +0100675 visibility: ["//visibility:private"],
676 apex_available: ["//apex_available:platform"],
677 jars: ["java/system-module.jar"],
678}
679
Paul Duffin33028712021-06-22 11:00:07 +0100680java_sdk_library_import {
681 name: "myjavalib",
682 prefer: false,
683 visibility: ["//visibility:public"],
684 apex_available: ["//apex_available:anyapex"],
685 shared_library: false,
686 public: {
687 jars: ["sdk_library/public/myjavalib-stubs.jar"],
688 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
689 current_api: "sdk_library/public/myjavalib.txt",
690 removed_api: "sdk_library/public/myjavalib-removed.txt",
691 sdk_version: "current",
692 },
693}
694
Paul Duffine1381882021-04-16 17:05:10 +0100695java_system_modules_import {
696 name: "my-system-modules",
697 prefer: false,
698 visibility: ["//visibility:public"],
699 libs: [
700 "mysdk_system-module",
701 "exported-system-module",
Paul Duffinb97b1572021-04-29 21:50:40 +0100702 "myjavalib.stubs",
Paul Duffine1381882021-04-16 17:05:10 +0100703 ],
704}
705`),
Paul Duffin72910952020-01-20 18:16:30 +0000706 checkAllCopyRules(`
707.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
708.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
Jihoon Kangf55a5f72024-01-08 08:56:20 +0000709.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
710.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
711.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin72910952020-01-20 18:16:30 +0000712`),
Paul Duffin958806b2022-05-16 13:10:47 +0000713 checkInfoContents(result.Config, `
Paul Duffinc6ba1822022-05-06 09:38:02 +0000714[
715 {
716 "@type": "sdk",
717 "@name": "mysdk",
718 "java_header_libs": [
719 "exported-system-module",
720 "system-module"
721 ],
722 "java_sdk_libs": [
723 "myjavalib"
724 ],
725 "java_system_modules": [
726 "my-system-modules"
727 ]
728 },
729 {
730 "@type": "java_library",
731 "@name": "exported-system-module"
732 },
733 {
734 "@type": "java_system_modules",
735 "@name": "my-system-modules",
736 "@deps": [
737 "exported-system-module",
738 "system-module"
739 ]
740 },
741 {
742 "@type": "java_sdk_library",
Paul Duffin958806b2022-05-16 13:10:47 +0000743 "@name": "myjavalib",
744 "dist_stem": "myjavalib",
745 "scopes": {
746 "public": {
747 "current_api": "sdk_library/public/myjavalib.txt",
748 "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.public.latest/gen/myjavalib.api.public.latest",
749 "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.public.latest/gen/myjavalib-removed.api.public.latest",
750 "removed_api": "sdk_library/public/myjavalib-removed.txt"
751 }
752 }
Paul Duffinc6ba1822022-05-06 09:38:02 +0000753 },
754 {
755 "@type": "java_library",
756 "@name": "system-module"
757 }
758]
759`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000760 )
761}
762
763func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000764 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000765 sdk {
766 name: "mysdk",
767 device_supported: false,
768 host_supported: true,
769 java_system_modules: ["my-system-modules"],
770 }
771
772 java_system_modules {
773 name: "my-system-modules",
774 device_supported: false,
775 host_supported: true,
776 libs: ["system-module"],
777 }
778
779 java_library {
780 name: "system-module",
781 device_supported: false,
782 host_supported: true,
783 srcs: ["Test.java"],
784 sdk_version: "none",
785 system_modules: "none",
786 }
787 `)
788
Paul Duffin36474d32021-03-12 12:19:43 +0000789 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000790 checkAndroidBpContents(`
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000791// This is auto-generated. DO NOT EDIT.
792
793java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100794 name: "mysdk_system-module",
795 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000796 visibility: ["//visibility:private"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000797 apex_available: ["//apex_available:platform"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000798 device_supported: false,
799 host_supported: true,
800 jars: ["java/system-module.jar"],
801}
802
Paul Duffine1381882021-04-16 17:05:10 +0100803java_system_modules_import {
804 name: "my-system-modules",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000805 prefer: false,
Paul Duffine1381882021-04-16 17:05:10 +0100806 visibility: ["//visibility:public"],
807 device_supported: false,
808 host_supported: true,
809 libs: ["mysdk_system-module"],
810}
811`),
Colin Crossf06d8dc2023-07-18 22:11:07 -0700812 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac-header/system-module.jar -> java/system-module.jar"),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000813 )
814}
Paul Duffin865171e2020-03-02 18:38:15 +0000815
816func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000817 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin865171e2020-03-02 18:38:15 +0000818 module_exports {
819 name: "myexports",
820 host_supported: true,
821 java_libs: ["myjavalib"],
822 target: {
823 android: {
824 java_header_libs: ["androidjavalib"],
825 },
826 host: {
827 java_header_libs: ["hostjavalib"],
828 },
829 },
830 }
831
832 java_library {
833 name: "myjavalib",
834 host_supported: true,
835 srcs: ["Test.java"],
836 system_modules: "none",
837 sdk_version: "none",
838 }
839
840 java_library {
841 name: "androidjavalib",
842 srcs: ["Test.java"],
843 system_modules: "none",
844 sdk_version: "none",
845 }
846
847 java_library_host {
848 name: "hostjavalib",
849 srcs: ["Test.java"],
850 }
851 `)
852
Paul Duffin36474d32021-03-12 12:19:43 +0000853 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000854 checkAndroidBpContents(`
Paul Duffin865171e2020-03-02 18:38:15 +0000855// This is auto-generated. DO NOT EDIT.
856
857java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100858 name: "hostjavalib",
859 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100860 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000861 apex_available: ["//apex_available:platform"],
Paul Duffin865171e2020-03-02 18:38:15 +0000862 device_supported: false,
863 host_supported: true,
864 jars: ["java/hostjavalib.jar"],
865}
866
867java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100868 name: "androidjavalib",
Paul Duffin865171e2020-03-02 18:38:15 +0000869 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100870 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000871 apex_available: ["//apex_available:platform"],
Paul Duffine1381882021-04-16 17:05:10 +0100872 jars: ["java/androidjavalib.jar"],
873}
874
875java_import {
876 name: "myjavalib",
877 prefer: false,
878 visibility: ["//visibility:public"],
879 apex_available: ["//apex_available:platform"],
880 host_supported: true,
881 target: {
882 android: {
883 jars: ["java/android/myjavalib.jar"],
884 },
885 linux_glibc: {
886 jars: ["java/linux_glibc/myjavalib.jar"],
887 },
888 },
889}
890`),
Paul Duffin865171e2020-03-02 18:38:15 +0000891 checkAllCopyRules(`
Colin Crossf06d8dc2023-07-18 22:11:07 -0700892.intermediates/hostjavalib/linux_glibc_common/javac-header/hostjavalib.jar -> java/hostjavalib.jar
Paul Duffin865171e2020-03-02 18:38:15 +0000893.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
894.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
895.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
896`),
897 )
898}
Paul Duffindd46f712020-02-10 13:37:10 +0000899
900func TestSnapshotWithJavaSdkLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000901 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffindd46f712020-02-10 13:37:10 +0000902 sdk {
903 name: "mysdk",
904 java_sdk_libs: ["myjavalib"],
905 }
906
907 java_sdk_library {
908 name: "myjavalib",
909 apex_available: ["//apex_available:anyapex"],
910 srcs: ["Test.java"],
911 sdk_version: "current",
Paul Duffind7eb1c22020-05-26 20:57:10 +0100912 shared_library: false,
Paul Duffin4911a892020-04-29 23:35:13 +0100913 stubs_library_visibility: ["//other"],
914 stubs_source_visibility: ["//another"],
Paul Duffin869de142021-07-15 14:14:41 +0100915 permitted_packages: ["pkg.myjavalib"],
Paul Duffindd46f712020-02-10 13:37:10 +0000916 }
917 `)
918
Paul Duffin36474d32021-03-12 12:19:43 +0000919 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000920 checkAndroidBpContents(`
Paul Duffindd46f712020-02-10 13:37:10 +0000921// This is auto-generated. DO NOT EDIT.
922
923java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +0100924 name: "myjavalib",
925 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100926 visibility: ["//visibility:public"],
Paul Duffindd46f712020-02-10 13:37:10 +0000927 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +0100928 shared_library: false,
Paul Duffin869de142021-07-15 14:14:41 +0100929 permitted_packages: ["pkg.myjavalib"],
Paul Duffindd46f712020-02-10 13:37:10 +0000930 public: {
931 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000932 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100933 current_api: "sdk_library/public/myjavalib.txt",
934 removed_api: "sdk_library/public/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000935 sdk_version: "current",
936 },
937 system: {
938 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000939 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100940 current_api: "sdk_library/system/myjavalib.txt",
941 removed_api: "sdk_library/system/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000942 sdk_version: "system_current",
943 },
944 test: {
945 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000946 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100947 current_api: "sdk_library/test/myjavalib.txt",
948 removed_api: "sdk_library/test/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000949 sdk_version: "test_current",
950 },
951}
Paul Duffine1381882021-04-16 17:05:10 +0100952`),
Paul Duffindd46f712020-02-10 13:37:10 +0000953 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +0000954.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
955.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
956.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
957.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
958.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
959.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
960.intermediates/myjavalib.stubs.exportable.test/android_common/combined/myjavalib.stubs.exportable.test.jar -> sdk_library/test/myjavalib-stubs.jar
961.intermediates/myjavalib.stubs.source.test/android_common/exportable/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
962.intermediates/myjavalib.stubs.source.test/android_common/exportable/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +0000963`),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100964 checkMergeZips(
965 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
966 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
Paul Duffin33028712021-06-22 11:00:07 +0100967 ".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip",
968 ),
Paul Duffindd46f712020-02-10 13:37:10 +0000969 )
970}
Paul Duffin3375e352020-04-28 10:44:03 +0100971
Paul Duffine8409952022-09-22 16:24:46 +0100972func TestSnapshotWithJavaSdkLibrary_DistStem(t *testing.T) {
973 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
974 sdk {
975 name: "mysdk",
976 java_sdk_libs: ["myjavalib-foo"],
977 }
978
979 java_sdk_library {
980 name: "myjavalib-foo",
981 apex_available: ["//apex_available:anyapex"],
982 srcs: ["Test.java"],
983 sdk_version: "current",
984 shared_library: false,
985 public: {
986 enabled: true,
987 },
988 dist_stem: "myjavalib",
989 }
990 `)
991
992 CheckSnapshot(t, result, "mysdk", "",
993 checkAndroidBpContents(`
994// This is auto-generated. DO NOT EDIT.
995
996java_sdk_library_import {
997 name: "myjavalib-foo",
998 prefer: false,
999 visibility: ["//visibility:public"],
1000 apex_available: ["//apex_available:anyapex"],
1001 shared_library: false,
1002 public: {
1003 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1004 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1005 current_api: "sdk_library/public/myjavalib.txt",
1006 removed_api: "sdk_library/public/myjavalib-removed.txt",
1007 sdk_version: "current",
1008 },
1009}
1010`),
1011 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001012.intermediates/myjavalib-foo.stubs.exportable/android_common/combined/myjavalib-foo.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1013.intermediates/myjavalib-foo.stubs.source/android_common/exportable/myjavalib-foo.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1014.intermediates/myjavalib-foo.stubs.source/android_common/exportable/myjavalib-foo.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffine8409952022-09-22 16:24:46 +01001015`),
1016 checkMergeZips(
1017 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1018 ),
1019 )
1020}
1021
Paul Duffin22628d52021-05-12 23:13:22 +01001022func TestSnapshotWithJavaSdkLibrary_UseSrcJar(t *testing.T) {
1023 result := android.GroupFixturePreparers(
1024 prepareForSdkTestWithJavaSdkLibrary,
1025 android.FixtureMergeEnv(map[string]string{
1026 "SOONG_SDK_SNAPSHOT_USE_SRCJAR": "true",
1027 }),
1028 ).RunTestWithBp(t, `
1029 sdk {
1030 name: "mysdk",
1031 java_sdk_libs: ["myjavalib"],
1032 }
1033
1034 java_sdk_library {
1035 name: "myjavalib",
1036 srcs: ["Test.java"],
1037 sdk_version: "current",
1038 shared_library: false,
1039 public: {
1040 enabled: true,
1041 },
1042 }
1043 `)
1044
1045 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001046 checkAndroidBpContents(`
Paul Duffin22628d52021-05-12 23:13:22 +01001047// This is auto-generated. DO NOT EDIT.
1048
1049java_sdk_library_import {
1050 name: "myjavalib",
1051 prefer: false,
1052 visibility: ["//visibility:public"],
1053 apex_available: ["//apex_available:platform"],
1054 shared_library: false,
1055 public: {
1056 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1057 stub_srcs: ["sdk_library/public/myjavalib.srcjar"],
1058 current_api: "sdk_library/public/myjavalib.txt",
1059 removed_api: "sdk_library/public/myjavalib-removed.txt",
1060 sdk_version: "current",
1061 },
1062}
1063 `),
1064 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001065.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1066.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source-stubs.srcjar -> sdk_library/public/myjavalib.srcjar
1067.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1068.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin22628d52021-05-12 23:13:22 +01001069 `),
1070 )
1071}
1072
Anton Hanssond78eb762021-09-21 15:25:12 +01001073func TestSnapshotWithJavaSdkLibrary_AnnotationsZip(t *testing.T) {
1074 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1075 sdk {
1076 name: "mysdk",
1077 java_sdk_libs: ["myjavalib"],
1078 }
1079
1080 java_sdk_library {
1081 name: "myjavalib",
1082 srcs: ["Test.java"],
1083 sdk_version: "current",
1084 shared_library: false,
1085 annotations_enabled: true,
1086 public: {
1087 enabled: true,
1088 },
1089 }
1090 `)
1091
1092 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001093 checkAndroidBpContents(`
Anton Hanssond78eb762021-09-21 15:25:12 +01001094// This is auto-generated. DO NOT EDIT.
1095
1096java_sdk_library_import {
1097 name: "myjavalib",
1098 prefer: false,
1099 visibility: ["//visibility:public"],
1100 apex_available: ["//apex_available:platform"],
1101 shared_library: false,
1102 public: {
1103 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1104 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1105 current_api: "sdk_library/public/myjavalib.txt",
1106 removed_api: "sdk_library/public/myjavalib-removed.txt",
1107 annotations: "sdk_library/public/myjavalib_annotations.zip",
1108 sdk_version: "current",
1109 },
1110}
1111 `),
1112 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001113.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1114.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1115.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1116.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_annotations.zip -> sdk_library/public/myjavalib_annotations.zip
Anton Hanssond78eb762021-09-21 15:25:12 +01001117 `),
1118 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1119 )
1120}
1121
Paul Duffina54016c2022-01-27 16:39:47 +00001122func TestSnapshotWithJavaSdkLibrary_AnnotationsZip_PreT(t *testing.T) {
1123 result := android.GroupFixturePreparers(
1124 prepareForSdkTestWithJavaSdkLibrary,
1125 android.FixtureMergeEnv(map[string]string{
1126 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S",
1127 }),
1128 ).RunTestWithBp(t, `
1129 sdk {
1130 name: "mysdk",
1131 java_sdk_libs: ["myjavalib"],
1132 }
1133
1134 java_sdk_library {
1135 name: "myjavalib",
1136 srcs: ["Test.java"],
Paul Duffin1938dba2022-07-26 23:53:00 +00001137 sdk_version: "S",
Paul Duffina54016c2022-01-27 16:39:47 +00001138 shared_library: false,
1139 annotations_enabled: true,
1140 public: {
1141 enabled: true,
1142 },
1143 }
1144 `)
1145
1146 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001147 checkAndroidBpContents(`
Paul Duffina54016c2022-01-27 16:39:47 +00001148// This is auto-generated. DO NOT EDIT.
1149
1150java_sdk_library_import {
1151 name: "myjavalib",
1152 prefer: false,
1153 visibility: ["//visibility:public"],
1154 apex_available: ["//apex_available:platform"],
1155 shared_library: false,
1156 public: {
1157 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1158 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1159 current_api: "sdk_library/public/myjavalib.txt",
1160 removed_api: "sdk_library/public/myjavalib-removed.txt",
1161 sdk_version: "current",
1162 },
1163}
1164 `),
1165 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001166.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1167.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1168.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffina54016c2022-01-27 16:39:47 +00001169 `),
1170 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1171 )
1172}
1173
Paul Duffin1267d872021-04-16 17:21:36 +01001174func TestSnapshotWithJavaSdkLibrary_CompileDex(t *testing.T) {
Jihoon Kangbd093452023-12-26 19:08:01 +00001175 result := android.GroupFixturePreparers(
1176 prepareForSdkTestWithJavaSdkLibrary,
1177 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
1178 variables.BuildFlags = map[string]string{
1179 "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true",
1180 }
1181 }),
1182 ).RunTestWithBp(t, `
Paul Duffin1267d872021-04-16 17:21:36 +01001183 sdk {
1184 name: "mysdk",
1185 java_sdk_libs: ["myjavalib"],
1186 }
1187
1188 java_sdk_library {
1189 name: "myjavalib",
1190 srcs: ["Test.java"],
1191 sdk_version: "current",
1192 shared_library: false,
1193 compile_dex: true,
1194 public: {
1195 enabled: true,
1196 },
1197 system: {
1198 enabled: true,
1199 },
1200 }
1201 `)
1202
1203 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001204 checkAndroidBpContents(`
Paul Duffin1267d872021-04-16 17:21:36 +01001205// This is auto-generated. DO NOT EDIT.
1206
1207java_sdk_library_import {
1208 name: "myjavalib",
1209 prefer: false,
1210 visibility: ["//visibility:public"],
1211 apex_available: ["//apex_available:platform"],
1212 shared_library: false,
1213 compile_dex: true,
1214 public: {
1215 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1216 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1217 current_api: "sdk_library/public/myjavalib.txt",
1218 removed_api: "sdk_library/public/myjavalib-removed.txt",
1219 sdk_version: "current",
1220 },
1221 system: {
1222 jars: ["sdk_library/system/myjavalib-stubs.jar"],
1223 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1224 current_api: "sdk_library/system/myjavalib.txt",
1225 removed_api: "sdk_library/system/myjavalib-removed.txt",
1226 sdk_version: "system_current",
1227 },
1228}
1229`),
1230 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
1231 ctx := android.ModuleInstallPathContextForTesting(result.Config)
1232 dexJarBuildPath := func(name string, kind android.SdkKind) string {
1233 dep := result.Module(name, "android_common").(java.SdkLibraryDependency)
Jihoon Kangbd093452023-12-26 19:08:01 +00001234 path := dep.SdkApiExportableStubDexJar(ctx, kind).Path()
Paul Duffin1267d872021-04-16 17:21:36 +01001235 return path.RelativeToTop().String()
1236 }
1237
1238 dexJarPath := dexJarBuildPath("myjavalib", android.SdkPublic)
Jihoon Kangbd093452023-12-26 19:08:01 +00001239 android.AssertStringEquals(t, "source dex public stubs jar build path", "out/soong/.intermediates/myjavalib.stubs.exportable/android_common/dex/myjavalib.stubs.exportable.jar", dexJarPath)
Paul Duffin1267d872021-04-16 17:21:36 +01001240
1241 dexJarPath = dexJarBuildPath("myjavalib", android.SdkSystem)
Jihoon Kangbd093452023-12-26 19:08:01 +00001242 systemDexJar := "out/soong/.intermediates/myjavalib.stubs.exportable.system/android_common/dex/myjavalib.stubs.exportable.system.jar"
Paul Duffin1267d872021-04-16 17:21:36 +01001243 android.AssertStringEquals(t, "source dex system stubs jar build path", systemDexJar, dexJarPath)
1244
1245 // This should fall back to system as module is not available.
1246 dexJarPath = dexJarBuildPath("myjavalib", android.SdkModule)
1247 android.AssertStringEquals(t, "source dex module stubs jar build path", systemDexJar, dexJarPath)
1248
Jihoon Kangbd093452023-12-26 19:08:01 +00001249 // Prebuilt dex jar does not come from the exportable stubs.
Paul Duffin1267d872021-04-16 17:21:36 +01001250 dexJarPath = dexJarBuildPath(android.PrebuiltNameFromSource("myjavalib"), android.SdkPublic)
1251 android.AssertStringEquals(t, "prebuilt dex public stubs jar build path", "out/soong/.intermediates/snapshot/prebuilt_myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath)
1252 }),
1253 )
1254}
1255
Paul Duffin780c5f42020-05-12 15:52:55 +01001256func TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001257 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin780c5f42020-05-12 15:52:55 +01001258 sdk {
1259 name: "mysdk",
1260 java_sdk_libs: ["myjavalib"],
1261 }
1262
1263 java_sdk_library {
1264 name: "myjavalib",
1265 srcs: ["Test.java"],
1266 sdk_version: "none",
1267 system_modules: "none",
1268 }
1269 `)
1270
Paul Duffin36474d32021-03-12 12:19:43 +00001271 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001272 checkAndroidBpContents(`
Paul Duffin780c5f42020-05-12 15:52:55 +01001273// This is auto-generated. DO NOT EDIT.
1274
1275java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001276 name: "myjavalib",
1277 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001278 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001279 apex_available: ["//apex_available:platform"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001280 shared_library: true,
Paul Duffin780c5f42020-05-12 15:52:55 +01001281 public: {
1282 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001283 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin780c5f42020-05-12 15:52:55 +01001284 current_api: "sdk_library/public/myjavalib.txt",
1285 removed_api: "sdk_library/public/myjavalib-removed.txt",
1286 sdk_version: "none",
1287 },
1288}
Paul Duffine1381882021-04-16 17:05:10 +01001289`),
Paul Duffin780c5f42020-05-12 15:52:55 +01001290 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001291.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1292.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1293.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin780c5f42020-05-12 15:52:55 +01001294`),
1295 checkMergeZips(
1296 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1297 ),
1298 )
1299}
1300
Paul Duffin87a05a32020-05-12 11:50:28 +01001301func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001302 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin87a05a32020-05-12 11:50:28 +01001303 sdk {
1304 name: "mysdk",
1305 java_sdk_libs: ["myjavalib"],
1306 }
1307
1308 java_sdk_library {
1309 name: "myjavalib",
1310 srcs: ["Test.java"],
1311 sdk_version: "module_current",
1312 public: {
1313 enabled: true,
1314 sdk_version: "module_current",
1315 },
1316 }
1317 `)
1318
Paul Duffin36474d32021-03-12 12:19:43 +00001319 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001320 checkAndroidBpContents(`
Paul Duffin87a05a32020-05-12 11:50:28 +01001321// This is auto-generated. DO NOT EDIT.
1322
1323java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001324 name: "myjavalib",
1325 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001326 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001327 apex_available: ["//apex_available:platform"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001328 shared_library: true,
Paul Duffin87a05a32020-05-12 11:50:28 +01001329 public: {
1330 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001331 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin87a05a32020-05-12 11:50:28 +01001332 current_api: "sdk_library/public/myjavalib.txt",
1333 removed_api: "sdk_library/public/myjavalib-removed.txt",
1334 sdk_version: "module_current",
1335 },
1336}
Paul Duffine1381882021-04-16 17:05:10 +01001337`),
Paul Duffin87a05a32020-05-12 11:50:28 +01001338 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001339.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1340.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1341.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin87a05a32020-05-12 11:50:28 +01001342`),
1343 checkMergeZips(
1344 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1345 ),
1346 )
1347}
1348
1349func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001350 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin3375e352020-04-28 10:44:03 +01001351 sdk {
1352 name: "mysdk",
1353 java_sdk_libs: ["myjavalib"],
1354 }
1355
1356 java_sdk_library {
1357 name: "myjavalib",
1358 apex_available: ["//apex_available:anyapex"],
1359 srcs: ["Test.java"],
1360 sdk_version: "current",
1361 public: {
1362 enabled: true,
1363 },
1364 system: {
1365 enabled: true,
1366 },
1367 }
1368 `)
1369
Paul Duffin36474d32021-03-12 12:19:43 +00001370 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001371 checkAndroidBpContents(`
Paul Duffin3375e352020-04-28 10:44:03 +01001372// This is auto-generated. DO NOT EDIT.
1373
1374java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001375 name: "myjavalib",
1376 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001377 visibility: ["//visibility:public"],
Paul Duffin3375e352020-04-28 10:44:03 +01001378 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001379 shared_library: true,
Paul Duffin3375e352020-04-28 10:44:03 +01001380 public: {
1381 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001382 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin3375e352020-04-28 10:44:03 +01001383 current_api: "sdk_library/public/myjavalib.txt",
1384 removed_api: "sdk_library/public/myjavalib-removed.txt",
1385 sdk_version: "current",
1386 },
1387 system: {
1388 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001389 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin3375e352020-04-28 10:44:03 +01001390 current_api: "sdk_library/system/myjavalib.txt",
1391 removed_api: "sdk_library/system/myjavalib-removed.txt",
1392 sdk_version: "system_current",
1393 },
1394}
Paul Duffine1381882021-04-16 17:05:10 +01001395`),
Paul Duffin3375e352020-04-28 10:44:03 +01001396 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001397.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1398.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1399.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1400.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
1401.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1402.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffin3375e352020-04-28 10:44:03 +01001403`),
1404 checkMergeZips(
1405 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1406 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1407 ),
1408 )
1409}
Paul Duffin8f265b92020-04-28 14:13:56 +01001410
1411func TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001412 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin8f265b92020-04-28 14:13:56 +01001413 sdk {
1414 name: "mysdk",
1415 java_sdk_libs: ["myjavalib"],
1416 }
1417
1418 java_sdk_library {
1419 name: "myjavalib",
1420 apex_available: ["//apex_available:anyapex"],
1421 srcs: ["Test.java"],
1422 sdk_version: "current",
1423 public: {
1424 enabled: true,
1425 },
1426 system: {
1427 enabled: true,
1428 },
1429 module_lib: {
1430 enabled: true,
1431 },
1432 }
1433 `)
1434
Paul Duffin36474d32021-03-12 12:19:43 +00001435 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001436 checkAndroidBpContents(`
Paul Duffin8f265b92020-04-28 14:13:56 +01001437// This is auto-generated. DO NOT EDIT.
1438
1439java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001440 name: "myjavalib",
1441 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001442 visibility: ["//visibility:public"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001443 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001444 shared_library: true,
Paul Duffin8f265b92020-04-28 14:13:56 +01001445 public: {
1446 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001447 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001448 current_api: "sdk_library/public/myjavalib.txt",
1449 removed_api: "sdk_library/public/myjavalib-removed.txt",
1450 sdk_version: "current",
1451 },
1452 system: {
1453 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001454 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001455 current_api: "sdk_library/system/myjavalib.txt",
1456 removed_api: "sdk_library/system/myjavalib-removed.txt",
1457 sdk_version: "system_current",
1458 },
1459 module_lib: {
Paul Duffin6b836ba2020-05-13 19:19:49 +01001460 jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001461 stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
Paul Duffin6b836ba2020-05-13 19:19:49 +01001462 current_api: "sdk_library/module-lib/myjavalib.txt",
1463 removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
Paul Duffin8f265b92020-04-28 14:13:56 +01001464 sdk_version: "module_current",
1465 },
1466}
Paul Duffine1381882021-04-16 17:05:10 +01001467`),
Paul Duffin8f265b92020-04-28 14:13:56 +01001468 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001469.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1470.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1471.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1472.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
1473.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1474.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1475.intermediates/myjavalib.stubs.exportable.module_lib/android_common/combined/myjavalib.stubs.exportable.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar
1476.intermediates/myjavalib.stubs.source.module_lib/android_common/exportable/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
1477.intermediates/myjavalib.stubs.source.module_lib/android_common/exportable/myjavalib.stubs.source.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
Paul Duffin8f265b92020-04-28 14:13:56 +01001478`),
1479 checkMergeZips(
Paul Duffin74f1dcd2022-07-18 13:18:23 +00001480 ".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001481 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1482 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001483 ),
1484 )
1485}
Paul Duffinf7a64332020-05-13 16:54:55 +01001486
Paul Duffin0c5bae52020-06-02 13:00:08 +01001487func TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001488 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin0c5bae52020-06-02 13:00:08 +01001489 sdk {
1490 name: "mysdk",
1491 java_sdk_libs: ["myjavalib"],
1492 }
1493
1494 java_sdk_library {
1495 name: "myjavalib",
1496 apex_available: ["//apex_available:anyapex"],
1497 srcs: ["Test.java"],
1498 sdk_version: "current",
1499 public: {
1500 enabled: true,
1501 },
1502 system_server: {
1503 enabled: true,
1504 },
1505 }
1506 `)
1507
Paul Duffin36474d32021-03-12 12:19:43 +00001508 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001509 checkAndroidBpContents(`
Paul Duffin0c5bae52020-06-02 13:00:08 +01001510// This is auto-generated. DO NOT EDIT.
1511
1512java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001513 name: "myjavalib",
1514 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001515 visibility: ["//visibility:public"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001516 apex_available: ["//apex_available:anyapex"],
1517 shared_library: true,
1518 public: {
1519 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001520 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001521 current_api: "sdk_library/public/myjavalib.txt",
1522 removed_api: "sdk_library/public/myjavalib-removed.txt",
1523 sdk_version: "current",
1524 },
1525 system_server: {
1526 jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001527 stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001528 current_api: "sdk_library/system-server/myjavalib.txt",
1529 removed_api: "sdk_library/system-server/myjavalib-removed.txt",
1530 sdk_version: "system_server_current",
1531 },
1532}
Paul Duffine1381882021-04-16 17:05:10 +01001533`),
Paul Duffin0c5bae52020-06-02 13:00:08 +01001534 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001535.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1536.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1537.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1538.intermediates/myjavalib.stubs.exportable.system_server/android_common/combined/myjavalib.stubs.exportable.system_server.jar -> sdk_library/system-server/myjavalib-stubs.jar
1539.intermediates/myjavalib.stubs.source.system_server/android_common/exportable/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt
1540.intermediates/myjavalib.stubs.source.system_server/android_common/exportable/myjavalib.stubs.source.system_server_removed.txt -> sdk_library/system-server/myjavalib-removed.txt
Paul Duffin0c5bae52020-06-02 13:00:08 +01001541`),
1542 checkMergeZips(
1543 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1544 ".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip",
1545 ),
1546 )
1547}
1548
Paul Duffinf7a64332020-05-13 16:54:55 +01001549func TestSnapshotWithJavaSdkLibrary_NamingScheme(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001550 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffinf7a64332020-05-13 16:54:55 +01001551 sdk {
1552 name: "mysdk",
1553 java_sdk_libs: ["myjavalib"],
1554 }
1555
1556 java_sdk_library {
1557 name: "myjavalib",
1558 apex_available: ["//apex_available:anyapex"],
1559 srcs: ["Test.java"],
1560 sdk_version: "current",
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001561 naming_scheme: "default",
Paul Duffinf7a64332020-05-13 16:54:55 +01001562 public: {
1563 enabled: true,
1564 },
1565 }
1566 `)
1567
Paul Duffin36474d32021-03-12 12:19:43 +00001568 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001569 checkAndroidBpContents(`
Paul Duffinf7a64332020-05-13 16:54:55 +01001570// This is auto-generated. DO NOT EDIT.
1571
1572java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001573 name: "myjavalib",
1574 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001575 visibility: ["//visibility:public"],
Paul Duffinf7a64332020-05-13 16:54:55 +01001576 apex_available: ["//apex_available:anyapex"],
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001577 naming_scheme: "default",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001578 shared_library: true,
Paul Duffinf7a64332020-05-13 16:54:55 +01001579 public: {
1580 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001581 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffinf7a64332020-05-13 16:54:55 +01001582 current_api: "sdk_library/public/myjavalib.txt",
1583 removed_api: "sdk_library/public/myjavalib-removed.txt",
1584 sdk_version: "current",
1585 },
1586}
Paul Duffine1381882021-04-16 17:05:10 +01001587`),
Paul Duffinf7a64332020-05-13 16:54:55 +01001588 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001589.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1590.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1591.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffinf7a64332020-05-13 16:54:55 +01001592`),
1593 checkMergeZips(
1594 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1595 ),
1596 )
1597}
Paul Duffina2ae7e02020-09-11 11:55:00 +01001598
1599func TestSnapshotWithJavaSdkLibrary_DoctagFiles(t *testing.T) {
Paul Duffindb462dd2021-03-21 22:01:55 +00001600 result := android.GroupFixturePreparers(
1601 prepareForSdkTestWithJavaSdkLibrary,
1602 android.FixtureAddFile("docs/known_doctags", nil),
1603 ).RunTestWithBp(t, `
Paul Duffina2ae7e02020-09-11 11:55:00 +01001604 sdk {
1605 name: "mysdk",
1606 java_sdk_libs: ["myjavalib"],
1607 }
1608
1609 java_sdk_library {
1610 name: "myjavalib",
1611 srcs: ["Test.java"],
1612 sdk_version: "current",
1613 public: {
1614 enabled: true,
1615 },
1616 doctag_files: ["docs/known_doctags"],
1617 }
1618
1619 filegroup {
1620 name: "mygroup",
1621 srcs: [":myjavalib{.doctags}"],
1622 }
1623 `)
1624
Paul Duffin36474d32021-03-12 12:19:43 +00001625 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001626 checkAndroidBpContents(`
Paul Duffina2ae7e02020-09-11 11:55:00 +01001627// This is auto-generated. DO NOT EDIT.
1628
1629java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001630 name: "myjavalib",
1631 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001632 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001633 apex_available: ["//apex_available:platform"],
Paul Duffina2ae7e02020-09-11 11:55:00 +01001634 shared_library: true,
1635 doctag_files: ["doctags/docs/known_doctags"],
1636 public: {
1637 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001638 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffina2ae7e02020-09-11 11:55:00 +01001639 current_api: "sdk_library/public/myjavalib.txt",
1640 removed_api: "sdk_library/public/myjavalib-removed.txt",
1641 sdk_version: "current",
1642 },
1643}
Paul Duffine1381882021-04-16 17:05:10 +01001644`),
Paul Duffina2ae7e02020-09-11 11:55:00 +01001645 checkAllCopyRules(`
Jihoon Kangf55a5f72024-01-08 08:56:20 +00001646.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1647.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1648.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffina2ae7e02020-09-11 11:55:00 +01001649docs/known_doctags -> doctags/docs/known_doctags
1650`),
1651 )
1652}