blob: 2ade146b7f394e598ff2beb3d9a69932fa687acf [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"
Paul Duffincee7e662020-07-09 17:32:57 +010022 "android/soong/java"
Paul Duffina80fdec2019-12-03 15:25:00 +000023)
24
Paul Duffind14cbc12021-03-18 09:14:23 +000025var prepareForSdkTestWithJava = android.GroupFixturePreparers(
26 java.PrepareForTestWithJavaBuildComponents,
27 PrepareForTestWithSdkBuildComponents,
Paul Duffindb462dd2021-03-21 22:01:55 +000028
29 // Ensure that all source paths are provided. This helps ensure that the snapshot generation is
30 // consistent and all files referenced from the snapshot's Android.bp file have actually been
31 // copied into the snapshot.
32 android.PrepareForTestDisallowNonExistentPaths,
33
34 // Files needs by most of the tests.
35 android.MockFS{
36 "Test.java": nil,
37 }.AddToFixture(),
Paul Duffind14cbc12021-03-18 09:14:23 +000038)
39
Paul Duffin9ec86b12021-03-15 11:17:52 +000040var prepareForSdkTestWithJavaSdkLibrary = android.GroupFixturePreparers(
41 prepareForSdkTestWithJava,
42 java.PrepareForTestWithJavaDefaultModules,
43 java.PrepareForTestWithJavaSdkLibraryFiles,
44 java.FixtureWithLastReleaseApis("myjavalib"),
45)
46
Paul Duffina80fdec2019-12-03 15:25:00 +000047// Contains tests for SDK members provided by the java package.
48
Paul Duffincee7e662020-07-09 17:32:57 +010049func TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +000050 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffincee7e662020-07-09 17:32:57 +010051 sdk {
52 name: "mysdk",
53 java_header_libs: ["sdkmember"],
54 }
55
56 java_library {
57 name: "sdkmember",
58 srcs: ["Test.java"],
59 system_modules: "none",
60 sdk_version: "none",
61 }
Paul Duffincee7e662020-07-09 17:32:57 +010062 `)
63
64 // Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember".
Paul Duffin1822a0a2021-03-21 12:56:33 +000065 sdkChecker := func(t *testing.T, result *android.TestResult) {
66 java.CheckModuleDependencies(t, result.TestContext, "mysdk", "android_common", []string{"sdkmember"})
67 }
Paul Duffincee7e662020-07-09 17:32:57 +010068
Paul Duffin36474d32021-03-12 12:19:43 +000069 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin1822a0a2021-03-21 12:56:33 +000070 snapshotTestChecker(checkSnapshotWithSourcePreferred, sdkChecker),
71 snapshotTestChecker(checkSnapshotPreferredWithSource, sdkChecker),
72 )
Paul Duffincee7e662020-07-09 17:32:57 +010073}
74
Paul Duffina0dbf432019-12-05 11:25:53 +000075func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +000076 result := android.GroupFixturePreparers(
77 prepareForSdkTestWithJava,
78 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
79 ).RunTestWithBp(t, `
Paul Duffina0dbf432019-12-05 11:25:53 +000080 sdk {
81 name: "mysdk",
82 java_header_libs: ["myjavalib"],
83 }
84
85 java_library {
86 name: "myjavalib",
87 srcs: ["Test.java"],
88 aidl: {
89 export_include_dirs: ["aidl"],
90 },
91 system_modules: "none",
92 sdk_version: "none",
93 compile_dex: true,
94 host_supported: true,
Paul Duffin869de142021-07-15 14:14:41 +010095 permitted_packages: ["pkg.myjavalib"],
Paul Duffina0dbf432019-12-05 11:25:53 +000096 }
97 `)
98
Paul Duffin36474d32021-03-12 12:19:43 +000099 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000100 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100101// This is auto-generated. DO NOT EDIT.
102
103java_import {
104 name: "myjavalib",
105 prefer: false,
106 visibility: ["//visibility:public"],
107 apex_available: ["//apex_available:platform"],
108 jars: ["java/myjavalib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100109 permitted_packages: ["pkg.myjavalib"],
Paul Duffine1381882021-04-16 17:05:10 +0100110}
111`),
Paul Duffina0dbf432019-12-05 11:25:53 +0000112 checkAllCopyRules(`
113.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
114aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
115`),
116 )
117}
118
119func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000120 result := android.GroupFixturePreparers(
121 prepareForSdkTestWithJava,
122 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
123 ).RunTestWithBp(t, `
Paul Duffina0dbf432019-12-05 11:25:53 +0000124 sdk {
125 name: "mysdk",
126 device_supported: false,
127 host_supported: true,
128 java_header_libs: ["myjavalib"],
129 }
130
131 java_library {
132 name: "myjavalib",
133 device_supported: false,
134 host_supported: true,
135 srcs: ["Test.java"],
136 aidl: {
137 export_include_dirs: ["aidl"],
138 },
139 system_modules: "none",
140 sdk_version: "none",
141 compile_dex: true,
142 }
143 `)
144
Paul Duffin36474d32021-03-12 12:19:43 +0000145 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000146 checkAndroidBpContents(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000147// This is auto-generated. DO NOT EDIT.
148
149java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100150 name: "myjavalib",
151 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100152 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000153 apex_available: ["//apex_available:platform"],
Paul Duffina0dbf432019-12-05 11:25:53 +0000154 device_supported: false,
155 host_supported: true,
156 jars: ["java/myjavalib.jar"],
157}
Paul Duffine1381882021-04-16 17:05:10 +0100158`),
Paul Duffina0dbf432019-12-05 11:25:53 +0000159 checkAllCopyRules(`
160.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
161aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
162`),
163 )
164}
165
Paul Duffina04c1072020-03-02 10:16:35 +0000166func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000167 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffina04c1072020-03-02 10:16:35 +0000168 sdk {
169 name: "mysdk",
170 host_supported: true,
171 java_header_libs: ["myjavalib"],
172 }
173
174 java_library {
175 name: "myjavalib",
176 host_supported: true,
177 srcs: ["Test.java"],
178 system_modules: "none",
179 sdk_version: "none",
180 compile_dex: true,
181 }
182 `)
183
Paul Duffin36474d32021-03-12 12:19:43 +0000184 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000185 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000186// This is auto-generated. DO NOT EDIT.
187
188java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100189 name: "myjavalib",
190 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100191 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000192 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000193 host_supported: true,
194 target: {
195 android: {
196 jars: ["java/android/myjavalib.jar"],
197 },
198 linux_glibc: {
199 jars: ["java/linux_glibc/myjavalib.jar"],
200 },
201 },
202}
Paul Duffine1381882021-04-16 17:05:10 +0100203`),
Paul Duffina04c1072020-03-02 10:16:35 +0000204 checkAllCopyRules(`
205.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
206.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
207`),
208 )
209}
210
Paul Duffina0dbf432019-12-05 11:25:53 +0000211func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000212 result := android.GroupFixturePreparers(
213 prepareForSdkTestWithJava,
214 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
Paul Duffindb462dd2021-03-21 22:01:55 +0000215 android.FixtureAddFile("resource.txt", nil),
Paul Duffin9ec86b12021-03-15 11:17:52 +0000216 ).RunTestWithBp(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000217 module_exports {
218 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000219 java_libs: ["myjavalib"],
220 }
221
222 java_library {
223 name: "myjavalib",
224 srcs: ["Test.java"],
Paul Duffin4e772842020-06-24 12:10:42 +0100225 java_resources: ["resource.txt"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000226 aidl: {
227 export_include_dirs: ["aidl"],
228 },
229 system_modules: "none",
230 sdk_version: "none",
231 compile_dex: true,
232 host_supported: true,
233 }
234 `)
235
Paul Duffin36474d32021-03-12 12:19:43 +0000236 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000237 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100238// This is auto-generated. DO NOT EDIT.
239
240java_import {
241 name: "myjavalib",
242 prefer: false,
243 visibility: ["//visibility:public"],
244 apex_available: ["//apex_available:platform"],
245 jars: ["java/myjavalib.jar"],
246}
247`),
Paul Duffina80fdec2019-12-03 15:25:00 +0000248 checkAllCopyRules(`
Paul Duffin4e772842020-06-24 12:10:42 +0100249.intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000250aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
251`),
252 )
253}
254
Paul Duffindb170e42020-12-08 17:48:25 +0000255func TestSnapshotWithJavaBootLibrary(t *testing.T) {
Paul Duffindb462dd2021-03-21 22:01:55 +0000256 result := android.GroupFixturePreparers(
257 prepareForSdkTestWithJava,
258 android.FixtureAddFile("aidl", nil),
259 android.FixtureAddFile("resource.txt", nil),
260 ).RunTestWithBp(t, `
Paul Duffin13648912022-07-15 13:12:35 +0000261 sdk {
262 name: "mysdk",
Paul Duffindb170e42020-12-08 17:48:25 +0000263 java_boot_libs: ["myjavalib"],
264 }
265
266 java_library {
267 name: "myjavalib",
268 srcs: ["Test.java"],
269 java_resources: ["resource.txt"],
270 // The aidl files should not be copied to the snapshot because a java_boot_libs member is not
271 // intended to be used for compiling Java, only for accessing the dex implementation jar.
272 aidl: {
273 export_include_dirs: ["aidl"],
274 },
275 system_modules: "none",
276 sdk_version: "none",
277 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100278 permitted_packages: ["pkg.myjavalib"],
Paul Duffindb170e42020-12-08 17:48:25 +0000279 }
280 `)
281
Paul Duffin13648912022-07-15 13:12:35 +0000282 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000283 checkAndroidBpContents(`
Paul Duffine1381882021-04-16 17:05:10 +0100284// This is auto-generated. DO NOT EDIT.
285
286java_import {
287 name: "myjavalib",
288 prefer: false,
289 visibility: ["//visibility:public"],
290 apex_available: ["//apex_available:platform"],
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000291 jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100292 permitted_packages: ["pkg.myjavalib"],
Paul Duffine1381882021-04-16 17:05:10 +0100293}
294`),
Paul Duffindb170e42020-12-08 17:48:25 +0000295 checkAllCopyRules(`
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000296.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
Paul Duffindb170e42020-12-08 17:48:25 +0000297`),
298 )
299}
300
Paul Duffin13648912022-07-15 13:12:35 +0000301func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000302 runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) {
Paul Duffin13648912022-07-15 13:12:35 +0000303 result := android.GroupFixturePreparers(
304 prepareForSdkTestWithJava,
305 android.FixtureMergeEnv(map[string]string{
306 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
307 }),
308 ).RunTestWithBp(t, `
309 sdk {
310 name: "mysdk",
311 java_boot_libs: ["updatable-media"],
312 }
313
314 java_library {
315 name: "updatable-media",
316 srcs: ["Test.java"],
317 system_modules: "none",
318 sdk_version: "none",
319 compile_dex: true,
320 permitted_packages: ["pkg.media"],
321 apex_available: ["com.android.media"],
322 }
323 `)
324
325 CheckSnapshot(t, result, "mysdk", "",
326 checkAndroidBpContents(fmt.Sprintf(`
327// This is auto-generated. DO NOT EDIT.
328
329java_import {
330 name: "updatable-media",
331 prefer: false,
332 visibility: ["//visibility:public"],
333 apex_available: ["com.android.media"],
334 jars: ["%s"],
335 permitted_packages: ["pkg.media"],
336}
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000337`, expectedJarPath)),
Paul Duffin13648912022-07-15 13:12:35 +0000338 checkAllCopyRules(expectedCopyRule),
339 )
340 }
341
342 t.Run("updatable-media in S", func(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000343 runTest(t, "S", "java/updatable-media.jar", `
Paul Duffin13648912022-07-15 13:12:35 +0000344.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar
345`)
346 })
347
348 t.Run("updatable-media in T", func(t *testing.T) {
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000349 runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", `
350.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar
Paul Duffin13648912022-07-15 13:12:35 +0000351`)
352 })
353}
354
Paul Duffinbb638eb2022-11-26 13:36:38 +0000355func TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) {
356 runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) {
357 result := android.GroupFixturePreparers(
358 prepareForSdkTestWithJava,
359 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
360 variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"}
361 }),
362 android.FixtureMergeEnv(map[string]string{
363 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
364 }),
365 ).RunTestWithBp(t, fmt.Sprintf(`
366 sdk {
367 name: "mysdk",
368 java_header_libs: ["mylib"],
369 }
370
371 java_library {
372 name: "mylib",
373 srcs: ["Test.java"],
374 system_modules: "none",
375 sdk_version: "none",
376 compile_dex: true,
377 min_sdk_version: "%s",
378 }
379 `, minSdkVersion))
380
381 expectedMinSdkVersionLine := ""
382 if expectedMinSdkVersion != "" {
383 expectedMinSdkVersionLine = fmt.Sprintf(" min_sdk_version: %q,\n", expectedMinSdkVersion)
384 }
385
386 CheckSnapshot(t, result, "mysdk", "",
387 checkAndroidBpContents(fmt.Sprintf(`
388// This is auto-generated. DO NOT EDIT.
389
390java_import {
391 name: "mylib",
392 prefer: false,
393 visibility: ["//visibility:public"],
394 apex_available: ["//apex_available:platform"],
395 jars: ["java/mylib.jar"],
396%s}
397`, expectedMinSdkVersionLine)),
398 )
399 }
400
401 t.Run("min_sdk_version=S in S", func(t *testing.T) {
402 // min_sdk_version was not added to java_import until Tiramisu.
403 runTest(t, "S", "S", "")
404 })
405
406 t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) {
407 // The canonical form of S is 31.
408 runTest(t, "Tiramisu", "S", "31")
409 })
410
411 t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) {
412 // A numerical min_sdk_version is already in canonical form.
413 runTest(t, "Tiramisu", "24", "24")
414 })
415
416 t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) {
417 // An unfinalized min_sdk_version has no numeric value yet.
418 runTest(t, "", "Unfinalized", "Unfinalized")
419 })
420}
421
Jiakai Zhangea180332021-09-26 08:58:02 +0000422func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) {
423 result := android.GroupFixturePreparers(
424 prepareForSdkTestWithJava,
425 android.FixtureAddFile("aidl", nil),
426 android.FixtureAddFile("resource.txt", nil),
427 ).RunTestWithBp(t, `
428 module_exports {
429 name: "myexports",
430 java_systemserver_libs: ["myjavalib"],
431 }
432
433 java_library {
434 name: "myjavalib",
435 srcs: ["Test.java"],
436 java_resources: ["resource.txt"],
437 // The aidl files should not be copied to the snapshot because a java_systemserver_libs member
438 // is not intended to be used for compiling Java, only for accessing the dex implementation
439 // jar.
440 aidl: {
441 export_include_dirs: ["aidl"],
442 },
443 system_modules: "none",
444 sdk_version: "none",
445 compile_dex: true,
446 permitted_packages: ["pkg.myjavalib"],
447 }
448 `)
449
450 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000451 checkAndroidBpContents(`
Jiakai Zhangea180332021-09-26 08:58:02 +0000452// This is auto-generated. DO NOT EDIT.
453
454java_import {
455 name: "myjavalib",
456 prefer: false,
457 visibility: ["//visibility:public"],
458 apex_available: ["//apex_available:platform"],
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000459 jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"],
Jiakai Zhangea180332021-09-26 08:58:02 +0000460 permitted_packages: ["pkg.myjavalib"],
461}
462`),
Jiakai Zhangea180332021-09-26 08:58:02 +0000463 checkAllCopyRules(`
Paul Duffin7ed6ff82022-11-21 10:57:30 +0000464.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar
Jiakai Zhangea180332021-09-26 08:58:02 +0000465`),
466 )
467}
468
Paul Duffina0dbf432019-12-05 11:25:53 +0000469func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000470 result := android.GroupFixturePreparers(
471 prepareForSdkTestWithJava,
472 android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
473 ).RunTestWithBp(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000474 module_exports {
475 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000476 device_supported: false,
477 host_supported: true,
478 java_libs: ["myjavalib"],
479 }
480
481 java_library {
482 name: "myjavalib",
483 device_supported: false,
484 host_supported: true,
485 srcs: ["Test.java"],
486 aidl: {
487 export_include_dirs: ["aidl"],
488 },
489 system_modules: "none",
490 sdk_version: "none",
491 compile_dex: true,
492 }
493 `)
494
Paul Duffin36474d32021-03-12 12:19:43 +0000495 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000496 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +0000497// This is auto-generated. DO NOT EDIT.
498
499java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100500 name: "myjavalib",
501 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100502 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000503 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000504 device_supported: false,
505 host_supported: true,
506 jars: ["java/myjavalib.jar"],
507}
Paul Duffine1381882021-04-16 17:05:10 +0100508`),
Paul Duffina80fdec2019-12-03 15:25:00 +0000509 checkAllCopyRules(`
510.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
511aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
512`),
513 )
514}
515
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000516func TestSnapshotWithJavaTest(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000517 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000518 module_exports {
519 name: "myexports",
520 java_tests: ["myjavatests"],
521 }
522
523 java_test {
524 name: "myjavatests",
525 srcs: ["Test.java"],
526 system_modules: "none",
527 sdk_version: "none",
528 compile_dex: true,
529 host_supported: true,
530 }
531 `)
532
Paul Duffin36474d32021-03-12 12:19:43 +0000533 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000534 checkAndroidBpContents(`
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000535// This is auto-generated. DO NOT EDIT.
536
537java_test_import {
Paul Duffine1381882021-04-16 17:05:10 +0100538 name: "myjavatests",
539 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100540 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000541 apex_available: ["//apex_available:platform"],
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000542 jars: ["java/myjavatests.jar"],
543 test_config: "java/myjavatests-AndroidTest.xml",
544}
Paul Duffine1381882021-04-16 17:05:10 +0100545`),
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000546 checkAllCopyRules(`
547.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
548.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
549`),
550 )
551}
552
553func TestHostSnapshotWithJavaTest(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000554 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000555 module_exports {
556 name: "myexports",
557 device_supported: false,
558 host_supported: true,
559 java_tests: ["myjavatests"],
560 }
561
562 java_test {
563 name: "myjavatests",
564 device_supported: false,
565 host_supported: true,
566 srcs: ["Test.java"],
567 system_modules: "none",
568 sdk_version: "none",
569 compile_dex: true,
570 }
571 `)
572
Paul Duffin36474d32021-03-12 12:19:43 +0000573 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000574 checkAndroidBpContents(`
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000575// This is auto-generated. DO NOT EDIT.
576
577java_test_import {
Paul Duffine1381882021-04-16 17:05:10 +0100578 name: "myjavatests",
579 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100580 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000581 apex_available: ["//apex_available:platform"],
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000582 device_supported: false,
583 host_supported: true,
584 jars: ["java/myjavatests.jar"],
585 test_config: "java/myjavatests-AndroidTest.xml",
586}
Paul Duffine1381882021-04-16 17:05:10 +0100587`),
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000588 checkAllCopyRules(`
589.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
590.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
591`),
592 )
593}
594
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000595func TestSnapshotWithJavaSystemModules(t *testing.T) {
Paul Duffin958806b2022-05-16 13:10:47 +0000596 result := android.GroupFixturePreparers(
597 prepareForSdkTestWithJava,
598 java.PrepareForTestWithJavaDefaultModules,
599 java.PrepareForTestWithJavaSdkLibraryFiles,
600 java.FixtureWithPrebuiltApisAndExtensions(map[string][]string{
601 "31": {"myjavalib"},
602 "32": {"myjavalib"},
603 "current": {"myjavalib"},
604 }, map[string][]string{
605 "1": {"myjavalib"},
606 "2": {"myjavalib"},
607 }),
608 ).RunTestWithBp(t, `
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000609 sdk {
610 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000611 java_header_libs: ["exported-system-module"],
Paul Duffin33028712021-06-22 11:00:07 +0100612 java_sdk_libs: ["myjavalib"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000613 java_system_modules: ["my-system-modules"],
614 }
615
Paul Duffin33028712021-06-22 11:00:07 +0100616 java_sdk_library {
617 name: "myjavalib",
618 apex_available: ["//apex_available:anyapex"],
619 srcs: ["Test.java"],
620 sdk_version: "current",
621 shared_library: false,
622 public: {
623 enabled: true,
624 },
625 }
626
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000627 java_system_modules {
628 name: "my-system-modules",
Paul Duffin33028712021-06-22 11:00:07 +0100629 libs: ["system-module", "exported-system-module", "myjavalib.stubs"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000630 }
631
632 java_library {
633 name: "system-module",
634 srcs: ["Test.java"],
635 sdk_version: "none",
636 system_modules: "none",
637 }
Paul Duffin72910952020-01-20 18:16:30 +0000638
639 java_library {
640 name: "exported-system-module",
641 srcs: ["Test.java"],
642 sdk_version: "none",
643 system_modules: "none",
644 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000645 `)
646
Paul Duffin36474d32021-03-12 12:19:43 +0000647 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000648 checkAndroidBpContents(`
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000649// This is auto-generated. DO NOT EDIT.
650
651java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100652 name: "exported-system-module",
653 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100654 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000655 apex_available: ["//apex_available:platform"],
Paul Duffin72910952020-01-20 18:16:30 +0000656 jars: ["java/exported-system-module.jar"],
657}
658
659java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100660 name: "mysdk_system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000661 prefer: false,
Paul Duffine1381882021-04-16 17:05:10 +0100662 visibility: ["//visibility:private"],
663 apex_available: ["//apex_available:platform"],
664 jars: ["java/system-module.jar"],
665}
666
Paul Duffin33028712021-06-22 11:00:07 +0100667java_sdk_library_import {
668 name: "myjavalib",
669 prefer: false,
670 visibility: ["//visibility:public"],
671 apex_available: ["//apex_available:anyapex"],
672 shared_library: false,
673 public: {
674 jars: ["sdk_library/public/myjavalib-stubs.jar"],
675 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
676 current_api: "sdk_library/public/myjavalib.txt",
677 removed_api: "sdk_library/public/myjavalib-removed.txt",
678 sdk_version: "current",
679 },
680}
681
Paul Duffine1381882021-04-16 17:05:10 +0100682java_system_modules_import {
683 name: "my-system-modules",
684 prefer: false,
685 visibility: ["//visibility:public"],
686 libs: [
687 "mysdk_system-module",
688 "exported-system-module",
Paul Duffinb97b1572021-04-29 21:50:40 +0100689 "myjavalib.stubs",
Paul Duffine1381882021-04-16 17:05:10 +0100690 ],
691}
692`),
Paul Duffin72910952020-01-20 18:16:30 +0000693 checkAllCopyRules(`
694.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
695.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
Paul Duffin33028712021-06-22 11:00:07 +0100696.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
697.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
698.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 +0000699`),
Paul Duffin958806b2022-05-16 13:10:47 +0000700 checkInfoContents(result.Config, `
Paul Duffinc6ba1822022-05-06 09:38:02 +0000701[
702 {
703 "@type": "sdk",
704 "@name": "mysdk",
705 "java_header_libs": [
706 "exported-system-module",
707 "system-module"
708 ],
709 "java_sdk_libs": [
710 "myjavalib"
711 ],
712 "java_system_modules": [
713 "my-system-modules"
714 ]
715 },
716 {
717 "@type": "java_library",
718 "@name": "exported-system-module"
719 },
720 {
721 "@type": "java_system_modules",
722 "@name": "my-system-modules",
723 "@deps": [
724 "exported-system-module",
725 "system-module"
726 ]
727 },
728 {
729 "@type": "java_sdk_library",
Paul Duffin958806b2022-05-16 13:10:47 +0000730 "@name": "myjavalib",
731 "dist_stem": "myjavalib",
732 "scopes": {
733 "public": {
734 "current_api": "sdk_library/public/myjavalib.txt",
735 "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.public.latest/gen/myjavalib.api.public.latest",
736 "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.public.latest/gen/myjavalib-removed.api.public.latest",
737 "removed_api": "sdk_library/public/myjavalib-removed.txt"
738 }
739 }
Paul Duffinc6ba1822022-05-06 09:38:02 +0000740 },
741 {
742 "@type": "java_library",
743 "@name": "system-module"
744 }
745]
746`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000747 )
748}
749
750func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000751 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000752 sdk {
753 name: "mysdk",
754 device_supported: false,
755 host_supported: true,
756 java_system_modules: ["my-system-modules"],
757 }
758
759 java_system_modules {
760 name: "my-system-modules",
761 device_supported: false,
762 host_supported: true,
763 libs: ["system-module"],
764 }
765
766 java_library {
767 name: "system-module",
768 device_supported: false,
769 host_supported: true,
770 srcs: ["Test.java"],
771 sdk_version: "none",
772 system_modules: "none",
773 }
774 `)
775
Paul Duffin36474d32021-03-12 12:19:43 +0000776 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000777 checkAndroidBpContents(`
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000778// This is auto-generated. DO NOT EDIT.
779
780java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100781 name: "mysdk_system-module",
782 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000783 visibility: ["//visibility:private"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000784 apex_available: ["//apex_available:platform"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000785 device_supported: false,
786 host_supported: true,
787 jars: ["java/system-module.jar"],
788}
789
Paul Duffine1381882021-04-16 17:05:10 +0100790java_system_modules_import {
791 name: "my-system-modules",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000792 prefer: false,
Paul Duffine1381882021-04-16 17:05:10 +0100793 visibility: ["//visibility:public"],
794 device_supported: false,
795 host_supported: true,
796 libs: ["mysdk_system-module"],
797}
798`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000799 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
800 )
801}
Paul Duffin865171e2020-03-02 18:38:15 +0000802
803func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000804 result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
Paul Duffin865171e2020-03-02 18:38:15 +0000805 module_exports {
806 name: "myexports",
807 host_supported: true,
808 java_libs: ["myjavalib"],
809 target: {
810 android: {
811 java_header_libs: ["androidjavalib"],
812 },
813 host: {
814 java_header_libs: ["hostjavalib"],
815 },
816 },
817 }
818
819 java_library {
820 name: "myjavalib",
821 host_supported: true,
822 srcs: ["Test.java"],
823 system_modules: "none",
824 sdk_version: "none",
825 }
826
827 java_library {
828 name: "androidjavalib",
829 srcs: ["Test.java"],
830 system_modules: "none",
831 sdk_version: "none",
832 }
833
834 java_library_host {
835 name: "hostjavalib",
836 srcs: ["Test.java"],
837 }
838 `)
839
Paul Duffin36474d32021-03-12 12:19:43 +0000840 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000841 checkAndroidBpContents(`
Paul Duffin865171e2020-03-02 18:38:15 +0000842// This is auto-generated. DO NOT EDIT.
843
844java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100845 name: "hostjavalib",
846 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100847 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000848 apex_available: ["//apex_available:platform"],
Paul Duffin865171e2020-03-02 18:38:15 +0000849 device_supported: false,
850 host_supported: true,
851 jars: ["java/hostjavalib.jar"],
852}
853
854java_import {
Paul Duffine1381882021-04-16 17:05:10 +0100855 name: "androidjavalib",
Paul Duffin865171e2020-03-02 18:38:15 +0000856 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100857 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000858 apex_available: ["//apex_available:platform"],
Paul Duffine1381882021-04-16 17:05:10 +0100859 jars: ["java/androidjavalib.jar"],
860}
861
862java_import {
863 name: "myjavalib",
864 prefer: false,
865 visibility: ["//visibility:public"],
866 apex_available: ["//apex_available:platform"],
867 host_supported: true,
868 target: {
869 android: {
870 jars: ["java/android/myjavalib.jar"],
871 },
872 linux_glibc: {
873 jars: ["java/linux_glibc/myjavalib.jar"],
874 },
875 },
876}
877`),
Paul Duffin865171e2020-03-02 18:38:15 +0000878 checkAllCopyRules(`
879.intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
880.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
881.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
882.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
883`),
884 )
885}
Paul Duffindd46f712020-02-10 13:37:10 +0000886
887func TestSnapshotWithJavaSdkLibrary(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +0000888 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffindd46f712020-02-10 13:37:10 +0000889 sdk {
890 name: "mysdk",
891 java_sdk_libs: ["myjavalib"],
892 }
893
894 java_sdk_library {
895 name: "myjavalib",
896 apex_available: ["//apex_available:anyapex"],
897 srcs: ["Test.java"],
898 sdk_version: "current",
Paul Duffind7eb1c22020-05-26 20:57:10 +0100899 shared_library: false,
Paul Duffin4911a892020-04-29 23:35:13 +0100900 stubs_library_visibility: ["//other"],
901 stubs_source_visibility: ["//another"],
Paul Duffin869de142021-07-15 14:14:41 +0100902 permitted_packages: ["pkg.myjavalib"],
Paul Duffindd46f712020-02-10 13:37:10 +0000903 }
904 `)
905
Paul Duffin36474d32021-03-12 12:19:43 +0000906 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000907 checkAndroidBpContents(`
Paul Duffindd46f712020-02-10 13:37:10 +0000908// This is auto-generated. DO NOT EDIT.
909
910java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +0100911 name: "myjavalib",
912 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100913 visibility: ["//visibility:public"],
Paul Duffindd46f712020-02-10 13:37:10 +0000914 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +0100915 shared_library: false,
Paul Duffin869de142021-07-15 14:14:41 +0100916 permitted_packages: ["pkg.myjavalib"],
Paul Duffindd46f712020-02-10 13:37:10 +0000917 public: {
918 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000919 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100920 current_api: "sdk_library/public/myjavalib.txt",
921 removed_api: "sdk_library/public/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000922 sdk_version: "current",
923 },
924 system: {
925 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000926 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100927 current_api: "sdk_library/system/myjavalib.txt",
928 removed_api: "sdk_library/system/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000929 sdk_version: "system_current",
930 },
931 test: {
932 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +0000933 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +0100934 current_api: "sdk_library/test/myjavalib.txt",
935 removed_api: "sdk_library/test/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +0000936 sdk_version: "test_current",
937 },
938}
Paul Duffine1381882021-04-16 17:05:10 +0100939`),
Paul Duffindd46f712020-02-10 13:37:10 +0000940 checkAllCopyRules(`
941.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -0700942.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
943.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 +0000944.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -0700945.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
946.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 +0000947.intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -0700948.intermediates/myjavalib.stubs.source.test/android_common/metalava/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
949.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 +0000950`),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100951 checkMergeZips(
952 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
953 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
Paul Duffin33028712021-06-22 11:00:07 +0100954 ".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip",
955 ),
Paul Duffindd46f712020-02-10 13:37:10 +0000956 )
957}
Paul Duffin3375e352020-04-28 10:44:03 +0100958
Paul Duffine8409952022-09-22 16:24:46 +0100959func TestSnapshotWithJavaSdkLibrary_DistStem(t *testing.T) {
960 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
961 sdk {
962 name: "mysdk",
963 java_sdk_libs: ["myjavalib-foo"],
964 }
965
966 java_sdk_library {
967 name: "myjavalib-foo",
968 apex_available: ["//apex_available:anyapex"],
969 srcs: ["Test.java"],
970 sdk_version: "current",
971 shared_library: false,
972 public: {
973 enabled: true,
974 },
975 dist_stem: "myjavalib",
976 }
977 `)
978
979 CheckSnapshot(t, result, "mysdk", "",
980 checkAndroidBpContents(`
981// This is auto-generated. DO NOT EDIT.
982
983java_sdk_library_import {
984 name: "myjavalib-foo",
985 prefer: false,
986 visibility: ["//visibility:public"],
987 apex_available: ["//apex_available:anyapex"],
988 shared_library: false,
989 public: {
990 jars: ["sdk_library/public/myjavalib-stubs.jar"],
991 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
992 current_api: "sdk_library/public/myjavalib.txt",
993 removed_api: "sdk_library/public/myjavalib-removed.txt",
994 sdk_version: "current",
995 },
996}
997`),
998 checkAllCopyRules(`
999.intermediates/myjavalib-foo.stubs/android_common/javac/myjavalib-foo.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1000.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1001.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1002`),
1003 checkMergeZips(
1004 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1005 ),
1006 )
1007}
1008
Paul Duffin22628d52021-05-12 23:13:22 +01001009func TestSnapshotWithJavaSdkLibrary_UseSrcJar(t *testing.T) {
1010 result := android.GroupFixturePreparers(
1011 prepareForSdkTestWithJavaSdkLibrary,
1012 android.FixtureMergeEnv(map[string]string{
1013 "SOONG_SDK_SNAPSHOT_USE_SRCJAR": "true",
1014 }),
1015 ).RunTestWithBp(t, `
1016 sdk {
1017 name: "mysdk",
1018 java_sdk_libs: ["myjavalib"],
1019 }
1020
1021 java_sdk_library {
1022 name: "myjavalib",
1023 srcs: ["Test.java"],
1024 sdk_version: "current",
1025 shared_library: false,
1026 public: {
1027 enabled: true,
1028 },
1029 }
1030 `)
1031
1032 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001033 checkAndroidBpContents(`
Paul Duffin22628d52021-05-12 23:13:22 +01001034// This is auto-generated. DO NOT EDIT.
1035
1036java_sdk_library_import {
1037 name: "myjavalib",
1038 prefer: false,
1039 visibility: ["//visibility:public"],
1040 apex_available: ["//apex_available:platform"],
1041 shared_library: false,
1042 public: {
1043 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1044 stub_srcs: ["sdk_library/public/myjavalib.srcjar"],
1045 current_api: "sdk_library/public/myjavalib.txt",
1046 removed_api: "sdk_library/public/myjavalib-removed.txt",
1047 sdk_version: "current",
1048 },
1049}
1050 `),
1051 checkAllCopyRules(`
1052.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1053.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source-stubs.srcjar -> sdk_library/public/myjavalib.srcjar
1054.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1055.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1056 `),
1057 )
1058}
1059
Anton Hanssond78eb762021-09-21 15:25:12 +01001060func TestSnapshotWithJavaSdkLibrary_AnnotationsZip(t *testing.T) {
1061 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1062 sdk {
1063 name: "mysdk",
1064 java_sdk_libs: ["myjavalib"],
1065 }
1066
1067 java_sdk_library {
1068 name: "myjavalib",
1069 srcs: ["Test.java"],
1070 sdk_version: "current",
1071 shared_library: false,
1072 annotations_enabled: true,
1073 public: {
1074 enabled: true,
1075 },
1076 }
1077 `)
1078
1079 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001080 checkAndroidBpContents(`
Anton Hanssond78eb762021-09-21 15:25:12 +01001081// This is auto-generated. DO NOT EDIT.
1082
1083java_sdk_library_import {
1084 name: "myjavalib",
1085 prefer: false,
1086 visibility: ["//visibility:public"],
1087 apex_available: ["//apex_available:platform"],
1088 shared_library: false,
1089 public: {
1090 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1091 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1092 current_api: "sdk_library/public/myjavalib.txt",
1093 removed_api: "sdk_library/public/myjavalib-removed.txt",
1094 annotations: "sdk_library/public/myjavalib_annotations.zip",
1095 sdk_version: "current",
1096 },
1097}
1098 `),
1099 checkAllCopyRules(`
1100.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1101.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1102.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1103.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_annotations.zip -> sdk_library/public/myjavalib_annotations.zip
1104 `),
1105 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1106 )
1107}
1108
Paul Duffina54016c2022-01-27 16:39:47 +00001109func TestSnapshotWithJavaSdkLibrary_AnnotationsZip_PreT(t *testing.T) {
1110 result := android.GroupFixturePreparers(
1111 prepareForSdkTestWithJavaSdkLibrary,
1112 android.FixtureMergeEnv(map[string]string{
1113 "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S",
1114 }),
1115 ).RunTestWithBp(t, `
1116 sdk {
1117 name: "mysdk",
1118 java_sdk_libs: ["myjavalib"],
1119 }
1120
1121 java_sdk_library {
1122 name: "myjavalib",
1123 srcs: ["Test.java"],
Paul Duffin1938dba2022-07-26 23:53:00 +00001124 sdk_version: "S",
Paul Duffina54016c2022-01-27 16:39:47 +00001125 shared_library: false,
1126 annotations_enabled: true,
1127 public: {
1128 enabled: true,
1129 },
1130 }
1131 `)
1132
1133 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001134 checkAndroidBpContents(`
Paul Duffina54016c2022-01-27 16:39:47 +00001135// This is auto-generated. DO NOT EDIT.
1136
1137java_sdk_library_import {
1138 name: "myjavalib",
1139 prefer: false,
1140 visibility: ["//visibility:public"],
1141 apex_available: ["//apex_available:platform"],
1142 shared_library: false,
1143 public: {
1144 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1145 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1146 current_api: "sdk_library/public/myjavalib.txt",
1147 removed_api: "sdk_library/public/myjavalib-removed.txt",
1148 sdk_version: "current",
1149 },
1150}
1151 `),
1152 checkAllCopyRules(`
1153.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1154.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1155.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1156 `),
1157 checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1158 )
1159}
1160
Paul Duffin1267d872021-04-16 17:21:36 +01001161func TestSnapshotWithJavaSdkLibrary_CompileDex(t *testing.T) {
1162 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1163 sdk {
1164 name: "mysdk",
1165 java_sdk_libs: ["myjavalib"],
1166 }
1167
1168 java_sdk_library {
1169 name: "myjavalib",
1170 srcs: ["Test.java"],
1171 sdk_version: "current",
1172 shared_library: false,
1173 compile_dex: true,
1174 public: {
1175 enabled: true,
1176 },
1177 system: {
1178 enabled: true,
1179 },
1180 }
1181 `)
1182
1183 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001184 checkAndroidBpContents(`
Paul Duffin1267d872021-04-16 17:21:36 +01001185// This is auto-generated. DO NOT EDIT.
1186
1187java_sdk_library_import {
1188 name: "myjavalib",
1189 prefer: false,
1190 visibility: ["//visibility:public"],
1191 apex_available: ["//apex_available:platform"],
1192 shared_library: false,
1193 compile_dex: true,
1194 public: {
1195 jars: ["sdk_library/public/myjavalib-stubs.jar"],
1196 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1197 current_api: "sdk_library/public/myjavalib.txt",
1198 removed_api: "sdk_library/public/myjavalib-removed.txt",
1199 sdk_version: "current",
1200 },
1201 system: {
1202 jars: ["sdk_library/system/myjavalib-stubs.jar"],
1203 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1204 current_api: "sdk_library/system/myjavalib.txt",
1205 removed_api: "sdk_library/system/myjavalib-removed.txt",
1206 sdk_version: "system_current",
1207 },
1208}
1209`),
1210 snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
1211 ctx := android.ModuleInstallPathContextForTesting(result.Config)
1212 dexJarBuildPath := func(name string, kind android.SdkKind) string {
1213 dep := result.Module(name, "android_common").(java.SdkLibraryDependency)
Martin Stjernholm8be1e6d2021-09-15 03:34:04 +01001214 path := dep.SdkApiStubDexJar(ctx, kind).Path()
Paul Duffin1267d872021-04-16 17:21:36 +01001215 return path.RelativeToTop().String()
1216 }
1217
1218 dexJarPath := dexJarBuildPath("myjavalib", android.SdkPublic)
1219 android.AssertStringEquals(t, "source dex public stubs jar build path", "out/soong/.intermediates/myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath)
1220
1221 dexJarPath = dexJarBuildPath("myjavalib", android.SdkSystem)
1222 systemDexJar := "out/soong/.intermediates/myjavalib.stubs.system/android_common/dex/myjavalib.stubs.system.jar"
1223 android.AssertStringEquals(t, "source dex system stubs jar build path", systemDexJar, dexJarPath)
1224
1225 // This should fall back to system as module is not available.
1226 dexJarPath = dexJarBuildPath("myjavalib", android.SdkModule)
1227 android.AssertStringEquals(t, "source dex module stubs jar build path", systemDexJar, dexJarPath)
1228
1229 dexJarPath = dexJarBuildPath(android.PrebuiltNameFromSource("myjavalib"), android.SdkPublic)
1230 android.AssertStringEquals(t, "prebuilt dex public stubs jar build path", "out/soong/.intermediates/snapshot/prebuilt_myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath)
1231 }),
1232 )
1233}
1234
Paul Duffin780c5f42020-05-12 15:52:55 +01001235func TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001236 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin780c5f42020-05-12 15:52:55 +01001237 sdk {
1238 name: "mysdk",
1239 java_sdk_libs: ["myjavalib"],
1240 }
1241
1242 java_sdk_library {
1243 name: "myjavalib",
1244 srcs: ["Test.java"],
1245 sdk_version: "none",
1246 system_modules: "none",
1247 }
1248 `)
1249
Paul Duffin36474d32021-03-12 12:19:43 +00001250 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001251 checkAndroidBpContents(`
Paul Duffin780c5f42020-05-12 15:52:55 +01001252// This is auto-generated. DO NOT EDIT.
1253
1254java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001255 name: "myjavalib",
1256 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001257 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001258 apex_available: ["//apex_available:platform"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001259 shared_library: true,
Paul Duffin780c5f42020-05-12 15:52:55 +01001260 public: {
1261 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001262 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin780c5f42020-05-12 15:52:55 +01001263 current_api: "sdk_library/public/myjavalib.txt",
1264 removed_api: "sdk_library/public/myjavalib-removed.txt",
1265 sdk_version: "none",
1266 },
1267}
Paul Duffine1381882021-04-16 17:05:10 +01001268`),
Paul Duffin780c5f42020-05-12 15:52:55 +01001269 checkAllCopyRules(`
1270.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001271.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1272.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 +01001273`),
1274 checkMergeZips(
1275 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1276 ),
1277 )
1278}
1279
Paul Duffin87a05a32020-05-12 11:50:28 +01001280func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001281 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin87a05a32020-05-12 11:50:28 +01001282 sdk {
1283 name: "mysdk",
1284 java_sdk_libs: ["myjavalib"],
1285 }
1286
1287 java_sdk_library {
1288 name: "myjavalib",
1289 srcs: ["Test.java"],
1290 sdk_version: "module_current",
1291 public: {
1292 enabled: true,
1293 sdk_version: "module_current",
1294 },
1295 }
1296 `)
1297
Paul Duffin36474d32021-03-12 12:19:43 +00001298 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001299 checkAndroidBpContents(`
Paul Duffin87a05a32020-05-12 11:50:28 +01001300// This is auto-generated. DO NOT EDIT.
1301
1302java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001303 name: "myjavalib",
1304 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001305 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001306 apex_available: ["//apex_available:platform"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001307 shared_library: true,
Paul Duffin87a05a32020-05-12 11:50:28 +01001308 public: {
1309 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001310 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin87a05a32020-05-12 11:50:28 +01001311 current_api: "sdk_library/public/myjavalib.txt",
1312 removed_api: "sdk_library/public/myjavalib-removed.txt",
1313 sdk_version: "module_current",
1314 },
1315}
Paul Duffine1381882021-04-16 17:05:10 +01001316`),
Paul Duffin87a05a32020-05-12 11:50:28 +01001317 checkAllCopyRules(`
1318.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001319.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1320.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 +01001321`),
1322 checkMergeZips(
1323 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1324 ),
1325 )
1326}
1327
1328func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001329 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin3375e352020-04-28 10:44:03 +01001330 sdk {
1331 name: "mysdk",
1332 java_sdk_libs: ["myjavalib"],
1333 }
1334
1335 java_sdk_library {
1336 name: "myjavalib",
1337 apex_available: ["//apex_available:anyapex"],
1338 srcs: ["Test.java"],
1339 sdk_version: "current",
1340 public: {
1341 enabled: true,
1342 },
1343 system: {
1344 enabled: true,
1345 },
1346 }
1347 `)
1348
Paul Duffin36474d32021-03-12 12:19:43 +00001349 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001350 checkAndroidBpContents(`
Paul Duffin3375e352020-04-28 10:44:03 +01001351// This is auto-generated. DO NOT EDIT.
1352
1353java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001354 name: "myjavalib",
1355 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001356 visibility: ["//visibility:public"],
Paul Duffin3375e352020-04-28 10:44:03 +01001357 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001358 shared_library: true,
Paul Duffin3375e352020-04-28 10:44:03 +01001359 public: {
1360 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001361 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin3375e352020-04-28 10:44:03 +01001362 current_api: "sdk_library/public/myjavalib.txt",
1363 removed_api: "sdk_library/public/myjavalib-removed.txt",
1364 sdk_version: "current",
1365 },
1366 system: {
1367 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001368 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin3375e352020-04-28 10:44:03 +01001369 current_api: "sdk_library/system/myjavalib.txt",
1370 removed_api: "sdk_library/system/myjavalib-removed.txt",
1371 sdk_version: "system_current",
1372 },
1373}
Paul Duffine1381882021-04-16 17:05:10 +01001374`),
Paul Duffin3375e352020-04-28 10:44:03 +01001375 checkAllCopyRules(`
1376.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001377.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1378.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 +01001379.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001380.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1381.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 +01001382`),
1383 checkMergeZips(
1384 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1385 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1386 ),
1387 )
1388}
Paul Duffin8f265b92020-04-28 14:13:56 +01001389
1390func TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001391 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin8f265b92020-04-28 14:13:56 +01001392 sdk {
1393 name: "mysdk",
1394 java_sdk_libs: ["myjavalib"],
1395 }
1396
1397 java_sdk_library {
1398 name: "myjavalib",
1399 apex_available: ["//apex_available:anyapex"],
1400 srcs: ["Test.java"],
1401 sdk_version: "current",
1402 public: {
1403 enabled: true,
1404 },
1405 system: {
1406 enabled: true,
1407 },
1408 module_lib: {
1409 enabled: true,
1410 },
1411 }
1412 `)
1413
Paul Duffin36474d32021-03-12 12:19:43 +00001414 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001415 checkAndroidBpContents(`
Paul Duffin8f265b92020-04-28 14:13:56 +01001416// This is auto-generated. DO NOT EDIT.
1417
1418java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001419 name: "myjavalib",
1420 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001421 visibility: ["//visibility:public"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001422 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001423 shared_library: true,
Paul Duffin8f265b92020-04-28 14:13:56 +01001424 public: {
1425 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001426 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001427 current_api: "sdk_library/public/myjavalib.txt",
1428 removed_api: "sdk_library/public/myjavalib-removed.txt",
1429 sdk_version: "current",
1430 },
1431 system: {
1432 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001433 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin8f265b92020-04-28 14:13:56 +01001434 current_api: "sdk_library/system/myjavalib.txt",
1435 removed_api: "sdk_library/system/myjavalib-removed.txt",
1436 sdk_version: "system_current",
1437 },
1438 module_lib: {
Paul Duffin6b836ba2020-05-13 19:19:49 +01001439 jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001440 stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
Paul Duffin6b836ba2020-05-13 19:19:49 +01001441 current_api: "sdk_library/module-lib/myjavalib.txt",
1442 removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
Paul Duffin8f265b92020-04-28 14:13:56 +01001443 sdk_version: "module_current",
1444 },
1445}
Paul Duffine1381882021-04-16 17:05:10 +01001446`),
Paul Duffin8f265b92020-04-28 14:13:56 +01001447 checkAllCopyRules(`
1448.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001449.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1450.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 +01001451.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001452.intermediates/myjavalib.stubs.source.system/android_common/metalava/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1453.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 +01001454.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 -07001455.intermediates/myjavalib.stubs.source.module_lib/android_common/metalava/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
1456.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 +01001457`),
1458 checkMergeZips(
Paul Duffin74f1dcd2022-07-18 13:18:23 +00001459 ".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001460 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1461 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001462 ),
1463 )
1464}
Paul Duffinf7a64332020-05-13 16:54:55 +01001465
Paul Duffin0c5bae52020-06-02 13:00:08 +01001466func TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001467 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffin0c5bae52020-06-02 13:00:08 +01001468 sdk {
1469 name: "mysdk",
1470 java_sdk_libs: ["myjavalib"],
1471 }
1472
1473 java_sdk_library {
1474 name: "myjavalib",
1475 apex_available: ["//apex_available:anyapex"],
1476 srcs: ["Test.java"],
1477 sdk_version: "current",
1478 public: {
1479 enabled: true,
1480 },
1481 system_server: {
1482 enabled: true,
1483 },
1484 }
1485 `)
1486
Paul Duffin36474d32021-03-12 12:19:43 +00001487 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001488 checkAndroidBpContents(`
Paul Duffin0c5bae52020-06-02 13:00:08 +01001489// This is auto-generated. DO NOT EDIT.
1490
1491java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001492 name: "myjavalib",
1493 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001494 visibility: ["//visibility:public"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001495 apex_available: ["//apex_available:anyapex"],
1496 shared_library: true,
1497 public: {
1498 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001499 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001500 current_api: "sdk_library/public/myjavalib.txt",
1501 removed_api: "sdk_library/public/myjavalib-removed.txt",
1502 sdk_version: "current",
1503 },
1504 system_server: {
1505 jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001506 stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
Paul Duffin0c5bae52020-06-02 13:00:08 +01001507 current_api: "sdk_library/system-server/myjavalib.txt",
1508 removed_api: "sdk_library/system-server/myjavalib-removed.txt",
1509 sdk_version: "system_server_current",
1510 },
1511}
Paul Duffine1381882021-04-16 17:05:10 +01001512`),
Paul Duffin0c5bae52020-06-02 13:00:08 +01001513 checkAllCopyRules(`
1514.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001515.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1516.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 +01001517.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 -07001518.intermediates/myjavalib.stubs.source.system_server/android_common/metalava/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt
1519.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 +01001520`),
1521 checkMergeZips(
1522 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1523 ".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip",
1524 ),
1525 )
1526}
1527
Paul Duffinf7a64332020-05-13 16:54:55 +01001528func TestSnapshotWithJavaSdkLibrary_NamingScheme(t *testing.T) {
Paul Duffin9ec86b12021-03-15 11:17:52 +00001529 result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
Paul Duffinf7a64332020-05-13 16:54:55 +01001530 sdk {
1531 name: "mysdk",
1532 java_sdk_libs: ["myjavalib"],
1533 }
1534
1535 java_sdk_library {
1536 name: "myjavalib",
1537 apex_available: ["//apex_available:anyapex"],
1538 srcs: ["Test.java"],
1539 sdk_version: "current",
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001540 naming_scheme: "default",
Paul Duffinf7a64332020-05-13 16:54:55 +01001541 public: {
1542 enabled: true,
1543 },
1544 }
1545 `)
1546
Paul Duffin36474d32021-03-12 12:19:43 +00001547 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001548 checkAndroidBpContents(`
Paul Duffinf7a64332020-05-13 16:54:55 +01001549// This is auto-generated. DO NOT EDIT.
1550
1551java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001552 name: "myjavalib",
1553 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001554 visibility: ["//visibility:public"],
Paul Duffinf7a64332020-05-13 16:54:55 +01001555 apex_available: ["//apex_available:anyapex"],
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001556 naming_scheme: "default",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001557 shared_library: true,
Paul Duffinf7a64332020-05-13 16:54:55 +01001558 public: {
1559 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001560 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffinf7a64332020-05-13 16:54:55 +01001561 current_api: "sdk_library/public/myjavalib.txt",
1562 removed_api: "sdk_library/public/myjavalib-removed.txt",
1563 sdk_version: "current",
1564 },
1565}
Paul Duffine1381882021-04-16 17:05:10 +01001566`),
Paul Duffinf7a64332020-05-13 16:54:55 +01001567 checkAllCopyRules(`
Paul Duffinee9ad5d2020-09-11 13:04:05 +01001568.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001569.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1570.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 +01001571`),
1572 checkMergeZips(
1573 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1574 ),
1575 )
1576}
Paul Duffina2ae7e02020-09-11 11:55:00 +01001577
1578func TestSnapshotWithJavaSdkLibrary_DoctagFiles(t *testing.T) {
Paul Duffindb462dd2021-03-21 22:01:55 +00001579 result := android.GroupFixturePreparers(
1580 prepareForSdkTestWithJavaSdkLibrary,
1581 android.FixtureAddFile("docs/known_doctags", nil),
1582 ).RunTestWithBp(t, `
Paul Duffina2ae7e02020-09-11 11:55:00 +01001583 sdk {
1584 name: "mysdk",
1585 java_sdk_libs: ["myjavalib"],
1586 }
1587
1588 java_sdk_library {
1589 name: "myjavalib",
1590 srcs: ["Test.java"],
1591 sdk_version: "current",
1592 public: {
1593 enabled: true,
1594 },
1595 doctag_files: ["docs/known_doctags"],
1596 }
1597
1598 filegroup {
1599 name: "mygroup",
1600 srcs: [":myjavalib{.doctags}"],
1601 }
1602 `)
1603
Paul Duffin36474d32021-03-12 12:19:43 +00001604 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001605 checkAndroidBpContents(`
Paul Duffina2ae7e02020-09-11 11:55:00 +01001606// This is auto-generated. DO NOT EDIT.
1607
1608java_sdk_library_import {
Paul Duffine1381882021-04-16 17:05:10 +01001609 name: "myjavalib",
1610 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001611 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001612 apex_available: ["//apex_available:platform"],
Paul Duffina2ae7e02020-09-11 11:55:00 +01001613 shared_library: true,
1614 doctag_files: ["doctags/docs/known_doctags"],
1615 public: {
1616 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffinab5ac8f2020-11-18 16:37:35 +00001617 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffina2ae7e02020-09-11 11:55:00 +01001618 current_api: "sdk_library/public/myjavalib.txt",
1619 removed_api: "sdk_library/public/myjavalib-removed.txt",
1620 sdk_version: "current",
1621 },
1622}
Paul Duffine1381882021-04-16 17:05:10 +01001623`),
Paul Duffina2ae7e02020-09-11 11:55:00 +01001624 checkAllCopyRules(`
1625.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
Colin Crosscb77f752021-03-24 12:04:44 -07001626.intermediates/myjavalib.stubs.source/android_common/metalava/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1627.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 +01001628docs/known_doctags -> doctags/docs/known_doctags
1629`),
1630 )
1631}