blob: 6159ea9c24246a7d8cac4848cc19cd681e898954 [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"),
48)
49
Paul Duffina80fdec2019-12-03 15:25:00 +000050// Contains tests for SDK members provided by the java package.
51
Paul Duffincee7e662020-07-09 17:32:57 +010052func TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +000053 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffincee7e662020-07-09 17:32:57 +010054 sdk {
55 name: "mysdk",
56 java_header_libs: ["sdkmember"],
57 }
58
59 java_library {
60 name: "sdkmember",
61 srcs: ["Test.java"],
62 system_modules: "none",
63 sdk_version: "none",
64 }
Paul Duffincee7e662020-07-09 17:32:57 +010065 `)
66
67 // Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember".
Paul Duffin1822a0a2021-03-21 12:56:33 +000068 sdkChecker := func(t *testing.T, result *android.TestResult) {
69 java.CheckModuleDependencies(t, result.TestContext, "mysdk", "android_common", []string{"sdkmember"})
70 }
Paul Duffincee7e662020-07-09 17:32:57 +010071
Paul Duffin36474d32021-03-12 12:19:43 +000072 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin1822a0a2021-03-21 12:56:33 +000073 snapshotTestChecker(checkSnapshotWithSourcePreferred, sdkChecker),
74 snapshotTestChecker(checkSnapshotPreferredWithSource, sdkChecker),
75 )
Paul Duffincee7e662020-07-09 17:32:57 +010076}
77
Paul Duffina0dbf432019-12-05 11:25:53 +000078func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +000079 result := android.GroupFixturePreparers(
80 prepareForSdkTestWithJava,
81 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
82 ).RunTestWithBp(t, `
Paul Duffina0dbf432019-12-05 11:25:53 +000083 sdk {
84 name: "mysdk",
85 java_header_libs: ["myjavalib"],
86 }
87
88 java_library {
89 name: "myjavalib",
90 srcs: ["Test.java"],
91 aidl: {
92 export_include_dirs: ["aidl"],
93 },
94 system_modules: "none",
95 sdk_version: "none",
96 compile_dex: true,
97 host_supported: true,
Paul Duffin869de142021-07-15 14:14:41 +010098 permitted_packages: ["pkg.myjavalib"],
Paul Duffina0dbf432019-12-05 11:25:53 +000099 }
100 `)
101
Paul Duffin36474d32021-03-12 12:19:43 +0000102 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000103 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100104// This is auto-generated. DO NOT EDIT.
105
106java_import {
107 name: "myjavalib",
108 prefer: false,
109 visibility: ["//visibility:public"],
110 apex_available: ["//apex_available:platform"],
111 jars: ["java/myjavalib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100112 permitted_packages: ["pkg.myjavalib"],
Paul Duffine1381882021-04-16 17:05:10 +0100113}
114`),
Paul Duffina0dbf432019-12-05 11:25:53 +0000115 checkAllCopyRules(`
116.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
117aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
118`),
119 )
120}
121
122func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000123 result := android.GroupFixturePreparers(
124 prepareForSdkTestWithJava,
125 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
126 ).RunTestWithBp(t, `
Paul Duffina0dbf432019-12-05 11:25:53 +0000127 sdk {
128 name: "mysdk",
129 device_supported: false,
130 host_supported: true,
131 java_header_libs: ["myjavalib"],
132 }
133
134 java_library {
135 name: "myjavalib",
136 device_supported: false,
137 host_supported: true,
138 srcs: ["Test.java"],
139 aidl: {
140 export_include_dirs: ["aidl"],
141 },
142 system_modules: "none",
143 sdk_version: "none",
144 compile_dex: true,
145 }
146 `)
147
Paul Duffin36474d32021-03-12 12:19:43 +0000148 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000149 checkAndroidBpContents(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000150// This is auto-generated. DO NOT EDIT.
151
152java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100153 name: "myjavalib",
154 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100155 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000156 apex_available: ["//apex_available:platform"],
Paul Duffina0dbf432019-12-05 11:25:53 +0000157 device_supported: false,
158 host_supported: true,
159 jars: ["java/myjavalib.jar"],
160}
Paul Duffine1381882021-04-16 17:05:10 +0100161`),
Paul Duffina0dbf432019-12-05 11:25:53 +0000162 checkAllCopyRules(`
163.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
164aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
165`),
166 )
167}
168
Paul Duffina04c1072020-03-02 10:16:35 +0000169func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000170 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffina04c1072020-03-02 10:16:35 +0000171 sdk {
172 name: "mysdk",
173 host_supported: true,
174 java_header_libs: ["myjavalib"],
175 }
176
177 java_library {
178 name: "myjavalib",
179 host_supported: true,
180 srcs: ["Test.java"],
181 system_modules: "none",
182 sdk_version: "none",
183 compile_dex: true,
184 }
185 `)
186
Paul Duffin36474d32021-03-12 12:19:43 +0000187 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000188 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000189// This is auto-generated. DO NOT EDIT.
190
191java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100192 name: "myjavalib",
193 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100194 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000195 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000196 host_supported: true,
197 target: {
198 android: {
199 jars: ["java/android/myjavalib.jar"],
200 },
201 linux_glibc: {
202 jars: ["java/linux_glibc/myjavalib.jar"],
203 },
204 },
205}
Paul Duffine1381882021-04-16 17:05:10 +0100206`),
Paul Duffina04c1072020-03-02 10:16:35 +0000207 checkAllCopyRules(`
208.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
209.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
210`),
211 )
212}
213
Paul Duffina0dbf432019-12-05 11:25:53 +0000214func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000215 result := android.GroupFixturePreparers(
216 prepareForSdkTestWithJava,
217 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
Paul Duffindb462dd2021-03-21 22:01:55 +0000218 android.FixtureAddFile("resource.txt", nil),
Paul Duffin9ec86b12021-03-15 11:17:52 +0000219 ).RunTestWithBp(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000220 module_exports {
221 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000222 java_libs: ["myjavalib"],
223 }
224
225 java_library {
226 name: "myjavalib",
227 srcs: ["Test.java"],
Paul Duffin4e772842020-06-24 12:10:42 +0100228 java_resources: ["resource.txt"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000229 aidl: {
230 export_include_dirs: ["aidl"],
231 },
232 system_modules: "none",
233 sdk_version: "none",
234 compile_dex: true,
235 host_supported: true,
236 }
237 `)
238
Paul Duffin36474d32021-03-12 12:19:43 +0000239 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000240 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100241// This is auto-generated. DO NOT EDIT.
242
243java_import {
244 name: "myjavalib",
245 prefer: false,
246 visibility: ["//visibility:public"],
247 apex_available: ["//apex_available:platform"],
248 jars: ["java/myjavalib.jar"],
249}
250`),
Paul Duffina80fdec2019-12-03 15:25:00 +0000251 checkAllCopyRules(`
Paul Duffin4e772842020-06-24 12:10:42 +0100252.intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000253aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
254`),
255 )
256}
257
Paul Duffindb170e42020-12-08 17:48:25 +0000258func TestSnapshotWithJavaBootLibrary(t *testing.T) {
Paul Duffindb462dd2021-03-21 22:01:55 +0000259 result := android.GroupFixturePreparers(
260 prepareForSdkTestWithJava,
261 android.FixtureAddFile("aidl", nil),
262 android.FixtureAddFile("resource.txt", nil),
263 ).RunTestWithBp(t, `
Paul Duffin13648912022-07-15 13:12:35 +0000264 sdk {
265 name: "mysdk",
Paul Duffindb170e42020-12-08 17:48:25 +0000266 java_boot_libs: ["myjavalib"],
267 }
268
269 java_library {
270 name: "myjavalib",
271 srcs: ["Test.java"],
272 java_resources: ["resource.txt"],
273 // The aidl files should not be copied to the snapshot because a java_boot_libs member is not
274 // intended to be used for compiling Java, only for accessing the dex implementation jar.
275 aidl: {
276 export_include_dirs: ["aidl"],
277 },
278 system_modules: "none",
279 sdk_version: "none",
280 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100281 permitted_packages: ["pkg.myjavalib"],
Paul Duffindb170e42020-12-08 17:48:25 +0000282 }
283 `)
284
Paul Duffin13648912022-07-15 13:12:35 +0000285 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000286 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100287// This is auto-generated. DO NOT EDIT.
288
289java_import {
290 name: "myjavalib",
291 prefer: false,
292 visibility: ["//visibility:public"],
293 apex_available: ["//apex_available:platform"],
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000294 jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100295 permitted_packages: ["pkg.myjavalib"],
Paul Duffine1381882021-04-16 17:05:10 +0100296}
297`),
Paul Duffindb170e42020-12-08 17:48:25 +0000298 checkAllCopyRules(`
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000299.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
Paul Duffindb170e42020-12-08 17:48:25 +0000300`),
301 )
302}
303
Paul Duffin13648912022-07-15 13:12:35 +0000304func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000305 runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) {
Paul Duffin13648912022-07-15 13:12:35 +0000306 result := android.GroupFixturePreparers(
307 prepareForSdkTestWithJava,
308 android.FixtureMergeEnv(map[string]string{
309 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
310 }),
311 ).RunTestWithBp(t, `
312 sdk {
313 name: "mysdk",
314 java_boot_libs: ["updatable-media"],
315 }
316
317 java_library {
318 name: "updatable-media",
319 srcs: ["Test.java"],
320 system_modules: "none",
321 sdk_version: "none",
322 compile_dex: true,
323 permitted_packages: ["pkg.media"],
324 apex_available: ["com.android.media"],
325 }
326 `)
327
328 CheckSnapshot(t, result, "mysdk", "",
329 checkAndroidBpContents(fmt.Sprintf(`
330// This is auto-generated. DO NOT EDIT.
331
332java_import {
333 name: "updatable-media",
334 prefer: false,
335 visibility: ["//visibility:public"],
336 apex_available: ["com.android.media"],
337 jars: ["%s"],
338 permitted_packages: ["pkg.media"],
339}
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000340`, expectedJarPath)),
Paul Duffin13648912022-07-15 13:12:35 +0000341 checkAllCopyRules(expectedCopyRule),
342 )
343 }
344
345 t.Run("updatable-media in S", func(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000346 runTest(t, "S", "java/updatable-media.jar", `
Paul Duffin13648912022-07-15 13:12:35 +0000347.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar
348`)
349 })
350
351 t.Run("updatable-media in T", func(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000352 runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", `
353.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar
Paul Duffin13648912022-07-15 13:12:35 +0000354`)
355 })
356}
357
Paul Duffinbb638eb2022-11-26 13:36:38 +0000358func TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) {
359 runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) {
360 result := android.GroupFixturePreparers(
361 prepareForSdkTestWithJava,
362 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
363 variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"}
364 }),
365 android.FixtureMergeEnv(map[string]string{
366 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
367 }),
368 ).RunTestWithBp(t, fmt.Sprintf(`
369 sdk {
370 name: "mysdk",
371 java_header_libs: ["mylib"],
372 }
373
374 java_library {
375 name: "mylib",
376 srcs: ["Test.java"],
377 system_modules: "none",
378 sdk_version: "none",
379 compile_dex: true,
380 min_sdk_version: "%s",
381 }
382 `, minSdkVersion))
383
384 expectedMinSdkVersionLine := ""
385 if expectedMinSdkVersion != "" {
386 expectedMinSdkVersionLine = fmt.Sprintf(" min_sdk_version: %q,\n", expectedMinSdkVersion)
387 }
388
389 CheckSnapshot(t, result, "mysdk", "",
390 checkAndroidBpContents(fmt.Sprintf(`
391// This is auto-generated. DO NOT EDIT.
392
393java_import {
394 name: "mylib",
395 prefer: false,
396 visibility: ["//visibility:public"],
397 apex_available: ["//apex_available:platform"],
398 jars: ["java/mylib.jar"],
399%s}
400`, expectedMinSdkVersionLine)),
401 )
402 }
403
404 t.Run("min_sdk_version=S in S", func(t *testing.T) {
405 // min_sdk_version was not added to java_import until Tiramisu.
406 runTest(t, "S", "S", "")
407 })
408
409 t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) {
410 // The canonical form of S is 31.
411 runTest(t, "Tiramisu", "S", "31")
412 })
413
414 t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) {
415 // A numerical min_sdk_version is already in canonical form.
416 runTest(t, "Tiramisu", "24", "24")
417 })
418
419 t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) {
420 // An unfinalized min_sdk_version has no numeric value yet.
421 runTest(t, "", "Unfinalized", "Unfinalized")
422 })
423}
424
Jiakai Zhangea180332021-09-26 08:58:02 +0000425func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) {
426 result := android.GroupFixturePreparers(
427 prepareForSdkTestWithJava,
428 android.FixtureAddFile("aidl", nil),
429 android.FixtureAddFile("resource.txt", nil),
430 ).RunTestWithBp(t, `
431 module_exports {
432 name: "myexports",
433 java_systemserver_libs: ["myjavalib"],
434 }
435
436 java_library {
437 name: "myjavalib",
438 srcs: ["Test.java"],
439 java_resources: ["resource.txt"],
440 // The aidl files should not be copied to the snapshot because a java_systemserver_libs member
441 // is not intended to be used for compiling Java, only for accessing the dex implementation
442 // jar.
443 aidl: {
444 export_include_dirs: ["aidl"],
445 },
446 system_modules: "none",
447 sdk_version: "none",
448 compile_dex: true,
449 permitted_packages: ["pkg.myjavalib"],
450 }
451 `)
452
453 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000454 checkAndroidBpContents(`
Jiakai Zhangea180332021-09-26 08:58:02 +0000455// This is auto-generated. DO NOT EDIT.
456
457java_import {
458 name: "myjavalib",
459 prefer: false,
460 visibility: ["//visibility:public"],
461 apex_available: ["//apex_available:platform"],
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000462 jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"],
Jiakai Zhangea180332021-09-26 08:58:02 +0000463 permitted_packages: ["pkg.myjavalib"],
464}
465`),
Jiakai Zhangea180332021-09-26 08:58:02 +0000466 checkAllCopyRules(`
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000467.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar
Jiakai Zhangea180332021-09-26 08:58:02 +0000468`),
469 )
470}
471
Paul Duffina0dbf432019-12-05 11:25:53 +0000472func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000473 result := android.GroupFixturePreparers(
474 prepareForSdkTestWithJava,
475 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
476 ).RunTestWithBp(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000477 module_exports {
478 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000479 device_supported: false,
480 host_supported: true,
481 java_libs: ["myjavalib"],
482 }
483
484 java_library {
485 name: "myjavalib",
486 device_supported: false,
487 host_supported: true,
488 srcs: ["Test.java"],
489 aidl: {
490 export_include_dirs: ["aidl"],
491 },
492 system_modules: "none",
493 sdk_version: "none",
494 compile_dex: true,
495 }
496 `)
497
Paul Duffin36474d32021-03-12 12:19:43 +0000498 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000499 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +0000500// This is auto-generated. DO NOT EDIT.
501
502java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100503 name: "myjavalib",
504 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100505 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000506 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000507 device_supported: false,
508 host_supported: true,
509 jars: ["java/myjavalib.jar"],
510}
Paul Duffine1381882021-04-16 17:05:10 +0100511`),
Paul Duffina80fdec2019-12-03 15:25:00 +0000512 checkAllCopyRules(`
513.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
514aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
515`),
516 )
517}
518
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000519func TestSnapshotWithJavaTest(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000520 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000521 module_exports {
522 name: "myexports",
523 java_tests: ["myjavatests"],
524 }
525
526 java_test {
527 name: "myjavatests",
528 srcs: ["Test.java"],
529 system_modules: "none",
530 sdk_version: "none",
531 compile_dex: true,
532 host_supported: true,
533 }
534 `)
535
Paul Duffin36474d32021-03-12 12:19:43 +0000536 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000537 checkAndroidBpContents(`
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000538// This is auto-generated. DO NOT EDIT.
539
540java_test_import {
Paul Duffine1381882021-04-16 17:05:10 +0100541 name: "myjavatests",
542 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100543 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000544 apex_available: ["//apex_available:platform"],
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000545 jars: ["java/myjavatests.jar"],
546 test_config: "java/myjavatests-AndroidTest.xml",
547}
Paul Duffine1381882021-04-16 17:05:10 +0100548`),
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000549 checkAllCopyRules(`
550.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
551.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
552`),
553 )
554}
555
556func TestHostSnapshotWithJavaTest(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000557 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000558 module_exports {
559 name: "myexports",
560 device_supported: false,
561 host_supported: true,
562 java_tests: ["myjavatests"],
563 }
564
565 java_test {
566 name: "myjavatests",
567 device_supported: false,
568 host_supported: true,
569 srcs: ["Test.java"],
570 system_modules: "none",
571 sdk_version: "none",
572 compile_dex: true,
573 }
574 `)
575
Paul Duffin36474d32021-03-12 12:19:43 +0000576 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000577 checkAndroidBpContents(`
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000578// This is auto-generated. DO NOT EDIT.
579
580java_test_import {
Paul Duffine1381882021-04-16 17:05:10 +0100581 name: "myjavatests",
582 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100583 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000584 apex_available: ["//apex_available:platform"],
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000585 device_supported: false,
586 host_supported: true,
587 jars: ["java/myjavatests.jar"],
588 test_config: "java/myjavatests-AndroidTest.xml",
589}
Paul Duffine1381882021-04-16 17:05:10 +0100590`),
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000591 checkAllCopyRules(`
592.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
593.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
594`),
595 )
596}
597
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000598func TestSnapshotWithJavaSystemModules(t *testing.T) {
Paul Duffin958806b2022-05-16 13:10:47 +0000599 result := android.GroupFixturePreparers(
600 prepareForSdkTestWithJava,
601 java.PrepareForTestWithJavaDefaultModules,
602 java.PrepareForTestWithJavaSdkLibraryFiles,
603 java.FixtureWithPrebuiltApisAndExtensions(map[string][]string{
604 "31": {"myjavalib"},
605 "32": {"myjavalib"},
606 "current": {"myjavalib"},
607 }, map[string][]string{
608 "1": {"myjavalib"},
609 "2": {"myjavalib"},
610 }),
611 ).RunTestWithBp(t, `
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000612 sdk {
613 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000614 java_header_libs: ["exported-system-module"],
Paul Duffin33028712021-06-22 11:00:07 +0100615 java_sdk_libs: ["myjavalib"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000616 java_system_modules: ["my-system-modules"],
617 }
618
Paul Duffin33028712021-06-22 11:00:07 +0100619 java_sdk_library {
620 name: "myjavalib",
621 apex_available: ["//apex_available:anyapex"],
622 srcs: ["Test.java"],
623 sdk_version: "current",
624 shared_library: false,
625 public: {
626 enabled: true,
627 },
628 }
629
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000630 java_system_modules {
631 name: "my-system-modules",
Paul Duffin33028712021-06-22 11:00:07 +0100632 libs: ["system-module", "exported-system-module", "myjavalib.stubs"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000633 }
634
635 java_library {
636 name: "system-module",
637 srcs: ["Test.java"],
638 sdk_version: "none",
639 system_modules: "none",
640 }
Paul Duffin72910952020-01-20 18:16:30 +0000641
642 java_library {
643 name: "exported-system-module",
644 srcs: ["Test.java"],
645 sdk_version: "none",
646 system_modules: "none",
647 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000648 `)
649
Paul Duffin36474d32021-03-12 12:19:43 +0000650 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000651 checkAndroidBpContents(`
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000652// This is auto-generated. DO NOT EDIT.
653
654java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100655 name: "exported-system-module",
656 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100657 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000658 apex_available: ["//apex_available:platform"],
Paul Duffin72910952020-01-20 18:16:30 +0000659 jars: ["java/exported-system-module.jar"],
660}
661
662java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100663 name: "mysdk_system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000664 prefer: false,
Paul Duffine1381882021-04-16 17:05:10 +0100665 visibility: ["//visibility:private"],
666 apex_available: ["//apex_available:platform"],
667 jars: ["java/system-module.jar"],
668}
669
Paul Duffin33028712021-06-22 11:00:07 +0100670java_sdk_library_import {
671 name: "myjavalib",
672 prefer: false,
673 visibility: ["//visibility:public"],
674 apex_available: ["//apex_available:anyapex"],
675 shared_library: false,
676 public: {
677 jars: ["sdk_library/public/myjavalib-stubs.jar"],
678 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
679 current_api: "sdk_library/public/myjavalib.txt",
680 removed_api: "sdk_library/public/myjavalib-removed.txt",
681 sdk_version: "current",
682 },
683}
684
Paul Duffine1381882021-04-16 17:05:10 +0100685java_system_modules_import {
686 name: "my-system-modules",
687 prefer: false,
688 visibility: ["//visibility:public"],
689 libs: [
690 "mysdk_system-module",
691 "exported-system-module",
Paul Duffinb97b1572021-04-29 21:50:40 +0100692 "myjavalib.stubs",
Paul Duffine1381882021-04-16 17:05:10 +0100693 ],
694}
695`),
Paul Duffin72910952020-01-20 18:16:30 +0000696 checkAllCopyRules(`
697.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
698.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
Paul Duffin33028712021-06-22 11:00:07 +0100699.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
700.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
701.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin72910952020-01-20 18:16:30 +0000702`),
Paul Duffin958806b2022-05-16 13:10:47 +0000703 checkInfoContents(result.Config, `
Paul Duffinc6ba1822022-05-06 09:38:02 +0000704[
705 {
706 "@type": "sdk",
707 "@name": "mysdk",
708 "java_header_libs": [
709 "exported-system-module",
710 "system-module"
711 ],
712 "java_sdk_libs": [
713 "myjavalib"
714 ],
715 "java_system_modules": [
716 "my-system-modules"
717 ]
718 },
719 {
720 "@type": "java_library",
721 "@name": "exported-system-module"
722 },
723 {
724 "@type": "java_system_modules",
725 "@name": "my-system-modules",
726 "@deps": [
727 "exported-system-module",
728 "system-module"
729 ]
730 },
731 {
732 "@type": "java_sdk_library",
Paul Duffin958806b2022-05-16 13:10:47 +0000733 "@name": "myjavalib",
734 "dist_stem": "myjavalib",
735 "scopes": {
736 "public": {
737 "current_api": "sdk_library/public/myjavalib.txt",
738 "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.public.latest/gen/myjavalib.api.public.latest",
739 "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.public.latest/gen/myjavalib-removed.api.public.latest",
740 "removed_api": "sdk_library/public/myjavalib-removed.txt"
741 }
742 }
Paul Duffinc6ba1822022-05-06 09:38:02 +0000743 },
744 {
745 "@type": "java_library",
746 "@name": "system-module"
747 }
748]
749`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000750 )
751}
752
753func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000754 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000755 sdk {
756 name: "mysdk",
757 device_supported: false,
758 host_supported: true,
759 java_system_modules: ["my-system-modules"],
760 }
761
762 java_system_modules {
763 name: "my-system-modules",
764 device_supported: false,
765 host_supported: true,
766 libs: ["system-module"],
767 }
768
769 java_library {
770 name: "system-module",
771 device_supported: false,
772 host_supported: true,
773 srcs: ["Test.java"],
774 sdk_version: "none",
775 system_modules: "none",
776 }
777 `)
778
Paul Duffin36474d32021-03-12 12:19:43 +0000779 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000780 checkAndroidBpContents(`
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000781// This is auto-generated. DO NOT EDIT.
782
783java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100784 name: "mysdk_system-module",
785 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000786 visibility: ["//visibility:private"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000787 apex_available: ["//apex_available:platform"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000788 device_supported: false,
789 host_supported: true,
790 jars: ["java/system-module.jar"],
791}
792
Paul Duffine1381882021-04-16 17:05:10 +0100793java_system_modules_import {
794 name: "my-system-modules",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000795 prefer: false,
Paul Duffine1381882021-04-16 17:05:10 +0100796 visibility: ["//visibility:public"],
797 device_supported: false,
798 host_supported: true,
799 libs: ["mysdk_system-module"],
800}
801`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000802 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
803 )
804}
Paul Duffin865171e2020-03-02 18:38:15 +0000805
806func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000807 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin865171e2020-03-02 18:38:15 +0000808 module_exports {
809 name: "myexports",
810 host_supported: true,
811 java_libs: ["myjavalib"],
812 target: {
813 android: {
814 java_header_libs: ["androidjavalib"],
815 },
816 host: {
817 java_header_libs: ["hostjavalib"],
818 },
819 },
820 }
821
822 java_library {
823 name: "myjavalib",
824 host_supported: true,
825 srcs: ["Test.java"],
826 system_modules: "none",
827 sdk_version: "none",
828 }
829
830 java_library {
831 name: "androidjavalib",
832 srcs: ["Test.java"],
833 system_modules: "none",
834 sdk_version: "none",
835 }
836
837 java_library_host {
838 name: "hostjavalib",
839 srcs: ["Test.java"],
840 }
841 `)
842
Paul Duffin36474d32021-03-12 12:19:43 +0000843 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000844 checkAndroidBpContents(`
Paul Duffin865171e2020-03-02 18:38:15 +0000845// This is auto-generated. DO NOT EDIT.
846
847java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100848 name: "hostjavalib",
849 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100850 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000851 apex_available: ["//apex_available:platform"],
Paul Duffin865171e2020-03-02 18:38:15 +0000852 device_supported: false,
853 host_supported: true,
854 jars: ["java/hostjavalib.jar"],
855}
856
857java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100858 name: "androidjavalib",
Paul Duffin865171e2020-03-02 18:38:15 +0000859 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 Duffine1381882021-04-16 17:05:10 +0100862 jars: ["java/androidjavalib.jar"],
863}
864
865java_import {
866 name: "myjavalib",
867 prefer: false,
868 visibility: ["//visibility:public"],
869 apex_available: ["//apex_available:platform"],
870 host_supported: true,
871 target: {
872 android: {
873 jars: ["java/android/myjavalib.jar"],
874 },
875 linux_glibc: {
876 jars: ["java/linux_glibc/myjavalib.jar"],
877 },
878 },
879}
880`),
Paul Duffin865171e2020-03-02 18:38:15 +0000881 checkAllCopyRules(`
882.intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
883.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
884.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
885.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
886`),
887 )
888}
Paul Duffindd46f712020-02-10 13:37:10 +0000889
890func TestSnapshotWithJavaSdkLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000891 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffindd46f712020-02-10 13:37:10 +0000892 sdk {
893 name: "mysdk",
894 java_sdk_libs: ["myjavalib"],
895 }
896
897 java_sdk_library {
898 name: "myjavalib",
899 apex_available: ["//apex_available:anyapex"],
900 srcs: ["Test.java"],
901 sdk_version: "current",
Paul Duffind7eb1c22020-05-26 20:57:10 +0100902 shared_library: false,
Paul Duffin4911a892020-04-29 23:35:13 +0100903 stubs_library_visibility: ["//other"],
904 stubs_source_visibility: ["//another"],
Paul Duffin869de142021-07-15 14:14:41 +0100905 permitted_packages: ["pkg.myjavalib"],
Paul Duffindd46f712020-02-10 13:37:10 +0000906 }
907 `)
908
Paul Duffin36474d32021-03-12 12:19:43 +0000909 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000910 checkAndroidBpContents(`
Paul Duffindd46f712020-02-10 13:37:10 +0000911// This is auto-generated. DO NOT EDIT.
912
913java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +0100914 name: "myjavalib",
915 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100916 visibility: ["//visibility:public"],
Paul Duffindd46f712020-02-10 13:37:10 +0000917 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +0100918 shared_library: false,
Paul Duffin869de142021-07-15 14:14:41 +0100919 permitted_packages: ["pkg.myjavalib"],
Paul Duffindd46f712020-02-10 13:37:10 +0000920 public: {
921 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000922 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100923 current_api: "sdk_library/public/myjavalib.txt",
924 removed_api: "sdk_library/public/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000925 sdk_version: "current",
926 },
927 system: {
928 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000929 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100930 current_api: "sdk_library/system/myjavalib.txt",
931 removed_api: "sdk_library/system/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000932 sdk_version: "system_current",
933 },
934 test: {
935 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000936 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100937 current_api: "sdk_library/test/myjavalib.txt",
938 removed_api: "sdk_library/test/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000939 sdk_version: "test_current",
940 },
941}
Paul Duffine1381882021-04-16 17:05:10 +0100942`),
Paul Duffindd46f712020-02-10 13:37:10 +0000943 checkAllCopyRules(`
944.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -0700945.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
946.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +0000947.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -0700948.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
949.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +0000950.intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -0700951.intermediates/myjavalib.stubs.source.test/android_common/metalava/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
952.intermediates/myjavalib.stubs.source.test/android_common/metalava/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +0000953`),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100954 checkMergeZips(
955 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
956 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
Paul Duffin33028712021-06-22 11:00:07 +0100957 ".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip",
958 ),
Paul Duffindd46f712020-02-10 13:37:10 +0000959 )
960}
Paul Duffin3375e352020-04-28 10:44:03 +0100961
Paul Duffine8409952022-09-22 16:24:46 +0100962func TestSnapshotWithJavaSdkLibrary_DistStem(t *testing.T) {
963 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
964 sdk {
965 name: "mysdk",
966 java_sdk_libs: ["myjavalib-foo"],
967 }
968
969 java_sdk_library {
970 name: "myjavalib-foo",
971 apex_available: ["//apex_available:anyapex"],
972 srcs: ["Test.java"],
973 sdk_version: "current",
974 shared_library: false,
975 public: {
976 enabled: true,
977 },
978 dist_stem: "myjavalib",
979 }
980 `)
981
982 CheckSnapshot(t, result, "mysdk", "",
983 checkAndroidBpContents(`
984// This is auto-generated. DO NOT EDIT.
985
986java_sdk_library_import {
987 name: "myjavalib-foo",
988 prefer: false,
989 visibility: ["//visibility:public"],
990 apex_available: ["//apex_available:anyapex"],
991 shared_library: false,
992 public: {
993 jars: ["sdk_library/public/myjavalib-stubs.jar"],
994 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
995 current_api: "sdk_library/public/myjavalib.txt",
996 removed_api: "sdk_library/public/myjavalib-removed.txt",
997 sdk_version: "current",
998 },
999}
1000`),
1001 checkAllCopyRules(`
1002.intermediates/myjavalib-foo.stubs/android_common/javac/myjavalib-foo.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1003.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1004.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1005`),
1006 checkMergeZips(
1007 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1008 ),
1009 )
1010}
1011
Paul Duffin22628d52021-05-12 23:13:22 +01001012func TestSnapshotWithJavaSdkLibrary_UseSrcJar(t *testing.T) {
1013 result := android.GroupFixturePreparers(
1014 prepareForSdkTestWithJavaSdkLibrary,
1015 android.FixtureMergeEnv(map[string]string{
1016 "SOONG_SDK_SNAPSHOT_USE_SRCJAR": "true",
1017 }),
1018 ).RunTestWithBp(t, `
1019 sdk {
1020 name: "mysdk",
1021 java_sdk_libs: ["myjavalib"],
1022 }
1023
1024 java_sdk_library {
1025 name: "myjavalib",
1026 srcs: ["Test.java"],
1027 sdk_version: "current",
1028 shared_library: false,
1029 public: {
1030 enabled: true,
1031 },
1032 }
1033 `)
1034
1035 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001036 checkAndroidBpContents(`
Paul Duffin22628d52021-05-12 23:13:22 +01001037// This is auto-generated. DO NOT EDIT.
1038
1039java_sdk_library_import {
1040 name: "myjavalib",
1041 prefer: false,
1042 visibility: ["//visibility:public"],
1043 apex_available: ["//apex_available:platform"],
1044 shared_library: false,
1045 public: {
1046 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1047 stub_srcs: ["sdk_library/public/myjavalib.srcjar"],
1048 current_api: "sdk_library/public/myjavalib.txt",
1049 removed_api: "sdk_library/public/myjavalib-removed.txt",
1050 sdk_version: "current",
1051 },
1052}
1053 `),
1054 checkAllCopyRules(`
1055.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1056.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source-stubs.srcjar -> sdk_library/public/myjavalib.srcjar
1057.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1058.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1059 `),
1060 )
1061}
1062
Anton Hanssond78eb762021-09-21 15:25:12 +01001063func TestSnapshotWithJavaSdkLibrary_AnnotationsZip(t *testing.T) {
1064 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1065 sdk {
1066 name: "mysdk",
1067 java_sdk_libs: ["myjavalib"],
1068 }
1069
1070 java_sdk_library {
1071 name: "myjavalib",
1072 srcs: ["Test.java"],
1073 sdk_version: "current",
1074 shared_library: false,
1075 annotations_enabled: true,
1076 public: {
1077 enabled: true,
1078 },
1079 }
1080 `)
1081
1082 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001083 checkAndroidBpContents(`
Anton Hanssond78eb762021-09-21 15:25:12 +01001084// This is auto-generated. DO NOT EDIT.
1085
1086java_sdk_library_import {
1087 name: "myjavalib",
1088 prefer: false,
1089 visibility: ["//visibility:public"],
1090 apex_available: ["//apex_available:platform"],
1091 shared_library: false,
1092 public: {
1093 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1094 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1095 current_api: "sdk_library/public/myjavalib.txt",
1096 removed_api: "sdk_library/public/myjavalib-removed.txt",
1097 annotations: "sdk_library/public/myjavalib_annotations.zip",
1098 sdk_version: "current",
1099 },
1100}
1101 `),
1102 checkAllCopyRules(`
1103.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1104.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1105.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1106.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_annotations.zip -> sdk_library/public/myjavalib_annotations.zip
1107 `),
1108 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1109 )
1110}
1111
Paul Duffina54016c2022-01-27 16:39:47 +00001112func TestSnapshotWithJavaSdkLibrary_AnnotationsZip_PreT(t *testing.T) {
1113 result := android.GroupFixturePreparers(
1114 prepareForSdkTestWithJavaSdkLibrary,
1115 android.FixtureMergeEnv(map[string]string{
1116 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S",
1117 }),
1118 ).RunTestWithBp(t, `
1119 sdk {
1120 name: "mysdk",
1121 java_sdk_libs: ["myjavalib"],
1122 }
1123
1124 java_sdk_library {
1125 name: "myjavalib",
1126 srcs: ["Test.java"],
Paul Duffin1938dba2022-07-26 23:53:00 +00001127 sdk_version: "S",
Paul Duffina54016c2022-01-27 16:39:47 +00001128 shared_library: false,
1129 annotations_enabled: true,
1130 public: {
1131 enabled: true,
1132 },
1133 }
1134 `)
1135
1136 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001137 checkAndroidBpContents(`
Paul Duffina54016c2022-01-27 16:39:47 +00001138// This is auto-generated. DO NOT EDIT.
1139
1140java_sdk_library_import {
1141 name: "myjavalib",
1142 prefer: false,
1143 visibility: ["//visibility:public"],
1144 apex_available: ["//apex_available:platform"],
1145 shared_library: false,
1146 public: {
1147 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1148 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1149 current_api: "sdk_library/public/myjavalib.txt",
1150 removed_api: "sdk_library/public/myjavalib-removed.txt",
1151 sdk_version: "current",
1152 },
1153}
1154 `),
1155 checkAllCopyRules(`
1156.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1157.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1158.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1159 `),
1160 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1161 )
1162}
1163
Paul Duffin1267d872021-04-16 17:21:36 +01001164func TestSnapshotWithJavaSdkLibrary_CompileDex(t *testing.T) {
1165 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1166 sdk {
1167 name: "mysdk",
1168 java_sdk_libs: ["myjavalib"],
1169 }
1170
1171 java_sdk_library {
1172 name: "myjavalib",
1173 srcs: ["Test.java"],
1174 sdk_version: "current",
1175 shared_library: false,
1176 compile_dex: true,
1177 public: {
1178 enabled: true,
1179 },
1180 system: {
1181 enabled: true,
1182 },
1183 }
1184 `)
1185
1186 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001187 checkAndroidBpContents(`
Paul Duffin1267d872021-04-16 17:21:36 +01001188// This is auto-generated. DO NOT EDIT.
1189
1190java_sdk_library_import {
1191 name: "myjavalib",
1192 prefer: false,
1193 visibility: ["//visibility:public"],
1194 apex_available: ["//apex_available:platform"],
1195 shared_library: false,
1196 compile_dex: true,
1197 public: {
1198 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1199 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1200 current_api: "sdk_library/public/myjavalib.txt",
1201 removed_api: "sdk_library/public/myjavalib-removed.txt",
1202 sdk_version: "current",
1203 },
1204 system: {
1205 jars: ["sdk_library/system/myjavalib-stubs.jar"],
1206 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1207 current_api: "sdk_library/system/myjavalib.txt",
1208 removed_api: "sdk_library/system/myjavalib-removed.txt",
1209 sdk_version: "system_current",
1210 },
1211}
1212`),
1213 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
1214 ctx := android.ModuleInstallPathContextForTesting(result.Config)
1215 dexJarBuildPath := func(name string, kind android.SdkKind) string {
1216 dep := result.Module(name, "android_common").(java.SdkLibraryDependency)
Martin Stjernholm8be1e6d2021-09-15 03:34:04 +01001217 path := dep.SdkApiStubDexJar(ctx, kind).Path()
Paul Duffin1267d872021-04-16 17:21:36 +01001218 return path.RelativeToTop().String()
1219 }
1220
1221 dexJarPath := dexJarBuildPath("myjavalib", android.SdkPublic)
1222 android.AssertStringEquals(t, "source dex public stubs jar build path", "out/soong/.intermediates/myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath)
1223
1224 dexJarPath = dexJarBuildPath("myjavalib", android.SdkSystem)
1225 systemDexJar := "out/soong/.intermediates/myjavalib.stubs.system/android_common/dex/myjavalib.stubs.system.jar"
1226 android.AssertStringEquals(t, "source dex system stubs jar build path", systemDexJar, dexJarPath)
1227
1228 // This should fall back to system as module is not available.
1229 dexJarPath = dexJarBuildPath("myjavalib", android.SdkModule)
1230 android.AssertStringEquals(t, "source dex module stubs jar build path", systemDexJar, dexJarPath)
1231
1232 dexJarPath = dexJarBuildPath(android.PrebuiltNameFromSource("myjavalib"), android.SdkPublic)
1233 android.AssertStringEquals(t, "prebuilt dex public stubs jar build path", "out/soong/.intermediates/snapshot/prebuilt_myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath)
1234 }),
1235 )
1236}
1237
Paul Duffin780c5f42020-05-12 15:52:55 +01001238func TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001239 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin780c5f42020-05-12 15:52:55 +01001240 sdk {
1241 name: "mysdk",
1242 java_sdk_libs: ["myjavalib"],
1243 }
1244
1245 java_sdk_library {
1246 name: "myjavalib",
1247 srcs: ["Test.java"],
1248 sdk_version: "none",
1249 system_modules: "none",
1250 }
1251 `)
1252
Paul Duffin36474d32021-03-12 12:19:43 +00001253 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001254 checkAndroidBpContents(`
Paul Duffin780c5f42020-05-12 15:52:55 +01001255// This is auto-generated. DO NOT EDIT.
1256
1257java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001258 name: "myjavalib",
1259 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001260 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001261 apex_available: ["//apex_available:platform"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001262 shared_library: true,
Paul Duffin780c5f42020-05-12 15:52:55 +01001263 public: {
1264 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001265 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin780c5f42020-05-12 15:52:55 +01001266 current_api: "sdk_library/public/myjavalib.txt",
1267 removed_api: "sdk_library/public/myjavalib-removed.txt",
1268 sdk_version: "none",
1269 },
1270}
Paul Duffine1381882021-04-16 17:05:10 +01001271`),
Paul Duffin780c5f42020-05-12 15:52:55 +01001272 checkAllCopyRules(`
1273.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001274.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1275.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin780c5f42020-05-12 15:52:55 +01001276`),
1277 checkMergeZips(
1278 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1279 ),
1280 )
1281}
1282
Paul Duffin87a05a32020-05-12 11:50:28 +01001283func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001284 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin87a05a32020-05-12 11:50:28 +01001285 sdk {
1286 name: "mysdk",
1287 java_sdk_libs: ["myjavalib"],
1288 }
1289
1290 java_sdk_library {
1291 name: "myjavalib",
1292 srcs: ["Test.java"],
1293 sdk_version: "module_current",
1294 public: {
1295 enabled: true,
1296 sdk_version: "module_current",
1297 },
1298 }
1299 `)
1300
Paul Duffin36474d32021-03-12 12:19:43 +00001301 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001302 checkAndroidBpContents(`
Paul Duffin87a05a32020-05-12 11:50:28 +01001303// This is auto-generated. DO NOT EDIT.
1304
1305java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001306 name: "myjavalib",
1307 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001308 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001309 apex_available: ["//apex_available:platform"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001310 shared_library: true,
Paul Duffin87a05a32020-05-12 11:50:28 +01001311 public: {
1312 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001313 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin87a05a32020-05-12 11:50:28 +01001314 current_api: "sdk_library/public/myjavalib.txt",
1315 removed_api: "sdk_library/public/myjavalib-removed.txt",
1316 sdk_version: "module_current",
1317 },
1318}
Paul Duffine1381882021-04-16 17:05:10 +01001319`),
Paul Duffin87a05a32020-05-12 11:50:28 +01001320 checkAllCopyRules(`
1321.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001322.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1323.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin87a05a32020-05-12 11:50:28 +01001324`),
1325 checkMergeZips(
1326 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1327 ),
1328 )
1329}
1330
1331func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001332 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin3375e352020-04-28 10:44:03 +01001333 sdk {
1334 name: "mysdk",
1335 java_sdk_libs: ["myjavalib"],
1336 }
1337
1338 java_sdk_library {
1339 name: "myjavalib",
1340 apex_available: ["//apex_available:anyapex"],
1341 srcs: ["Test.java"],
1342 sdk_version: "current",
1343 public: {
1344 enabled: true,
1345 },
1346 system: {
1347 enabled: true,
1348 },
1349 }
1350 `)
1351
Paul Duffin36474d32021-03-12 12:19:43 +00001352 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001353 checkAndroidBpContents(`
Paul Duffin3375e352020-04-28 10:44:03 +01001354// This is auto-generated. DO NOT EDIT.
1355
1356java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001357 name: "myjavalib",
1358 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001359 visibility: ["//visibility:public"],
Paul Duffin3375e352020-04-28 10:44:03 +01001360 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001361 shared_library: true,
Paul Duffin3375e352020-04-28 10:44:03 +01001362 public: {
1363 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001364 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin3375e352020-04-28 10:44:03 +01001365 current_api: "sdk_library/public/myjavalib.txt",
1366 removed_api: "sdk_library/public/myjavalib-removed.txt",
1367 sdk_version: "current",
1368 },
1369 system: {
1370 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001371 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin3375e352020-04-28 10:44:03 +01001372 current_api: "sdk_library/system/myjavalib.txt",
1373 removed_api: "sdk_library/system/myjavalib-removed.txt",
1374 sdk_version: "system_current",
1375 },
1376}
Paul Duffine1381882021-04-16 17:05:10 +01001377`),
Paul Duffin3375e352020-04-28 10:44:03 +01001378 checkAllCopyRules(`
1379.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001380.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1381.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin3375e352020-04-28 10:44:03 +01001382.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001383.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1384.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffin3375e352020-04-28 10:44:03 +01001385`),
1386 checkMergeZips(
1387 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1388 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1389 ),
1390 )
1391}
Paul Duffin8f265b92020-04-28 14:13:56 +01001392
1393func TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001394 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin8f265b92020-04-28 14:13:56 +01001395 sdk {
1396 name: "mysdk",
1397 java_sdk_libs: ["myjavalib"],
1398 }
1399
1400 java_sdk_library {
1401 name: "myjavalib",
1402 apex_available: ["//apex_available:anyapex"],
1403 srcs: ["Test.java"],
1404 sdk_version: "current",
1405 public: {
1406 enabled: true,
1407 },
1408 system: {
1409 enabled: true,
1410 },
1411 module_lib: {
1412 enabled: true,
1413 },
1414 }
1415 `)
1416
Paul Duffin36474d32021-03-12 12:19:43 +00001417 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001418 checkAndroidBpContents(`
Paul Duffin8f265b92020-04-28 14:13:56 +01001419// This is auto-generated. DO NOT EDIT.
1420
1421java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001422 name: "myjavalib",
1423 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001424 visibility: ["//visibility:public"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001425 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001426 shared_library: true,
Paul Duffin8f265b92020-04-28 14:13:56 +01001427 public: {
1428 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001429 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001430 current_api: "sdk_library/public/myjavalib.txt",
1431 removed_api: "sdk_library/public/myjavalib-removed.txt",
1432 sdk_version: "current",
1433 },
1434 system: {
1435 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001436 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001437 current_api: "sdk_library/system/myjavalib.txt",
1438 removed_api: "sdk_library/system/myjavalib-removed.txt",
1439 sdk_version: "system_current",
1440 },
1441 module_lib: {
Paul Duffin6b836ba2020-05-13 19:19:49 +01001442 jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001443 stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
Paul Duffin6b836ba2020-05-13 19:19:49 +01001444 current_api: "sdk_library/module-lib/myjavalib.txt",
1445 removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
Paul Duffin8f265b92020-04-28 14:13:56 +01001446 sdk_version: "module_current",
1447 },
1448}
Paul Duffine1381882021-04-16 17:05:10 +01001449`),
Paul Duffin8f265b92020-04-28 14:13:56 +01001450 checkAllCopyRules(`
1451.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001452.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1453.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin8f265b92020-04-28 14:13:56 +01001454.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001455.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1456.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffin6b836ba2020-05-13 19:19:49 +01001457.intermediates/myjavalib.stubs.module_lib/android_common/javac/myjavalib.stubs.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001458.intermediates/myjavalib.stubs.source.module_lib/android_common/metalava/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
1459.intermediates/myjavalib.stubs.source.module_lib/android_common/metalava/myjavalib.stubs.source.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
Paul Duffin8f265b92020-04-28 14:13:56 +01001460`),
1461 checkMergeZips(
Paul Duffin74f1dcd2022-07-18 13:18:23 +00001462 ".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001463 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1464 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001465 ),
1466 )
1467}
Paul Duffinf7a64332020-05-13 16:54:55 +01001468
Paul Duffin0c5bae52020-06-02 13:00:08 +01001469func TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001470 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin0c5bae52020-06-02 13:00:08 +01001471 sdk {
1472 name: "mysdk",
1473 java_sdk_libs: ["myjavalib"],
1474 }
1475
1476 java_sdk_library {
1477 name: "myjavalib",
1478 apex_available: ["//apex_available:anyapex"],
1479 srcs: ["Test.java"],
1480 sdk_version: "current",
1481 public: {
1482 enabled: true,
1483 },
1484 system_server: {
1485 enabled: true,
1486 },
1487 }
1488 `)
1489
Paul Duffin36474d32021-03-12 12:19:43 +00001490 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001491 checkAndroidBpContents(`
Paul Duffin0c5bae52020-06-02 13:00:08 +01001492// This is auto-generated. DO NOT EDIT.
1493
1494java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001495 name: "myjavalib",
1496 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001497 visibility: ["//visibility:public"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001498 apex_available: ["//apex_available:anyapex"],
1499 shared_library: true,
1500 public: {
1501 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001502 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001503 current_api: "sdk_library/public/myjavalib.txt",
1504 removed_api: "sdk_library/public/myjavalib-removed.txt",
1505 sdk_version: "current",
1506 },
1507 system_server: {
1508 jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001509 stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001510 current_api: "sdk_library/system-server/myjavalib.txt",
1511 removed_api: "sdk_library/system-server/myjavalib-removed.txt",
1512 sdk_version: "system_server_current",
1513 },
1514}
Paul Duffine1381882021-04-16 17:05:10 +01001515`),
Paul Duffin0c5bae52020-06-02 13:00:08 +01001516 checkAllCopyRules(`
1517.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001518.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1519.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin0c5bae52020-06-02 13:00:08 +01001520.intermediates/myjavalib.stubs.system_server/android_common/javac/myjavalib.stubs.system_server.jar -> sdk_library/system-server/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001521.intermediates/myjavalib.stubs.source.system_server/android_common/metalava/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt
1522.intermediates/myjavalib.stubs.source.system_server/android_common/metalava/myjavalib.stubs.source.system_server_removed.txt -> sdk_library/system-server/myjavalib-removed.txt
Paul Duffin0c5bae52020-06-02 13:00:08 +01001523`),
1524 checkMergeZips(
1525 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1526 ".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip",
1527 ),
1528 )
1529}
1530
Paul Duffinf7a64332020-05-13 16:54:55 +01001531func TestSnapshotWithJavaSdkLibrary_NamingScheme(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001532 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffinf7a64332020-05-13 16:54:55 +01001533 sdk {
1534 name: "mysdk",
1535 java_sdk_libs: ["myjavalib"],
1536 }
1537
1538 java_sdk_library {
1539 name: "myjavalib",
1540 apex_available: ["//apex_available:anyapex"],
1541 srcs: ["Test.java"],
1542 sdk_version: "current",
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001543 naming_scheme: "default",
Paul Duffinf7a64332020-05-13 16:54:55 +01001544 public: {
1545 enabled: true,
1546 },
1547 }
1548 `)
1549
Paul Duffin36474d32021-03-12 12:19:43 +00001550 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001551 checkAndroidBpContents(`
Paul Duffinf7a64332020-05-13 16:54:55 +01001552// This is auto-generated. DO NOT EDIT.
1553
1554java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001555 name: "myjavalib",
1556 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001557 visibility: ["//visibility:public"],
Paul Duffinf7a64332020-05-13 16:54:55 +01001558 apex_available: ["//apex_available:anyapex"],
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001559 naming_scheme: "default",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001560 shared_library: true,
Paul Duffinf7a64332020-05-13 16:54:55 +01001561 public: {
1562 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001563 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffinf7a64332020-05-13 16:54:55 +01001564 current_api: "sdk_library/public/myjavalib.txt",
1565 removed_api: "sdk_library/public/myjavalib-removed.txt",
1566 sdk_version: "current",
1567 },
1568}
Paul Duffine1381882021-04-16 17:05:10 +01001569`),
Paul Duffinf7a64332020-05-13 16:54:55 +01001570 checkAllCopyRules(`
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001571.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001572.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1573.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffinf7a64332020-05-13 16:54:55 +01001574`),
1575 checkMergeZips(
1576 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1577 ),
1578 )
1579}
Paul Duffina2ae7e02020-09-11 11:55:00 +01001580
1581func TestSnapshotWithJavaSdkLibrary_DoctagFiles(t *testing.T) {
Paul Duffindb462dd2021-03-21 22:01:55 +00001582 result := android.GroupFixturePreparers(
1583 prepareForSdkTestWithJavaSdkLibrary,
1584 android.FixtureAddFile("docs/known_doctags", nil),
1585 ).RunTestWithBp(t, `
Paul Duffina2ae7e02020-09-11 11:55:00 +01001586 sdk {
1587 name: "mysdk",
1588 java_sdk_libs: ["myjavalib"],
1589 }
1590
1591 java_sdk_library {
1592 name: "myjavalib",
1593 srcs: ["Test.java"],
1594 sdk_version: "current",
1595 public: {
1596 enabled: true,
1597 },
1598 doctag_files: ["docs/known_doctags"],
1599 }
1600
1601 filegroup {
1602 name: "mygroup",
1603 srcs: [":myjavalib{.doctags}"],
1604 }
1605 `)
1606
Paul Duffin36474d32021-03-12 12:19:43 +00001607 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001608 checkAndroidBpContents(`
Paul Duffina2ae7e02020-09-11 11:55:00 +01001609// This is auto-generated. DO NOT EDIT.
1610
1611java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001612 name: "myjavalib",
1613 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001614 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001615 apex_available: ["//apex_available:platform"],
Paul Duffina2ae7e02020-09-11 11:55:00 +01001616 shared_library: true,
1617 doctag_files: ["doctags/docs/known_doctags"],
1618 public: {
1619 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001620 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffina2ae7e02020-09-11 11:55:00 +01001621 current_api: "sdk_library/public/myjavalib.txt",
1622 removed_api: "sdk_library/public/myjavalib-removed.txt",
1623 sdk_version: "current",
1624 },
1625}
Paul Duffine1381882021-04-16 17:05:10 +01001626`),
Paul Duffina2ae7e02020-09-11 11:55:00 +01001627 checkAllCopyRules(`
1628.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001629.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1630.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffina2ae7e02020-09-11 11:55:00 +01001631docs/known_doctags -> doctags/docs/known_doctags
1632`),
1633 )
1634}