blob: 0bac49f7833fd252193deb1658ed4e5ee83609c6 [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 (
18 "testing"
19)
20
Paul Duffind835daa2019-11-30 17:49:09 +000021func testSdkWithJava(t *testing.T, bp string) *testSdkResult {
22 t.Helper()
23
24 fs := map[string][]byte{
25 "Test.java": nil,
26 "aidl/foo/bar/Test.aidl": nil,
Paul Duffindd46f712020-02-10 13:37:10 +000027
28 // For java_sdk_library
29 "api/current.txt": nil,
30 "api/removed.txt": nil,
31 "api/system-current.txt": nil,
32 "api/system-removed.txt": nil,
33 "api/test-current.txt": nil,
34 "api/test-removed.txt": nil,
35 "build/soong/scripts/gen-java-current-api-files.sh": nil,
Paul Duffind835daa2019-11-30 17:49:09 +000036 }
Paul Duffindd46f712020-02-10 13:37:10 +000037
38 // for java_sdk_library tests
39 bp = `
40java_system_modules_import {
41 name: "core-current-stubs-system-modules",
42}
43java_system_modules_import {
44 name: "core-platform-api-stubs-system-modules",
45}
46java_import {
47 name: "core.platform.api.stubs",
48}
49java_sdk_library_import {
50 name: "android_stubs_current",
51}
52java_sdk_library_import {
53 name: "android_system_stubs_current",
54}
55java_sdk_library_import {
56 name: "android_test_stubs_current",
57}
58java_import {
59 name: "core-lambda-stubs",
60 sdk_version: "none",
61}
62java_import {
63 name: "ext",
64 sdk_version: "none",
65}
66java_import {
67 name: "framework",
68 sdk_version: "none",
69}
70` + bp
71
Paul Duffind835daa2019-11-30 17:49:09 +000072 return testSdkWithFs(t, bp, fs)
73}
74
Paul Duffina80fdec2019-12-03 15:25:00 +000075// Contains tests for SDK members provided by the java package.
76
77func TestBasicSdkWithJavaLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000078 result := testSdkWithJava(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000079 sdk {
80 name: "mysdk",
Jiyong Park0f80c182020-01-31 02:49:53 +090081 java_header_libs: ["sdkmember"],
Paul Duffina80fdec2019-12-03 15:25:00 +000082 }
83
84 sdk_snapshot {
85 name: "mysdk@1",
Paul Duffina0dbf432019-12-05 11:25:53 +000086 java_header_libs: ["sdkmember_mysdk_1"],
Paul Duffina80fdec2019-12-03 15:25:00 +000087 }
88
89 sdk_snapshot {
90 name: "mysdk@2",
Paul Duffina0dbf432019-12-05 11:25:53 +000091 java_header_libs: ["sdkmember_mysdk_2"],
Paul Duffina80fdec2019-12-03 15:25:00 +000092 }
93
Jiyong Park0f80c182020-01-31 02:49:53 +090094 java_library {
Paul Duffina80fdec2019-12-03 15:25:00 +000095 name: "sdkmember",
Jiyong Park0f80c182020-01-31 02:49:53 +090096 srcs: ["Test.java"],
97 system_modules: "none",
98 sdk_version: "none",
Paul Duffina80fdec2019-12-03 15:25:00 +000099 host_supported: true,
100 }
101
102 java_import {
103 name: "sdkmember_mysdk_1",
104 sdk_member_name: "sdkmember",
105 host_supported: true,
106 }
107
108 java_import {
109 name: "sdkmember_mysdk_2",
110 sdk_member_name: "sdkmember",
111 host_supported: true,
112 }
113
114 java_library {
115 name: "myjavalib",
116 srcs: ["Test.java"],
117 libs: ["sdkmember"],
118 system_modules: "none",
119 sdk_version: "none",
120 compile_dex: true,
121 host_supported: true,
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000122 apex_available: [
123 "myapex",
124 "myapex2",
125 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000126 }
127
128 apex {
129 name: "myapex",
130 java_libs: ["myjavalib"],
131 uses_sdks: ["mysdk@1"],
132 key: "myapex.key",
133 certificate: ":myapex.cert",
134 }
135
136 apex {
137 name: "myapex2",
138 java_libs: ["myjavalib"],
139 uses_sdks: ["mysdk@2"],
140 key: "myapex.key",
141 certificate: ":myapex.cert",
142 }
143 `)
144
145 sdkMemberV1 := result.ctx.ModuleForTests("sdkmember_mysdk_1", "android_common_myapex").Rule("combineJar").Output
146 sdkMemberV2 := result.ctx.ModuleForTests("sdkmember_mysdk_2", "android_common_myapex2").Rule("combineJar").Output
147
148 javalibForMyApex := result.ctx.ModuleForTests("myjavalib", "android_common_myapex")
149 javalibForMyApex2 := result.ctx.ModuleForTests("myjavalib", "android_common_myapex2")
150
151 // Depending on the uses_sdks value, different libs are linked
152 ensureListContains(t, pathsToStrings(javalibForMyApex.Rule("javac").Implicits), sdkMemberV1.String())
153 ensureListContains(t, pathsToStrings(javalibForMyApex2.Rule("javac").Implicits), sdkMemberV2.String())
154}
155
Paul Duffina0dbf432019-12-05 11:25:53 +0000156func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
157 result := testSdkWithJava(t, `
158 sdk {
159 name: "mysdk",
160 java_header_libs: ["myjavalib"],
161 }
162
163 java_library {
164 name: "myjavalib",
165 srcs: ["Test.java"],
166 aidl: {
167 export_include_dirs: ["aidl"],
168 },
169 system_modules: "none",
170 sdk_version: "none",
171 compile_dex: true,
172 host_supported: true,
173 }
174 `)
175
Paul Duffin1356d8c2020-02-25 19:26:33 +0000176 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000177 checkAndroidBpContents(`
178// This is auto-generated. DO NOT EDIT.
179
180java_import {
181 name: "mysdk_myjavalib@current",
182 sdk_member_name: "myjavalib",
183 jars: ["java/myjavalib.jar"],
184}
185
186java_import {
187 name: "myjavalib",
188 prefer: false,
189 jars: ["java/myjavalib.jar"],
190}
191
192sdk_snapshot {
193 name: "mysdk@current",
194 java_header_libs: ["mysdk_myjavalib@current"],
195}
196
197`),
198 checkAllCopyRules(`
199.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
200aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
201`),
202 )
203}
204
205func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
206 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
207 SkipIfNotLinux(t)
208
209 result := testSdkWithJava(t, `
210 sdk {
211 name: "mysdk",
212 device_supported: false,
213 host_supported: true,
214 java_header_libs: ["myjavalib"],
215 }
216
217 java_library {
218 name: "myjavalib",
219 device_supported: false,
220 host_supported: true,
221 srcs: ["Test.java"],
222 aidl: {
223 export_include_dirs: ["aidl"],
224 },
225 system_modules: "none",
226 sdk_version: "none",
227 compile_dex: true,
228 }
229 `)
230
Paul Duffin1356d8c2020-02-25 19:26:33 +0000231 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000232 checkAndroidBpContents(`
233// This is auto-generated. DO NOT EDIT.
234
235java_import {
236 name: "mysdk_myjavalib@current",
237 sdk_member_name: "myjavalib",
238 device_supported: false,
239 host_supported: true,
240 jars: ["java/myjavalib.jar"],
241}
242
243java_import {
244 name: "myjavalib",
245 prefer: false,
246 device_supported: false,
247 host_supported: true,
248 jars: ["java/myjavalib.jar"],
249}
250
251sdk_snapshot {
252 name: "mysdk@current",
253 device_supported: false,
254 host_supported: true,
255 java_header_libs: ["mysdk_myjavalib@current"],
256}
257`),
258 checkAllCopyRules(`
259.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
260aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
261`),
262 )
263}
264
Paul Duffina04c1072020-03-02 10:16:35 +0000265func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
266 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
267 SkipIfNotLinux(t)
268
269 result := testSdkWithJava(t, `
270 sdk {
271 name: "mysdk",
272 host_supported: true,
273 java_header_libs: ["myjavalib"],
274 }
275
276 java_library {
277 name: "myjavalib",
278 host_supported: true,
279 srcs: ["Test.java"],
280 system_modules: "none",
281 sdk_version: "none",
282 compile_dex: true,
283 }
284 `)
285
286 result.CheckSnapshot("mysdk", "",
287 checkAndroidBpContents(`
288// This is auto-generated. DO NOT EDIT.
289
290java_import {
291 name: "mysdk_myjavalib@current",
292 sdk_member_name: "myjavalib",
293 host_supported: true,
294 target: {
295 android: {
296 jars: ["java/android/myjavalib.jar"],
297 },
298 linux_glibc: {
299 jars: ["java/linux_glibc/myjavalib.jar"],
300 },
301 },
302}
303
304java_import {
305 name: "myjavalib",
306 prefer: false,
307 host_supported: true,
308 target: {
309 android: {
310 jars: ["java/android/myjavalib.jar"],
311 },
312 linux_glibc: {
313 jars: ["java/linux_glibc/myjavalib.jar"],
314 },
315 },
316}
317
318sdk_snapshot {
319 name: "mysdk@current",
320 host_supported: true,
321 java_header_libs: ["mysdk_myjavalib@current"],
322}
323`),
324 checkAllCopyRules(`
325.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
326.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
327`),
328 )
329}
330
Paul Duffina0dbf432019-12-05 11:25:53 +0000331func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000332 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000333 module_exports {
334 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000335 java_libs: ["myjavalib"],
336 }
337
338 java_library {
339 name: "myjavalib",
340 srcs: ["Test.java"],
341 aidl: {
342 export_include_dirs: ["aidl"],
343 },
344 system_modules: "none",
345 sdk_version: "none",
346 compile_dex: true,
347 host_supported: true,
348 }
349 `)
350
Paul Duffin1356d8c2020-02-25 19:26:33 +0000351 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000352 checkAndroidBpContents(`
353// This is auto-generated. DO NOT EDIT.
354
355java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000356 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000357 sdk_member_name: "myjavalib",
358 jars: ["java/myjavalib.jar"],
359}
360
361java_import {
362 name: "myjavalib",
363 prefer: false,
364 jars: ["java/myjavalib.jar"],
365}
366
Paul Duffine6029182019-12-16 17:43:48 +0000367module_exports_snapshot {
368 name: "myexports@current",
369 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000370}
371
372`),
373 checkAllCopyRules(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000374.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000375aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
376`),
377 )
378}
379
Paul Duffina0dbf432019-12-05 11:25:53 +0000380func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000381 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
382 SkipIfNotLinux(t)
383
Paul Duffind835daa2019-11-30 17:49:09 +0000384 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000385 module_exports {
386 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000387 device_supported: false,
388 host_supported: true,
389 java_libs: ["myjavalib"],
390 }
391
392 java_library {
393 name: "myjavalib",
394 device_supported: false,
395 host_supported: true,
396 srcs: ["Test.java"],
397 aidl: {
398 export_include_dirs: ["aidl"],
399 },
400 system_modules: "none",
401 sdk_version: "none",
402 compile_dex: true,
403 }
404 `)
405
Paul Duffin1356d8c2020-02-25 19:26:33 +0000406 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000407 checkAndroidBpContents(`
408// This is auto-generated. DO NOT EDIT.
409
410java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000411 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000412 sdk_member_name: "myjavalib",
413 device_supported: false,
414 host_supported: true,
415 jars: ["java/myjavalib.jar"],
416}
417
418java_import {
419 name: "myjavalib",
420 prefer: false,
421 device_supported: false,
422 host_supported: true,
423 jars: ["java/myjavalib.jar"],
424}
425
Paul Duffine6029182019-12-16 17:43:48 +0000426module_exports_snapshot {
427 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000428 device_supported: false,
429 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000430 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000431}
432`),
433 checkAllCopyRules(`
434.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
435aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
436`),
437 )
438}
439
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000440func TestSnapshotWithJavaTest(t *testing.T) {
441 result := testSdkWithJava(t, `
442 module_exports {
443 name: "myexports",
444 java_tests: ["myjavatests"],
445 }
446
447 java_test {
448 name: "myjavatests",
449 srcs: ["Test.java"],
450 system_modules: "none",
451 sdk_version: "none",
452 compile_dex: true,
453 host_supported: true,
454 }
455 `)
456
Paul Duffin1356d8c2020-02-25 19:26:33 +0000457 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000458 checkAndroidBpContents(`
459// This is auto-generated. DO NOT EDIT.
460
461java_test_import {
462 name: "myexports_myjavatests@current",
463 sdk_member_name: "myjavatests",
464 jars: ["java/myjavatests.jar"],
465 test_config: "java/myjavatests-AndroidTest.xml",
466}
467
468java_test_import {
469 name: "myjavatests",
470 prefer: false,
471 jars: ["java/myjavatests.jar"],
472 test_config: "java/myjavatests-AndroidTest.xml",
473}
474
475module_exports_snapshot {
476 name: "myexports@current",
477 java_tests: ["myexports_myjavatests@current"],
478}
479`),
480 checkAllCopyRules(`
481.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
482.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
483`),
484 )
485}
486
487func TestHostSnapshotWithJavaTest(t *testing.T) {
488 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
489 SkipIfNotLinux(t)
490
491 result := testSdkWithJava(t, `
492 module_exports {
493 name: "myexports",
494 device_supported: false,
495 host_supported: true,
496 java_tests: ["myjavatests"],
497 }
498
499 java_test {
500 name: "myjavatests",
501 device_supported: false,
502 host_supported: true,
503 srcs: ["Test.java"],
504 system_modules: "none",
505 sdk_version: "none",
506 compile_dex: true,
507 }
508 `)
509
Paul Duffin1356d8c2020-02-25 19:26:33 +0000510 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000511 checkAndroidBpContents(`
512// This is auto-generated. DO NOT EDIT.
513
514java_test_import {
515 name: "myexports_myjavatests@current",
516 sdk_member_name: "myjavatests",
517 device_supported: false,
518 host_supported: true,
519 jars: ["java/myjavatests.jar"],
520 test_config: "java/myjavatests-AndroidTest.xml",
521}
522
523java_test_import {
524 name: "myjavatests",
525 prefer: false,
526 device_supported: false,
527 host_supported: true,
528 jars: ["java/myjavatests.jar"],
529 test_config: "java/myjavatests-AndroidTest.xml",
530}
531
532module_exports_snapshot {
533 name: "myexports@current",
534 device_supported: false,
535 host_supported: true,
536 java_tests: ["myexports_myjavatests@current"],
537}
538`),
539 checkAllCopyRules(`
540.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
541.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
542`),
543 )
544}
545
Paul Duffind835daa2019-11-30 17:49:09 +0000546func testSdkWithDroidstubs(t *testing.T, bp string) *testSdkResult {
547 t.Helper()
548
549 fs := map[string][]byte{
550 "foo/bar/Foo.java": nil,
551 "stubs-sources/foo/bar/Foo.java": nil,
552 }
553 return testSdkWithFs(t, bp, fs)
554}
555
Paul Duffina80fdec2019-12-03 15:25:00 +0000556// Note: This test does not verify that a droidstubs can be referenced, either
557// directly or indirectly from an APEX as droidstubs can never be a part of an
558// apex.
559func TestBasicSdkWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000560 testSdkWithDroidstubs(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000561 sdk {
562 name: "mysdk",
563 stubs_sources: ["mystub"],
564 }
565 sdk_snapshot {
566 name: "mysdk@10",
567 stubs_sources: ["mystub_mysdk@10"],
568 }
569 prebuilt_stubs_sources {
570 name: "mystub_mysdk@10",
571 sdk_member_name: "mystub",
572 srcs: ["stubs-sources/foo/bar/Foo.java"],
573 }
574 droidstubs {
575 name: "mystub",
576 srcs: ["foo/bar/Foo.java"],
577 sdk_version: "none",
578 system_modules: "none",
579 }
580 java_library {
581 name: "myjavalib",
582 srcs: [":mystub"],
583 sdk_version: "none",
584 system_modules: "none",
585 }
586 `)
587}
588
589func TestSnapshotWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000590 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000591 module_exports {
592 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000593 stubs_sources: ["myjavaapistubs"],
594 }
595
596 droidstubs {
597 name: "myjavaapistubs",
598 srcs: ["foo/bar/Foo.java"],
599 system_modules: "none",
600 sdk_version: "none",
601 }
602 `)
603
Paul Duffin1356d8c2020-02-25 19:26:33 +0000604 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000605 checkAndroidBpContents(`
606// This is auto-generated. DO NOT EDIT.
607
608prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000609 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000610 sdk_member_name: "myjavaapistubs",
611 srcs: ["java/myjavaapistubs_stubs_sources"],
612}
613
614prebuilt_stubs_sources {
615 name: "myjavaapistubs",
616 prefer: false,
617 srcs: ["java/myjavaapistubs_stubs_sources"],
618}
619
Paul Duffine6029182019-12-16 17:43:48 +0000620module_exports_snapshot {
621 name: "myexports@current",
622 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000623}
624
625`),
626 checkAllCopyRules(""),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100627 checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000628 )
629}
630
631func TestHostSnapshotWithDroidstubs(t *testing.T) {
632 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
633 SkipIfNotLinux(t)
634
Paul Duffind835daa2019-11-30 17:49:09 +0000635 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000636 module_exports {
637 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000638 device_supported: false,
639 host_supported: true,
640 stubs_sources: ["myjavaapistubs"],
641 }
642
643 droidstubs {
644 name: "myjavaapistubs",
645 device_supported: false,
646 host_supported: true,
647 srcs: ["foo/bar/Foo.java"],
648 system_modules: "none",
649 sdk_version: "none",
650 }
651 `)
652
Paul Duffin1356d8c2020-02-25 19:26:33 +0000653 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000654 checkAndroidBpContents(`
655// This is auto-generated. DO NOT EDIT.
656
657prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000658 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000659 sdk_member_name: "myjavaapistubs",
660 device_supported: false,
661 host_supported: true,
662 srcs: ["java/myjavaapistubs_stubs_sources"],
663}
664
665prebuilt_stubs_sources {
666 name: "myjavaapistubs",
667 prefer: false,
668 device_supported: false,
669 host_supported: true,
670 srcs: ["java/myjavaapistubs_stubs_sources"],
671}
672
Paul Duffine6029182019-12-16 17:43:48 +0000673module_exports_snapshot {
674 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000675 device_supported: false,
676 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000677 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000678}
679`),
680 checkAllCopyRules(""),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100681 checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000682 )
683}
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000684
685func TestSnapshotWithJavaSystemModules(t *testing.T) {
686 result := testSdkWithJava(t, `
687 sdk {
688 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000689 java_header_libs: ["exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000690 java_system_modules: ["my-system-modules"],
691 }
692
693 java_system_modules {
694 name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000695 libs: ["system-module", "exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000696 }
697
698 java_library {
699 name: "system-module",
700 srcs: ["Test.java"],
701 sdk_version: "none",
702 system_modules: "none",
703 }
Paul Duffin72910952020-01-20 18:16:30 +0000704
705 java_library {
706 name: "exported-system-module",
707 srcs: ["Test.java"],
708 sdk_version: "none",
709 system_modules: "none",
710 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000711 `)
712
Paul Duffin1356d8c2020-02-25 19:26:33 +0000713 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000714 checkAndroidBpContents(`
715// This is auto-generated. DO NOT EDIT.
716
717java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000718 name: "mysdk_exported-system-module@current",
719 sdk_member_name: "exported-system-module",
720 jars: ["java/exported-system-module.jar"],
721}
722
723java_import {
724 name: "exported-system-module",
725 prefer: false,
726 jars: ["java/exported-system-module.jar"],
727}
728
729java_import {
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000730 name: "mysdk_system-module@current",
731 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000732 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000733 jars: ["java/system-module.jar"],
734}
735
736java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000737 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000738 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000739 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000740 jars: ["java/system-module.jar"],
741}
742
743java_system_modules_import {
744 name: "mysdk_my-system-modules@current",
745 sdk_member_name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000746 libs: [
747 "mysdk_system-module@current",
748 "mysdk_exported-system-module@current",
749 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000750}
751
752java_system_modules_import {
753 name: "my-system-modules",
754 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000755 libs: [
756 "mysdk_system-module",
757 "exported-system-module",
758 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000759}
760
761sdk_snapshot {
762 name: "mysdk@current",
Paul Duffin72910952020-01-20 18:16:30 +0000763 java_header_libs: ["mysdk_exported-system-module@current"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000764 java_system_modules: ["mysdk_my-system-modules@current"],
765}
766`),
Paul Duffin72910952020-01-20 18:16:30 +0000767 checkAllCopyRules(`
768.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
769.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
770`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000771 )
772}
773
774func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
775 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
776 SkipIfNotLinux(t)
777
778 result := testSdkWithJava(t, `
779 sdk {
780 name: "mysdk",
781 device_supported: false,
782 host_supported: true,
783 java_system_modules: ["my-system-modules"],
784 }
785
786 java_system_modules {
787 name: "my-system-modules",
788 device_supported: false,
789 host_supported: true,
790 libs: ["system-module"],
791 }
792
793 java_library {
794 name: "system-module",
795 device_supported: false,
796 host_supported: true,
797 srcs: ["Test.java"],
798 sdk_version: "none",
799 system_modules: "none",
800 }
801 `)
802
Paul Duffin1356d8c2020-02-25 19:26:33 +0000803 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000804 checkAndroidBpContents(`
805// This is auto-generated. DO NOT EDIT.
806
807java_import {
808 name: "mysdk_system-module@current",
809 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000810 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000811 device_supported: false,
812 host_supported: true,
813 jars: ["java/system-module.jar"],
814}
815
816java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000817 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000818 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000819 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000820 device_supported: false,
821 host_supported: true,
822 jars: ["java/system-module.jar"],
823}
824
825java_system_modules_import {
826 name: "mysdk_my-system-modules@current",
827 sdk_member_name: "my-system-modules",
828 device_supported: false,
829 host_supported: true,
830 libs: ["mysdk_system-module@current"],
831}
832
833java_system_modules_import {
834 name: "my-system-modules",
835 prefer: false,
836 device_supported: false,
837 host_supported: true,
Paul Duffin72910952020-01-20 18:16:30 +0000838 libs: ["mysdk_system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000839}
840
841sdk_snapshot {
842 name: "mysdk@current",
843 device_supported: false,
844 host_supported: true,
845 java_system_modules: ["mysdk_my-system-modules@current"],
846}
847`),
848 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
849 )
850}
Paul Duffin865171e2020-03-02 18:38:15 +0000851
852func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
853 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
854 SkipIfNotLinux(t)
855
856 result := testSdkWithJava(t, `
857 module_exports {
858 name: "myexports",
859 host_supported: true,
860 java_libs: ["myjavalib"],
861 target: {
862 android: {
863 java_header_libs: ["androidjavalib"],
864 },
865 host: {
866 java_header_libs: ["hostjavalib"],
867 },
868 },
869 }
870
871 java_library {
872 name: "myjavalib",
873 host_supported: true,
874 srcs: ["Test.java"],
875 system_modules: "none",
876 sdk_version: "none",
877 }
878
879 java_library {
880 name: "androidjavalib",
881 srcs: ["Test.java"],
882 system_modules: "none",
883 sdk_version: "none",
884 }
885
886 java_library_host {
887 name: "hostjavalib",
888 srcs: ["Test.java"],
889 }
890 `)
891
892 result.CheckSnapshot("myexports", "",
893 checkAndroidBpContents(`
894// This is auto-generated. DO NOT EDIT.
895
896java_import {
897 name: "myexports_hostjavalib@current",
898 sdk_member_name: "hostjavalib",
899 device_supported: false,
900 host_supported: true,
901 jars: ["java/hostjavalib.jar"],
902}
903
904java_import {
905 name: "hostjavalib",
906 prefer: false,
907 device_supported: false,
908 host_supported: true,
909 jars: ["java/hostjavalib.jar"],
910}
911
912java_import {
913 name: "myexports_androidjavalib@current",
914 sdk_member_name: "androidjavalib",
915 jars: ["java/androidjavalib.jar"],
916}
917
918java_import {
919 name: "androidjavalib",
920 prefer: false,
921 jars: ["java/androidjavalib.jar"],
922}
923
924java_import {
925 name: "myexports_myjavalib@current",
926 sdk_member_name: "myjavalib",
927 host_supported: true,
928 target: {
929 android: {
930 jars: ["java/android/myjavalib.jar"],
931 },
932 linux_glibc: {
933 jars: ["java/linux_glibc/myjavalib.jar"],
934 },
935 },
936}
937
938java_import {
939 name: "myjavalib",
940 prefer: false,
941 host_supported: true,
942 target: {
943 android: {
944 jars: ["java/android/myjavalib.jar"],
945 },
946 linux_glibc: {
947 jars: ["java/linux_glibc/myjavalib.jar"],
948 },
949 },
950}
951
952module_exports_snapshot {
953 name: "myexports@current",
954 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +0000955 java_libs: ["myexports_myjavalib@current"],
Paul Duffin865171e2020-03-02 18:38:15 +0000956 target: {
957 android: {
958 java_header_libs: ["myexports_androidjavalib@current"],
959 },
960 linux_glibc: {
961 java_header_libs: ["myexports_hostjavalib@current"],
962 },
963 },
Paul Duffin865171e2020-03-02 18:38:15 +0000964}
965`),
966 checkAllCopyRules(`
967.intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
968.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
969.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
970.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
971`),
972 )
973}
Paul Duffindd46f712020-02-10 13:37:10 +0000974
975func TestSnapshotWithJavaSdkLibrary(t *testing.T) {
976 result := testSdkWithJava(t, `
977 sdk {
978 name: "mysdk",
979 java_sdk_libs: ["myjavalib"],
980 }
981
982 java_sdk_library {
983 name: "myjavalib",
984 apex_available: ["//apex_available:anyapex"],
985 srcs: ["Test.java"],
986 sdk_version: "current",
987 }
988 `)
989
990 result.CheckSnapshot("mysdk", "",
991 checkAndroidBpContents(`
992// This is auto-generated. DO NOT EDIT.
993
994java_sdk_library_import {
995 name: "mysdk_myjavalib@current",
996 sdk_member_name: "myjavalib",
997 apex_available: ["//apex_available:anyapex"],
998 public: {
999 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001000 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffindd46f712020-02-10 13:37:10 +00001001 sdk_version: "current",
1002 },
1003 system: {
1004 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001005 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffindd46f712020-02-10 13:37:10 +00001006 sdk_version: "system_current",
1007 },
1008 test: {
1009 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001010 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffindd46f712020-02-10 13:37:10 +00001011 sdk_version: "test_current",
1012 },
1013}
1014
1015java_sdk_library_import {
1016 name: "myjavalib",
1017 prefer: false,
1018 apex_available: ["//apex_available:anyapex"],
1019 public: {
1020 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001021 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffindd46f712020-02-10 13:37:10 +00001022 sdk_version: "current",
1023 },
1024 system: {
1025 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001026 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffindd46f712020-02-10 13:37:10 +00001027 sdk_version: "system_current",
1028 },
1029 test: {
1030 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001031 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffindd46f712020-02-10 13:37:10 +00001032 sdk_version: "test_current",
1033 },
1034}
1035
1036sdk_snapshot {
1037 name: "mysdk@current",
1038 java_sdk_libs: ["mysdk_myjavalib@current"],
1039}
1040`),
1041 checkAllCopyRules(`
1042.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1043.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
1044.intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar
1045`),
Paul Duffin3d1248c2020-04-09 00:10:17 +01001046 checkMergeZips(
1047 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1048 ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1049 ".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip"),
Paul Duffindd46f712020-02-10 13:37:10 +00001050 )
1051}