• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // 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 
15 package sdk
16 
17 import (
18 	"testing"
19 )
20 
21 func 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,
27 
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 		"api/module-lib-current.txt":                        nil,
36 		"api/module-lib-removed.txt":                        nil,
37 		"api/system-server-current.txt":                     nil,
38 		"api/system-server-removed.txt":                     nil,
39 		"build/soong/scripts/gen-java-current-api-files.sh": nil,
40 	}
41 
42 	// for java_sdk_library tests
43 	bp = `
44 java_system_modules_import {
45 	name: "core-current-stubs-system-modules",
46 }
47 java_system_modules_import {
48 	name: "core-platform-api-stubs-system-modules",
49 }
50 java_import {
51 	name: "core.platform.api.stubs",
52 }
53 java_import {
54 	name: "android_stubs_current",
55 }
56 java_import {
57 	name: "android_system_stubs_current",
58 }
59 java_import {
60 	name: "android_test_stubs_current",
61 }
62 java_import {
63 	name: "android_module_lib_stubs_current",
64 }
65 java_import {
66 	name: "android_system_server_stubs_current",
67 }
68 java_import {
69 	name: "core-lambda-stubs",
70 	sdk_version: "none",
71 }
72 java_import {
73 	name: "ext",
74 	sdk_version: "none",
75 }
76 java_import {
77 	name: "framework",
78 	sdk_version: "none",
79 }
80 ` + bp
81 
82 	return testSdkWithFs(t, bp, fs)
83 }
84 
85 // Contains tests for SDK members provided by the java package.
86 
87 func TestBasicSdkWithJavaLibrary(t *testing.T) {
88 	result := testSdkWithJava(t, `
89 		sdk {
90 			name: "mysdk",
91 			java_header_libs: ["sdkmember"],
92 		}
93 
94 		sdk_snapshot {
95 			name: "mysdk@1",
96 			java_header_libs: ["sdkmember_mysdk_1"],
97 		}
98 
99 		sdk_snapshot {
100 			name: "mysdk@2",
101 			java_header_libs: ["sdkmember_mysdk_2"],
102 		}
103 
104 		java_library {
105 			name: "sdkmember",
106 			srcs: ["Test.java"],
107 			system_modules: "none",
108 			sdk_version: "none",
109 			host_supported: true,
110 		}
111 
112 		java_import {
113 			name: "sdkmember_mysdk_1",
114 			sdk_member_name: "sdkmember",
115 			host_supported: true,
116 		}
117 
118 		java_import {
119 			name: "sdkmember_mysdk_2",
120 			sdk_member_name: "sdkmember",
121 			host_supported: true,
122 		}
123 
124 		java_library {
125 			name: "myjavalib",
126 			srcs: ["Test.java"],
127 			libs: ["sdkmember"],
128 			system_modules: "none",
129 			sdk_version: "none",
130 			compile_dex: true,
131 			host_supported: true,
132 			apex_available: [
133 				"myapex",
134 				"myapex2",
135 			],
136 		}
137 
138 		apex {
139 			name: "myapex",
140 			java_libs: ["myjavalib"],
141 			uses_sdks: ["mysdk@1"],
142 			key: "myapex.key",
143 			certificate: ":myapex.cert",
144 		}
145 
146 		apex {
147 			name: "myapex2",
148 			java_libs: ["myjavalib"],
149 			uses_sdks: ["mysdk@2"],
150 			key: "myapex.key",
151 			certificate: ":myapex.cert",
152 		}
153 	`)
154 
155 	sdkMemberV1 := result.ctx.ModuleForTests("sdkmember_mysdk_1", "android_common_myapex").Rule("combineJar").Output
156 	sdkMemberV2 := result.ctx.ModuleForTests("sdkmember_mysdk_2", "android_common_myapex2").Rule("combineJar").Output
157 
158 	javalibForMyApex := result.ctx.ModuleForTests("myjavalib", "android_common_myapex")
159 	javalibForMyApex2 := result.ctx.ModuleForTests("myjavalib", "android_common_myapex2")
160 
161 	// Depending on the uses_sdks value, different libs are linked
162 	ensureListContains(t, pathsToStrings(javalibForMyApex.Rule("javac").Implicits), sdkMemberV1.String())
163 	ensureListContains(t, pathsToStrings(javalibForMyApex2.Rule("javac").Implicits), sdkMemberV2.String())
164 }
165 
166 func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
167 	result := testSdkWithJava(t, `
168 		sdk {
169 			name: "mysdk",
170 			java_header_libs: ["myjavalib"],
171 		}
172 
173 		java_library {
174 			name: "myjavalib",
175 			srcs: ["Test.java"],
176 			aidl: {
177 				export_include_dirs: ["aidl"],
178 			},
179 			system_modules: "none",
180 			sdk_version: "none",
181 			compile_dex: true,
182 			host_supported: true,
183 		}
184 	`)
185 
186 	result.CheckSnapshot("mysdk", "",
187 		checkAndroidBpContents(`
188 // This is auto-generated. DO NOT EDIT.
189 
190 java_import {
191     name: "mysdk_myjavalib@current",
192     sdk_member_name: "myjavalib",
193     jars: ["java/myjavalib.jar"],
194 }
195 
196 java_import {
197     name: "myjavalib",
198     prefer: false,
199     jars: ["java/myjavalib.jar"],
200 }
201 
202 sdk_snapshot {
203     name: "mysdk@current",
204     java_header_libs: ["mysdk_myjavalib@current"],
205 }
206 
207 `),
208 		checkAllCopyRules(`
209 .intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
210 aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
211 `),
212 	)
213 }
214 
215 func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
216 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
217 	SkipIfNotLinux(t)
218 
219 	result := testSdkWithJava(t, `
220 		sdk {
221 			name: "mysdk",
222 			device_supported: false,
223 			host_supported: true,
224 			java_header_libs: ["myjavalib"],
225 		}
226 
227 		java_library {
228 			name: "myjavalib",
229 			device_supported: false,
230 			host_supported: true,
231 			srcs: ["Test.java"],
232 			aidl: {
233 				export_include_dirs: ["aidl"],
234 			},
235 			system_modules: "none",
236 			sdk_version: "none",
237 			compile_dex: true,
238 		}
239 	`)
240 
241 	result.CheckSnapshot("mysdk", "",
242 		checkAndroidBpContents(`
243 // This is auto-generated. DO NOT EDIT.
244 
245 java_import {
246     name: "mysdk_myjavalib@current",
247     sdk_member_name: "myjavalib",
248     device_supported: false,
249     host_supported: true,
250     jars: ["java/myjavalib.jar"],
251 }
252 
253 java_import {
254     name: "myjavalib",
255     prefer: false,
256     device_supported: false,
257     host_supported: true,
258     jars: ["java/myjavalib.jar"],
259 }
260 
261 sdk_snapshot {
262     name: "mysdk@current",
263     device_supported: false,
264     host_supported: true,
265     java_header_libs: ["mysdk_myjavalib@current"],
266 }
267 `),
268 		checkAllCopyRules(`
269 .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
270 aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
271 `),
272 	)
273 }
274 
275 func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
276 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
277 	SkipIfNotLinux(t)
278 
279 	result := testSdkWithJava(t, `
280 		sdk {
281 			name: "mysdk",
282 			host_supported: true,
283 			java_header_libs: ["myjavalib"],
284 		}
285 
286 		java_library {
287 			name: "myjavalib",
288 			host_supported: true,
289 			srcs: ["Test.java"],
290 			system_modules: "none",
291 			sdk_version: "none",
292 			compile_dex: true,
293 		}
294 	`)
295 
296 	result.CheckSnapshot("mysdk", "",
297 		checkAndroidBpContents(`
298 // This is auto-generated. DO NOT EDIT.
299 
300 java_import {
301     name: "mysdk_myjavalib@current",
302     sdk_member_name: "myjavalib",
303     host_supported: true,
304     target: {
305         android: {
306             jars: ["java/android/myjavalib.jar"],
307         },
308         linux_glibc: {
309             jars: ["java/linux_glibc/myjavalib.jar"],
310         },
311     },
312 }
313 
314 java_import {
315     name: "myjavalib",
316     prefer: false,
317     host_supported: true,
318     target: {
319         android: {
320             jars: ["java/android/myjavalib.jar"],
321         },
322         linux_glibc: {
323             jars: ["java/linux_glibc/myjavalib.jar"],
324         },
325     },
326 }
327 
328 sdk_snapshot {
329     name: "mysdk@current",
330     host_supported: true,
331     java_header_libs: ["mysdk_myjavalib@current"],
332 }
333 `),
334 		checkAllCopyRules(`
335 .intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
336 .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
337 `),
338 	)
339 }
340 
341 func TestSnapshotWithJavaImplLibrary(t *testing.T) {
342 	result := testSdkWithJava(t, `
343 		module_exports {
344 			name: "myexports",
345 			java_libs: ["myjavalib"],
346 		}
347 
348 		java_library {
349 			name: "myjavalib",
350 			srcs: ["Test.java"],
351 			aidl: {
352 				export_include_dirs: ["aidl"],
353 			},
354 			system_modules: "none",
355 			sdk_version: "none",
356 			compile_dex: true,
357 			host_supported: true,
358 		}
359 	`)
360 
361 	result.CheckSnapshot("myexports", "",
362 		checkAndroidBpContents(`
363 // This is auto-generated. DO NOT EDIT.
364 
365 java_import {
366     name: "myexports_myjavalib@current",
367     sdk_member_name: "myjavalib",
368     jars: ["java/myjavalib.jar"],
369 }
370 
371 java_import {
372     name: "myjavalib",
373     prefer: false,
374     jars: ["java/myjavalib.jar"],
375 }
376 
377 module_exports_snapshot {
378     name: "myexports@current",
379     java_libs: ["myexports_myjavalib@current"],
380 }
381 
382 `),
383 		checkAllCopyRules(`
384 .intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/myjavalib.jar
385 aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
386 `),
387 	)
388 }
389 
390 func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
391 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
392 	SkipIfNotLinux(t)
393 
394 	result := testSdkWithJava(t, `
395 		module_exports {
396 			name: "myexports",
397 			device_supported: false,
398 			host_supported: true,
399 			java_libs: ["myjavalib"],
400 		}
401 
402 		java_library {
403 			name: "myjavalib",
404 			device_supported: false,
405 			host_supported: true,
406 			srcs: ["Test.java"],
407 			aidl: {
408 				export_include_dirs: ["aidl"],
409 			},
410 			system_modules: "none",
411 			sdk_version: "none",
412 			compile_dex: true,
413 		}
414 	`)
415 
416 	result.CheckSnapshot("myexports", "",
417 		checkAndroidBpContents(`
418 // This is auto-generated. DO NOT EDIT.
419 
420 java_import {
421     name: "myexports_myjavalib@current",
422     sdk_member_name: "myjavalib",
423     device_supported: false,
424     host_supported: true,
425     jars: ["java/myjavalib.jar"],
426 }
427 
428 java_import {
429     name: "myjavalib",
430     prefer: false,
431     device_supported: false,
432     host_supported: true,
433     jars: ["java/myjavalib.jar"],
434 }
435 
436 module_exports_snapshot {
437     name: "myexports@current",
438     device_supported: false,
439     host_supported: true,
440     java_libs: ["myexports_myjavalib@current"],
441 }
442 `),
443 		checkAllCopyRules(`
444 .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
445 aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
446 `),
447 	)
448 }
449 
450 func TestSnapshotWithJavaTest(t *testing.T) {
451 	result := testSdkWithJava(t, `
452 		module_exports {
453 			name: "myexports",
454 			java_tests: ["myjavatests"],
455 		}
456 
457 		java_test {
458 			name: "myjavatests",
459 			srcs: ["Test.java"],
460 			system_modules: "none",
461 			sdk_version: "none",
462 			compile_dex: true,
463 			host_supported: true,
464 		}
465 	`)
466 
467 	result.CheckSnapshot("myexports", "",
468 		checkAndroidBpContents(`
469 // This is auto-generated. DO NOT EDIT.
470 
471 java_test_import {
472     name: "myexports_myjavatests@current",
473     sdk_member_name: "myjavatests",
474     jars: ["java/myjavatests.jar"],
475     test_config: "java/myjavatests-AndroidTest.xml",
476 }
477 
478 java_test_import {
479     name: "myjavatests",
480     prefer: false,
481     jars: ["java/myjavatests.jar"],
482     test_config: "java/myjavatests-AndroidTest.xml",
483 }
484 
485 module_exports_snapshot {
486     name: "myexports@current",
487     java_tests: ["myexports_myjavatests@current"],
488 }
489 `),
490 		checkAllCopyRules(`
491 .intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
492 .intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
493 `),
494 	)
495 }
496 
497 func TestHostSnapshotWithJavaTest(t *testing.T) {
498 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
499 	SkipIfNotLinux(t)
500 
501 	result := testSdkWithJava(t, `
502 		module_exports {
503 			name: "myexports",
504 			device_supported: false,
505 			host_supported: true,
506 			java_tests: ["myjavatests"],
507 		}
508 
509 		java_test {
510 			name: "myjavatests",
511 			device_supported: false,
512 			host_supported: true,
513 			srcs: ["Test.java"],
514 			system_modules: "none",
515 			sdk_version: "none",
516 			compile_dex: true,
517 		}
518 	`)
519 
520 	result.CheckSnapshot("myexports", "",
521 		checkAndroidBpContents(`
522 // This is auto-generated. DO NOT EDIT.
523 
524 java_test_import {
525     name: "myexports_myjavatests@current",
526     sdk_member_name: "myjavatests",
527     device_supported: false,
528     host_supported: true,
529     jars: ["java/myjavatests.jar"],
530     test_config: "java/myjavatests-AndroidTest.xml",
531 }
532 
533 java_test_import {
534     name: "myjavatests",
535     prefer: false,
536     device_supported: false,
537     host_supported: true,
538     jars: ["java/myjavatests.jar"],
539     test_config: "java/myjavatests-AndroidTest.xml",
540 }
541 
542 module_exports_snapshot {
543     name: "myexports@current",
544     device_supported: false,
545     host_supported: true,
546     java_tests: ["myexports_myjavatests@current"],
547 }
548 `),
549 		checkAllCopyRules(`
550 .intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
551 .intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
552 `),
553 	)
554 }
555 
556 func testSdkWithDroidstubs(t *testing.T, bp string) *testSdkResult {
557 	t.Helper()
558 
559 	fs := map[string][]byte{
560 		"foo/bar/Foo.java":               nil,
561 		"stubs-sources/foo/bar/Foo.java": nil,
562 	}
563 	return testSdkWithFs(t, bp, fs)
564 }
565 
566 // Note: This test does not verify that a droidstubs can be referenced, either
567 // directly or indirectly from an APEX as droidstubs can never be a part of an
568 // apex.
569 func TestBasicSdkWithDroidstubs(t *testing.T) {
570 	testSdkWithDroidstubs(t, `
571 		sdk {
572 				name: "mysdk",
573 				stubs_sources: ["mystub"],
574 		}
575 		sdk_snapshot {
576 				name: "mysdk@10",
577 				stubs_sources: ["mystub_mysdk@10"],
578 		}
579 		prebuilt_stubs_sources {
580 				name: "mystub_mysdk@10",
581 				sdk_member_name: "mystub",
582 				srcs: ["stubs-sources/foo/bar/Foo.java"],
583 		}
584 		droidstubs {
585 				name: "mystub",
586 				srcs: ["foo/bar/Foo.java"],
587 				sdk_version: "none",
588 				system_modules: "none",
589 		}
590 		java_library {
591 				name: "myjavalib",
592 				srcs: [":mystub"],
593 				sdk_version: "none",
594 				system_modules: "none",
595 		}
596 	`)
597 }
598 
599 func TestSnapshotWithDroidstubs(t *testing.T) {
600 	result := testSdkWithDroidstubs(t, `
601 		module_exports {
602 			name: "myexports",
603 			stubs_sources: ["myjavaapistubs"],
604 		}
605 
606 		droidstubs {
607 			name: "myjavaapistubs",
608 			srcs: ["foo/bar/Foo.java"],
609 			system_modules: "none",
610 			sdk_version: "none",
611 		}
612 	`)
613 
614 	result.CheckSnapshot("myexports", "",
615 		checkAndroidBpContents(`
616 // This is auto-generated. DO NOT EDIT.
617 
618 prebuilt_stubs_sources {
619     name: "myexports_myjavaapistubs@current",
620     sdk_member_name: "myjavaapistubs",
621     srcs: ["java/myjavaapistubs_stubs_sources"],
622 }
623 
624 prebuilt_stubs_sources {
625     name: "myjavaapistubs",
626     prefer: false,
627     srcs: ["java/myjavaapistubs_stubs_sources"],
628 }
629 
630 module_exports_snapshot {
631     name: "myexports@current",
632     stubs_sources: ["myexports_myjavaapistubs@current"],
633 }
634 
635 `),
636 		checkAllCopyRules(""),
637 		checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
638 	)
639 }
640 
641 func TestHostSnapshotWithDroidstubs(t *testing.T) {
642 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
643 	SkipIfNotLinux(t)
644 
645 	result := testSdkWithDroidstubs(t, `
646 		module_exports {
647 			name: "myexports",
648 			device_supported: false,
649 			host_supported: true,
650 			stubs_sources: ["myjavaapistubs"],
651 		}
652 
653 		droidstubs {
654 			name: "myjavaapistubs",
655 			device_supported: false,
656 			host_supported: true,
657 			srcs: ["foo/bar/Foo.java"],
658 			system_modules: "none",
659 			sdk_version: "none",
660 		}
661 	`)
662 
663 	result.CheckSnapshot("myexports", "",
664 		checkAndroidBpContents(`
665 // This is auto-generated. DO NOT EDIT.
666 
667 prebuilt_stubs_sources {
668     name: "myexports_myjavaapistubs@current",
669     sdk_member_name: "myjavaapistubs",
670     device_supported: false,
671     host_supported: true,
672     srcs: ["java/myjavaapistubs_stubs_sources"],
673 }
674 
675 prebuilt_stubs_sources {
676     name: "myjavaapistubs",
677     prefer: false,
678     device_supported: false,
679     host_supported: true,
680     srcs: ["java/myjavaapistubs_stubs_sources"],
681 }
682 
683 module_exports_snapshot {
684     name: "myexports@current",
685     device_supported: false,
686     host_supported: true,
687     stubs_sources: ["myexports_myjavaapistubs@current"],
688 }
689 `),
690 		checkAllCopyRules(""),
691 		checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
692 	)
693 }
694 
695 func TestSnapshotWithJavaSystemModules(t *testing.T) {
696 	result := testSdkWithJava(t, `
697 		sdk {
698 			name: "mysdk",
699 			java_header_libs: ["exported-system-module"],
700 			java_system_modules: ["my-system-modules"],
701 		}
702 
703 		java_system_modules {
704 			name: "my-system-modules",
705 			libs: ["system-module", "exported-system-module"],
706 		}
707 
708 		java_library {
709 			name: "system-module",
710 			srcs: ["Test.java"],
711 			sdk_version: "none",
712 			system_modules: "none",
713 		}
714 
715 		java_library {
716 			name: "exported-system-module",
717 			srcs: ["Test.java"],
718 			sdk_version: "none",
719 			system_modules: "none",
720 		}
721 	`)
722 
723 	result.CheckSnapshot("mysdk", "",
724 		checkAndroidBpContents(`
725 // This is auto-generated. DO NOT EDIT.
726 
727 java_import {
728     name: "mysdk_exported-system-module@current",
729     sdk_member_name: "exported-system-module",
730     jars: ["java/exported-system-module.jar"],
731 }
732 
733 java_import {
734     name: "exported-system-module",
735     prefer: false,
736     jars: ["java/exported-system-module.jar"],
737 }
738 
739 java_import {
740     name: "mysdk_system-module@current",
741     sdk_member_name: "system-module",
742     visibility: ["//visibility:private"],
743     jars: ["java/system-module.jar"],
744 }
745 
746 java_import {
747     name: "mysdk_system-module",
748     prefer: false,
749     visibility: ["//visibility:private"],
750     jars: ["java/system-module.jar"],
751 }
752 
753 java_system_modules_import {
754     name: "mysdk_my-system-modules@current",
755     sdk_member_name: "my-system-modules",
756     libs: [
757         "mysdk_system-module@current",
758         "mysdk_exported-system-module@current",
759     ],
760 }
761 
762 java_system_modules_import {
763     name: "my-system-modules",
764     prefer: false,
765     libs: [
766         "mysdk_system-module",
767         "exported-system-module",
768     ],
769 }
770 
771 sdk_snapshot {
772     name: "mysdk@current",
773     java_header_libs: ["mysdk_exported-system-module@current"],
774     java_system_modules: ["mysdk_my-system-modules@current"],
775 }
776 `),
777 		checkAllCopyRules(`
778 .intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
779 .intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
780 `),
781 	)
782 }
783 
784 func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
785 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
786 	SkipIfNotLinux(t)
787 
788 	result := testSdkWithJava(t, `
789 		sdk {
790 			name: "mysdk",
791 			device_supported: false,
792 			host_supported: true,
793 			java_system_modules: ["my-system-modules"],
794 		}
795 
796 		java_system_modules {
797 			name: "my-system-modules",
798 			device_supported: false,
799 			host_supported: true,
800 			libs: ["system-module"],
801 		}
802 
803 		java_library {
804 			name: "system-module",
805 			device_supported: false,
806 			host_supported: true,
807 			srcs: ["Test.java"],
808 			sdk_version: "none",
809 			system_modules: "none",
810 		}
811 	`)
812 
813 	result.CheckSnapshot("mysdk", "",
814 		checkAndroidBpContents(`
815 // This is auto-generated. DO NOT EDIT.
816 
817 java_import {
818     name: "mysdk_system-module@current",
819     sdk_member_name: "system-module",
820     visibility: ["//visibility:private"],
821     device_supported: false,
822     host_supported: true,
823     jars: ["java/system-module.jar"],
824 }
825 
826 java_import {
827     name: "mysdk_system-module",
828     prefer: false,
829     visibility: ["//visibility:private"],
830     device_supported: false,
831     host_supported: true,
832     jars: ["java/system-module.jar"],
833 }
834 
835 java_system_modules_import {
836     name: "mysdk_my-system-modules@current",
837     sdk_member_name: "my-system-modules",
838     device_supported: false,
839     host_supported: true,
840     libs: ["mysdk_system-module@current"],
841 }
842 
843 java_system_modules_import {
844     name: "my-system-modules",
845     prefer: false,
846     device_supported: false,
847     host_supported: true,
848     libs: ["mysdk_system-module"],
849 }
850 
851 sdk_snapshot {
852     name: "mysdk@current",
853     device_supported: false,
854     host_supported: true,
855     java_system_modules: ["mysdk_my-system-modules@current"],
856 }
857 `),
858 		checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
859 	)
860 }
861 
862 func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
863 	// b/145598135 - Generating host snapshots for anything other than linux is not supported.
864 	SkipIfNotLinux(t)
865 
866 	result := testSdkWithJava(t, `
867 		module_exports {
868 			name: "myexports",
869 			host_supported: true,
870 			java_libs: ["myjavalib"],
871 			target: {
872 				android: {
873 					java_header_libs: ["androidjavalib"],
874 				},
875 				host: {
876 					java_header_libs: ["hostjavalib"],
877 				},
878 			},
879 		}
880 
881 		java_library {
882 			name: "myjavalib",
883 			host_supported: true,
884 			srcs: ["Test.java"],
885 			system_modules: "none",
886 			sdk_version: "none",
887 		}
888 
889 		java_library {
890 			name: "androidjavalib",
891 			srcs: ["Test.java"],
892 			system_modules: "none",
893 			sdk_version: "none",
894 		}
895 
896 		java_library_host {
897 			name: "hostjavalib",
898 			srcs: ["Test.java"],
899 		}
900 	`)
901 
902 	result.CheckSnapshot("myexports", "",
903 		checkAndroidBpContents(`
904 // This is auto-generated. DO NOT EDIT.
905 
906 java_import {
907     name: "myexports_hostjavalib@current",
908     sdk_member_name: "hostjavalib",
909     device_supported: false,
910     host_supported: true,
911     jars: ["java/hostjavalib.jar"],
912 }
913 
914 java_import {
915     name: "hostjavalib",
916     prefer: false,
917     device_supported: false,
918     host_supported: true,
919     jars: ["java/hostjavalib.jar"],
920 }
921 
922 java_import {
923     name: "myexports_androidjavalib@current",
924     sdk_member_name: "androidjavalib",
925     jars: ["java/androidjavalib.jar"],
926 }
927 
928 java_import {
929     name: "androidjavalib",
930     prefer: false,
931     jars: ["java/androidjavalib.jar"],
932 }
933 
934 java_import {
935     name: "myexports_myjavalib@current",
936     sdk_member_name: "myjavalib",
937     host_supported: true,
938     target: {
939         android: {
940             jars: ["java/android/myjavalib.jar"],
941         },
942         linux_glibc: {
943             jars: ["java/linux_glibc/myjavalib.jar"],
944         },
945     },
946 }
947 
948 java_import {
949     name: "myjavalib",
950     prefer: false,
951     host_supported: true,
952     target: {
953         android: {
954             jars: ["java/android/myjavalib.jar"],
955         },
956         linux_glibc: {
957             jars: ["java/linux_glibc/myjavalib.jar"],
958         },
959     },
960 }
961 
962 module_exports_snapshot {
963     name: "myexports@current",
964     host_supported: true,
965     java_libs: ["myexports_myjavalib@current"],
966     target: {
967         android: {
968             java_header_libs: ["myexports_androidjavalib@current"],
969         },
970         linux_glibc: {
971             java_header_libs: ["myexports_hostjavalib@current"],
972         },
973     },
974 }
975 `),
976 		checkAllCopyRules(`
977 .intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
978 .intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
979 .intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
980 .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
981 `),
982 	)
983 }
984 
985 func TestSnapshotWithJavaSdkLibrary(t *testing.T) {
986 	result := testSdkWithJava(t, `
987 		sdk {
988 			name: "mysdk",
989 			java_sdk_libs: ["myjavalib"],
990 		}
991 
992 		java_sdk_library {
993 			name: "myjavalib",
994 			apex_available: ["//apex_available:anyapex"],
995 			srcs: ["Test.java"],
996 			sdk_version: "current",
997 			shared_library: false,
998 			stubs_library_visibility: ["//other"],
999 			stubs_source_visibility: ["//another"],
1000 		}
1001 	`)
1002 
1003 	result.CheckSnapshot("mysdk", "",
1004 		checkAndroidBpContents(`
1005 // This is auto-generated. DO NOT EDIT.
1006 
1007 java_sdk_library_import {
1008     name: "mysdk_myjavalib@current",
1009     sdk_member_name: "myjavalib",
1010     apex_available: ["//apex_available:anyapex"],
1011     shared_library: false,
1012     public: {
1013         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1014         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1015         current_api: "sdk_library/public/myjavalib.txt",
1016         removed_api: "sdk_library/public/myjavalib-removed.txt",
1017         sdk_version: "current",
1018     },
1019     system: {
1020         jars: ["sdk_library/system/myjavalib-stubs.jar"],
1021         stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1022         current_api: "sdk_library/system/myjavalib.txt",
1023         removed_api: "sdk_library/system/myjavalib-removed.txt",
1024         sdk_version: "system_current",
1025     },
1026     test: {
1027         jars: ["sdk_library/test/myjavalib-stubs.jar"],
1028         stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
1029         current_api: "sdk_library/test/myjavalib.txt",
1030         removed_api: "sdk_library/test/myjavalib-removed.txt",
1031         sdk_version: "test_current",
1032     },
1033 }
1034 
1035 java_sdk_library_import {
1036     name: "myjavalib",
1037     prefer: false,
1038     apex_available: ["//apex_available:anyapex"],
1039     shared_library: false,
1040     public: {
1041         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1042         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1043         current_api: "sdk_library/public/myjavalib.txt",
1044         removed_api: "sdk_library/public/myjavalib-removed.txt",
1045         sdk_version: "current",
1046     },
1047     system: {
1048         jars: ["sdk_library/system/myjavalib-stubs.jar"],
1049         stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1050         current_api: "sdk_library/system/myjavalib.txt",
1051         removed_api: "sdk_library/system/myjavalib-removed.txt",
1052         sdk_version: "system_current",
1053     },
1054     test: {
1055         jars: ["sdk_library/test/myjavalib-stubs.jar"],
1056         stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
1057         current_api: "sdk_library/test/myjavalib.txt",
1058         removed_api: "sdk_library/test/myjavalib-removed.txt",
1059         sdk_version: "test_current",
1060     },
1061 }
1062 
1063 sdk_snapshot {
1064     name: "mysdk@current",
1065     java_sdk_libs: ["mysdk_myjavalib@current"],
1066 }
1067 `),
1068 		checkAllCopyRules(`
1069 .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1070 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1071 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1072 .intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
1073 .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1074 .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1075 .intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar
1076 .intermediates/myjavalib.stubs.source.test/android_common/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
1077 .intermediates/myjavalib.stubs.source.test/android_common/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt
1078 `),
1079 		checkMergeZips(
1080 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1081 			".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1082 			".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip"),
1083 	)
1084 }
1085 
1086 func TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) {
1087 	result := testSdkWithJava(t, `
1088 		sdk {
1089 			name: "mysdk",
1090 			java_sdk_libs: ["myjavalib"],
1091 		}
1092 
1093 		java_sdk_library {
1094 			name: "myjavalib",
1095 			srcs: ["Test.java"],
1096 			sdk_version: "none",
1097 			system_modules: "none",
1098 		}
1099 	`)
1100 
1101 	result.CheckSnapshot("mysdk", "",
1102 		checkAndroidBpContents(`
1103 // This is auto-generated. DO NOT EDIT.
1104 
1105 java_sdk_library_import {
1106     name: "mysdk_myjavalib@current",
1107     sdk_member_name: "myjavalib",
1108     shared_library: true,
1109     public: {
1110         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1111         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1112         current_api: "sdk_library/public/myjavalib.txt",
1113         removed_api: "sdk_library/public/myjavalib-removed.txt",
1114         sdk_version: "none",
1115     },
1116 }
1117 
1118 java_sdk_library_import {
1119     name: "myjavalib",
1120     prefer: false,
1121     shared_library: true,
1122     public: {
1123         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1124         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1125         current_api: "sdk_library/public/myjavalib.txt",
1126         removed_api: "sdk_library/public/myjavalib-removed.txt",
1127         sdk_version: "none",
1128     },
1129 }
1130 
1131 sdk_snapshot {
1132     name: "mysdk@current",
1133     java_sdk_libs: ["mysdk_myjavalib@current"],
1134 }
1135 `),
1136 		checkAllCopyRules(`
1137 .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1138 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1139 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1140 `),
1141 		checkMergeZips(
1142 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1143 		),
1144 	)
1145 }
1146 
1147 func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
1148 	result := testSdkWithJava(t, `
1149 		sdk {
1150 			name: "mysdk",
1151 			java_sdk_libs: ["myjavalib"],
1152 		}
1153 
1154 		java_sdk_library {
1155 			name: "myjavalib",
1156 			srcs: ["Test.java"],
1157 			sdk_version: "module_current",
1158 			public: {
1159 				enabled: true,
1160 				sdk_version: "module_current",
1161 			},
1162 		}
1163 	`)
1164 
1165 	result.CheckSnapshot("mysdk", "",
1166 		checkAndroidBpContents(`
1167 // This is auto-generated. DO NOT EDIT.
1168 
1169 java_sdk_library_import {
1170     name: "mysdk_myjavalib@current",
1171     sdk_member_name: "myjavalib",
1172     shared_library: true,
1173     public: {
1174         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1175         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1176         current_api: "sdk_library/public/myjavalib.txt",
1177         removed_api: "sdk_library/public/myjavalib-removed.txt",
1178         sdk_version: "module_current",
1179     },
1180 }
1181 
1182 java_sdk_library_import {
1183     name: "myjavalib",
1184     prefer: false,
1185     shared_library: true,
1186     public: {
1187         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1188         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1189         current_api: "sdk_library/public/myjavalib.txt",
1190         removed_api: "sdk_library/public/myjavalib-removed.txt",
1191         sdk_version: "module_current",
1192     },
1193 }
1194 
1195 sdk_snapshot {
1196     name: "mysdk@current",
1197     java_sdk_libs: ["mysdk_myjavalib@current"],
1198 }
1199 `),
1200 		checkAllCopyRules(`
1201 .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1202 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1203 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1204 `),
1205 		checkMergeZips(
1206 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1207 		),
1208 	)
1209 }
1210 
1211 func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
1212 	result := testSdkWithJava(t, `
1213 		sdk {
1214 			name: "mysdk",
1215 			java_sdk_libs: ["myjavalib"],
1216 		}
1217 
1218 		java_sdk_library {
1219 			name: "myjavalib",
1220 			apex_available: ["//apex_available:anyapex"],
1221 			srcs: ["Test.java"],
1222 			sdk_version: "current",
1223 			public: {
1224 				enabled: true,
1225 			},
1226 			system: {
1227 				enabled: true,
1228 			},
1229 		}
1230 	`)
1231 
1232 	result.CheckSnapshot("mysdk", "",
1233 		checkAndroidBpContents(`
1234 // This is auto-generated. DO NOT EDIT.
1235 
1236 java_sdk_library_import {
1237     name: "mysdk_myjavalib@current",
1238     sdk_member_name: "myjavalib",
1239     apex_available: ["//apex_available:anyapex"],
1240     shared_library: true,
1241     public: {
1242         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1243         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1244         current_api: "sdk_library/public/myjavalib.txt",
1245         removed_api: "sdk_library/public/myjavalib-removed.txt",
1246         sdk_version: "current",
1247     },
1248     system: {
1249         jars: ["sdk_library/system/myjavalib-stubs.jar"],
1250         stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1251         current_api: "sdk_library/system/myjavalib.txt",
1252         removed_api: "sdk_library/system/myjavalib-removed.txt",
1253         sdk_version: "system_current",
1254     },
1255 }
1256 
1257 java_sdk_library_import {
1258     name: "myjavalib",
1259     prefer: false,
1260     apex_available: ["//apex_available:anyapex"],
1261     shared_library: true,
1262     public: {
1263         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1264         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1265         current_api: "sdk_library/public/myjavalib.txt",
1266         removed_api: "sdk_library/public/myjavalib-removed.txt",
1267         sdk_version: "current",
1268     },
1269     system: {
1270         jars: ["sdk_library/system/myjavalib-stubs.jar"],
1271         stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1272         current_api: "sdk_library/system/myjavalib.txt",
1273         removed_api: "sdk_library/system/myjavalib-removed.txt",
1274         sdk_version: "system_current",
1275     },
1276 }
1277 
1278 sdk_snapshot {
1279     name: "mysdk@current",
1280     java_sdk_libs: ["mysdk_myjavalib@current"],
1281 }
1282 `),
1283 		checkAllCopyRules(`
1284 .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1285 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1286 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1287 .intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
1288 .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1289 .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1290 `),
1291 		checkMergeZips(
1292 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1293 			".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1294 		),
1295 	)
1296 }
1297 
1298 func TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) {
1299 	result := testSdkWithJava(t, `
1300 		sdk {
1301 			name: "mysdk",
1302 			java_sdk_libs: ["myjavalib"],
1303 		}
1304 
1305 		java_sdk_library {
1306 			name: "myjavalib",
1307 			apex_available: ["//apex_available:anyapex"],
1308 			srcs: ["Test.java"],
1309 			sdk_version: "current",
1310 			public: {
1311 				enabled: true,
1312 			},
1313 			system: {
1314 				enabled: true,
1315 			},
1316 			module_lib: {
1317 				enabled: true,
1318 			},
1319 		}
1320 	`)
1321 
1322 	result.CheckSnapshot("mysdk", "",
1323 		checkAndroidBpContents(`
1324 // This is auto-generated. DO NOT EDIT.
1325 
1326 java_sdk_library_import {
1327     name: "mysdk_myjavalib@current",
1328     sdk_member_name: "myjavalib",
1329     apex_available: ["//apex_available:anyapex"],
1330     shared_library: true,
1331     public: {
1332         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1333         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1334         current_api: "sdk_library/public/myjavalib.txt",
1335         removed_api: "sdk_library/public/myjavalib-removed.txt",
1336         sdk_version: "current",
1337     },
1338     system: {
1339         jars: ["sdk_library/system/myjavalib-stubs.jar"],
1340         stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1341         current_api: "sdk_library/system/myjavalib.txt",
1342         removed_api: "sdk_library/system/myjavalib-removed.txt",
1343         sdk_version: "system_current",
1344     },
1345     module_lib: {
1346         jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
1347         stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
1348         current_api: "sdk_library/module-lib/myjavalib.txt",
1349         removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
1350         sdk_version: "module_current",
1351     },
1352 }
1353 
1354 java_sdk_library_import {
1355     name: "myjavalib",
1356     prefer: false,
1357     apex_available: ["//apex_available:anyapex"],
1358     shared_library: true,
1359     public: {
1360         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1361         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1362         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"],
1368         stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1369         current_api: "sdk_library/system/myjavalib.txt",
1370         removed_api: "sdk_library/system/myjavalib-removed.txt",
1371         sdk_version: "system_current",
1372     },
1373     module_lib: {
1374         jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
1375         stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
1376         current_api: "sdk_library/module-lib/myjavalib.txt",
1377         removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
1378         sdk_version: "module_current",
1379     },
1380 }
1381 
1382 sdk_snapshot {
1383     name: "mysdk@current",
1384     java_sdk_libs: ["mysdk_myjavalib@current"],
1385 }
1386 `),
1387 		checkAllCopyRules(`
1388 .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1389 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1390 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1391 .intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
1392 .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1393 .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1394 .intermediates/myjavalib.stubs.module_lib/android_common/javac/myjavalib.stubs.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar
1395 .intermediates/myjavalib.api.module_lib/android_common/myjavalib.api.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
1396 .intermediates/myjavalib.api.module_lib/android_common/myjavalib.api.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
1397 `),
1398 		checkMergeZips(
1399 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1400 			".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1401 			".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
1402 		),
1403 	)
1404 }
1405 
1406 func TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) {
1407 	result := testSdkWithJava(t, `
1408 		sdk {
1409 			name: "mysdk",
1410 			java_sdk_libs: ["myjavalib"],
1411 		}
1412 
1413 		java_sdk_library {
1414 			name: "myjavalib",
1415 			apex_available: ["//apex_available:anyapex"],
1416 			srcs: ["Test.java"],
1417 			sdk_version: "current",
1418 			public: {
1419 				enabled: true,
1420 			},
1421 			system_server: {
1422 				enabled: true,
1423 			},
1424 		}
1425 	`)
1426 
1427 	result.CheckSnapshot("mysdk", "",
1428 		checkAndroidBpContents(`
1429 // This is auto-generated. DO NOT EDIT.
1430 
1431 java_sdk_library_import {
1432     name: "mysdk_myjavalib@current",
1433     sdk_member_name: "myjavalib",
1434     apex_available: ["//apex_available:anyapex"],
1435     shared_library: true,
1436     public: {
1437         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1438         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1439         current_api: "sdk_library/public/myjavalib.txt",
1440         removed_api: "sdk_library/public/myjavalib-removed.txt",
1441         sdk_version: "current",
1442     },
1443     system_server: {
1444         jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
1445         stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
1446         current_api: "sdk_library/system-server/myjavalib.txt",
1447         removed_api: "sdk_library/system-server/myjavalib-removed.txt",
1448         sdk_version: "system_server_current",
1449     },
1450 }
1451 
1452 java_sdk_library_import {
1453     name: "myjavalib",
1454     prefer: false,
1455     apex_available: ["//apex_available:anyapex"],
1456     shared_library: true,
1457     public: {
1458         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1459         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1460         current_api: "sdk_library/public/myjavalib.txt",
1461         removed_api: "sdk_library/public/myjavalib-removed.txt",
1462         sdk_version: "current",
1463     },
1464     system_server: {
1465         jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
1466         stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
1467         current_api: "sdk_library/system-server/myjavalib.txt",
1468         removed_api: "sdk_library/system-server/myjavalib-removed.txt",
1469         sdk_version: "system_server_current",
1470     },
1471 }
1472 
1473 sdk_snapshot {
1474     name: "mysdk@current",
1475     java_sdk_libs: ["mysdk_myjavalib@current"],
1476 }
1477 `),
1478 		checkAllCopyRules(`
1479 .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
1480 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1481 .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1482 .intermediates/myjavalib.stubs.system_server/android_common/javac/myjavalib.stubs.system_server.jar -> sdk_library/system-server/myjavalib-stubs.jar
1483 .intermediates/myjavalib.stubs.source.system_server/android_common/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt
1484 .intermediates/myjavalib.stubs.source.system_server/android_common/myjavalib.stubs.source.system_server_removed.txt -> sdk_library/system-server/myjavalib-removed.txt
1485 `),
1486 		checkMergeZips(
1487 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1488 			".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip",
1489 		),
1490 	)
1491 }
1492 
1493 func TestSnapshotWithJavaSdkLibrary_NamingScheme(t *testing.T) {
1494 	result := testSdkWithJava(t, `
1495 		sdk {
1496 			name: "mysdk",
1497 			java_sdk_libs: ["myjavalib"],
1498 		}
1499 
1500 		java_sdk_library {
1501 			name: "myjavalib",
1502 			apex_available: ["//apex_available:anyapex"],
1503 			srcs: ["Test.java"],
1504 			sdk_version: "current",
1505 			naming_scheme: "framework-modules",
1506 			public: {
1507 				enabled: true,
1508 			},
1509 		}
1510 	`)
1511 
1512 	result.CheckSnapshot("mysdk", "",
1513 		checkAndroidBpContents(`
1514 // This is auto-generated. DO NOT EDIT.
1515 
1516 java_sdk_library_import {
1517     name: "mysdk_myjavalib@current",
1518     sdk_member_name: "myjavalib",
1519     apex_available: ["//apex_available:anyapex"],
1520     naming_scheme: "framework-modules",
1521     shared_library: true,
1522     public: {
1523         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1524         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1525         current_api: "sdk_library/public/myjavalib.txt",
1526         removed_api: "sdk_library/public/myjavalib-removed.txt",
1527         sdk_version: "current",
1528     },
1529 }
1530 
1531 java_sdk_library_import {
1532     name: "myjavalib",
1533     prefer: false,
1534     apex_available: ["//apex_available:anyapex"],
1535     naming_scheme: "framework-modules",
1536     shared_library: true,
1537     public: {
1538         jars: ["sdk_library/public/myjavalib-stubs.jar"],
1539         stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1540         current_api: "sdk_library/public/myjavalib.txt",
1541         removed_api: "sdk_library/public/myjavalib-removed.txt",
1542         sdk_version: "current",
1543     },
1544 }
1545 
1546 sdk_snapshot {
1547     name: "mysdk@current",
1548     java_sdk_libs: ["mysdk_myjavalib@current"],
1549 }
1550 `),
1551 		checkAllCopyRules(`
1552 .intermediates/myjavalib-stubs-publicapi/android_common/javac/myjavalib-stubs-publicapi.jar -> sdk_library/public/myjavalib-stubs.jar
1553 .intermediates/myjavalib-stubs-srcs-publicapi/android_common/myjavalib-stubs-srcs-publicapi_api.txt -> sdk_library/public/myjavalib.txt
1554 .intermediates/myjavalib-stubs-srcs-publicapi/android_common/myjavalib-stubs-srcs-publicapi_removed.txt -> sdk_library/public/myjavalib-removed.txt
1555 `),
1556 		checkMergeZips(
1557 			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1558 		),
1559 	)
1560 }
1561