blob: 4a2c0538743dfbaa89a194088c5c1551608dd23a [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,
27 }
28 return testSdkWithFs(t, bp, fs)
29}
30
Paul Duffina80fdec2019-12-03 15:25:00 +000031// Contains tests for SDK members provided by the java package.
32
33func TestBasicSdkWithJavaLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000034 result := testSdkWithJava(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000035 sdk {
36 name: "mysdk",
Jiyong Park0f80c182020-01-31 02:49:53 +090037 java_header_libs: ["sdkmember"],
Paul Duffina80fdec2019-12-03 15:25:00 +000038 }
39
40 sdk_snapshot {
41 name: "mysdk@1",
Paul Duffina0dbf432019-12-05 11:25:53 +000042 java_header_libs: ["sdkmember_mysdk_1"],
Paul Duffina80fdec2019-12-03 15:25:00 +000043 }
44
45 sdk_snapshot {
46 name: "mysdk@2",
Paul Duffina0dbf432019-12-05 11:25:53 +000047 java_header_libs: ["sdkmember_mysdk_2"],
Paul Duffina80fdec2019-12-03 15:25:00 +000048 }
49
Jiyong Park0f80c182020-01-31 02:49:53 +090050 java_library {
Paul Duffina80fdec2019-12-03 15:25:00 +000051 name: "sdkmember",
Jiyong Park0f80c182020-01-31 02:49:53 +090052 srcs: ["Test.java"],
53 system_modules: "none",
54 sdk_version: "none",
Paul Duffina80fdec2019-12-03 15:25:00 +000055 host_supported: true,
56 }
57
58 java_import {
59 name: "sdkmember_mysdk_1",
60 sdk_member_name: "sdkmember",
61 host_supported: true,
62 }
63
64 java_import {
65 name: "sdkmember_mysdk_2",
66 sdk_member_name: "sdkmember",
67 host_supported: true,
68 }
69
70 java_library {
71 name: "myjavalib",
72 srcs: ["Test.java"],
73 libs: ["sdkmember"],
74 system_modules: "none",
75 sdk_version: "none",
76 compile_dex: true,
77 host_supported: true,
Anton Hanssoneec79eb2020-01-10 15:12:39 +000078 apex_available: [
79 "myapex",
80 "myapex2",
81 ],
Paul Duffina80fdec2019-12-03 15:25:00 +000082 }
83
84 apex {
85 name: "myapex",
86 java_libs: ["myjavalib"],
87 uses_sdks: ["mysdk@1"],
88 key: "myapex.key",
89 certificate: ":myapex.cert",
90 }
91
92 apex {
93 name: "myapex2",
94 java_libs: ["myjavalib"],
95 uses_sdks: ["mysdk@2"],
96 key: "myapex.key",
97 certificate: ":myapex.cert",
98 }
99 `)
100
101 sdkMemberV1 := result.ctx.ModuleForTests("sdkmember_mysdk_1", "android_common_myapex").Rule("combineJar").Output
102 sdkMemberV2 := result.ctx.ModuleForTests("sdkmember_mysdk_2", "android_common_myapex2").Rule("combineJar").Output
103
104 javalibForMyApex := result.ctx.ModuleForTests("myjavalib", "android_common_myapex")
105 javalibForMyApex2 := result.ctx.ModuleForTests("myjavalib", "android_common_myapex2")
106
107 // Depending on the uses_sdks value, different libs are linked
108 ensureListContains(t, pathsToStrings(javalibForMyApex.Rule("javac").Implicits), sdkMemberV1.String())
109 ensureListContains(t, pathsToStrings(javalibForMyApex2.Rule("javac").Implicits), sdkMemberV2.String())
110}
111
Paul Duffina0dbf432019-12-05 11:25:53 +0000112func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
113 result := testSdkWithJava(t, `
114 sdk {
115 name: "mysdk",
116 java_header_libs: ["myjavalib"],
117 }
118
119 java_library {
120 name: "myjavalib",
121 srcs: ["Test.java"],
122 aidl: {
123 export_include_dirs: ["aidl"],
124 },
125 system_modules: "none",
126 sdk_version: "none",
127 compile_dex: true,
128 host_supported: true,
129 }
130 `)
131
Paul Duffin1356d8c2020-02-25 19:26:33 +0000132 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000133 checkAndroidBpContents(`
134// This is auto-generated. DO NOT EDIT.
135
136java_import {
137 name: "mysdk_myjavalib@current",
138 sdk_member_name: "myjavalib",
139 jars: ["java/myjavalib.jar"],
140}
141
142java_import {
143 name: "myjavalib",
144 prefer: false,
145 jars: ["java/myjavalib.jar"],
146}
147
148sdk_snapshot {
149 name: "mysdk@current",
150 java_header_libs: ["mysdk_myjavalib@current"],
151}
152
153`),
154 checkAllCopyRules(`
155.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
156aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
157`),
158 )
159}
160
161func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
162 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
163 SkipIfNotLinux(t)
164
165 result := testSdkWithJava(t, `
166 sdk {
167 name: "mysdk",
168 device_supported: false,
169 host_supported: true,
170 java_header_libs: ["myjavalib"],
171 }
172
173 java_library {
174 name: "myjavalib",
175 device_supported: false,
176 host_supported: true,
177 srcs: ["Test.java"],
178 aidl: {
179 export_include_dirs: ["aidl"],
180 },
181 system_modules: "none",
182 sdk_version: "none",
183 compile_dex: true,
184 }
185 `)
186
Paul Duffin1356d8c2020-02-25 19:26:33 +0000187 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000188 checkAndroidBpContents(`
189// This is auto-generated. DO NOT EDIT.
190
191java_import {
192 name: "mysdk_myjavalib@current",
193 sdk_member_name: "myjavalib",
194 device_supported: false,
195 host_supported: true,
196 jars: ["java/myjavalib.jar"],
197}
198
199java_import {
200 name: "myjavalib",
201 prefer: false,
202 device_supported: false,
203 host_supported: true,
204 jars: ["java/myjavalib.jar"],
205}
206
207sdk_snapshot {
208 name: "mysdk@current",
209 device_supported: false,
210 host_supported: true,
211 java_header_libs: ["mysdk_myjavalib@current"],
212}
213`),
214 checkAllCopyRules(`
215.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
216aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
217`),
218 )
219}
220
Paul Duffina04c1072020-03-02 10:16:35 +0000221func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
222 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
223 SkipIfNotLinux(t)
224
225 result := testSdkWithJava(t, `
226 sdk {
227 name: "mysdk",
228 host_supported: true,
229 java_header_libs: ["myjavalib"],
230 }
231
232 java_library {
233 name: "myjavalib",
234 host_supported: true,
235 srcs: ["Test.java"],
236 system_modules: "none",
237 sdk_version: "none",
238 compile_dex: true,
239 }
240 `)
241
242 result.CheckSnapshot("mysdk", "",
243 checkAndroidBpContents(`
244// This is auto-generated. DO NOT EDIT.
245
246java_import {
247 name: "mysdk_myjavalib@current",
248 sdk_member_name: "myjavalib",
249 host_supported: true,
250 target: {
251 android: {
252 jars: ["java/android/myjavalib.jar"],
253 },
254 linux_glibc: {
255 jars: ["java/linux_glibc/myjavalib.jar"],
256 },
257 },
258}
259
260java_import {
261 name: "myjavalib",
262 prefer: false,
263 host_supported: true,
264 target: {
265 android: {
266 jars: ["java/android/myjavalib.jar"],
267 },
268 linux_glibc: {
269 jars: ["java/linux_glibc/myjavalib.jar"],
270 },
271 },
272}
273
274sdk_snapshot {
275 name: "mysdk@current",
276 host_supported: true,
277 java_header_libs: ["mysdk_myjavalib@current"],
278}
279`),
280 checkAllCopyRules(`
281.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
282.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
283`),
284 )
285}
286
Paul Duffina0dbf432019-12-05 11:25:53 +0000287func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000288 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000289 module_exports {
290 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000291 java_libs: ["myjavalib"],
292 }
293
294 java_library {
295 name: "myjavalib",
296 srcs: ["Test.java"],
297 aidl: {
298 export_include_dirs: ["aidl"],
299 },
300 system_modules: "none",
301 sdk_version: "none",
302 compile_dex: true,
303 host_supported: true,
304 }
305 `)
306
Paul Duffin1356d8c2020-02-25 19:26:33 +0000307 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000308 checkAndroidBpContents(`
309// This is auto-generated. DO NOT EDIT.
310
311java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000312 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000313 sdk_member_name: "myjavalib",
314 jars: ["java/myjavalib.jar"],
315}
316
317java_import {
318 name: "myjavalib",
319 prefer: false,
320 jars: ["java/myjavalib.jar"],
321}
322
Paul Duffine6029182019-12-16 17:43:48 +0000323module_exports_snapshot {
324 name: "myexports@current",
325 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000326}
327
328`),
329 checkAllCopyRules(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000330.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000331aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
332`),
333 )
334}
335
Paul Duffina0dbf432019-12-05 11:25:53 +0000336func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000337 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
338 SkipIfNotLinux(t)
339
Paul Duffind835daa2019-11-30 17:49:09 +0000340 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000341 module_exports {
342 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000343 device_supported: false,
344 host_supported: true,
345 java_libs: ["myjavalib"],
346 }
347
348 java_library {
349 name: "myjavalib",
350 device_supported: false,
351 host_supported: true,
352 srcs: ["Test.java"],
353 aidl: {
354 export_include_dirs: ["aidl"],
355 },
356 system_modules: "none",
357 sdk_version: "none",
358 compile_dex: true,
359 }
360 `)
361
Paul Duffin1356d8c2020-02-25 19:26:33 +0000362 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000363 checkAndroidBpContents(`
364// This is auto-generated. DO NOT EDIT.
365
366java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000367 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000368 sdk_member_name: "myjavalib",
369 device_supported: false,
370 host_supported: true,
371 jars: ["java/myjavalib.jar"],
372}
373
374java_import {
375 name: "myjavalib",
376 prefer: false,
377 device_supported: false,
378 host_supported: true,
379 jars: ["java/myjavalib.jar"],
380}
381
Paul Duffine6029182019-12-16 17:43:48 +0000382module_exports_snapshot {
383 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000384 device_supported: false,
385 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000386 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000387}
388`),
389 checkAllCopyRules(`
390.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
391aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
392`),
393 )
394}
395
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000396func TestSnapshotWithJavaTest(t *testing.T) {
397 result := testSdkWithJava(t, `
398 module_exports {
399 name: "myexports",
400 java_tests: ["myjavatests"],
401 }
402
403 java_test {
404 name: "myjavatests",
405 srcs: ["Test.java"],
406 system_modules: "none",
407 sdk_version: "none",
408 compile_dex: true,
409 host_supported: true,
410 }
411 `)
412
Paul Duffin1356d8c2020-02-25 19:26:33 +0000413 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000414 checkAndroidBpContents(`
415// This is auto-generated. DO NOT EDIT.
416
417java_test_import {
418 name: "myexports_myjavatests@current",
419 sdk_member_name: "myjavatests",
420 jars: ["java/myjavatests.jar"],
421 test_config: "java/myjavatests-AndroidTest.xml",
422}
423
424java_test_import {
425 name: "myjavatests",
426 prefer: false,
427 jars: ["java/myjavatests.jar"],
428 test_config: "java/myjavatests-AndroidTest.xml",
429}
430
431module_exports_snapshot {
432 name: "myexports@current",
433 java_tests: ["myexports_myjavatests@current"],
434}
435`),
436 checkAllCopyRules(`
437.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
438.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
439`),
440 )
441}
442
443func TestHostSnapshotWithJavaTest(t *testing.T) {
444 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
445 SkipIfNotLinux(t)
446
447 result := testSdkWithJava(t, `
448 module_exports {
449 name: "myexports",
450 device_supported: false,
451 host_supported: true,
452 java_tests: ["myjavatests"],
453 }
454
455 java_test {
456 name: "myjavatests",
457 device_supported: false,
458 host_supported: true,
459 srcs: ["Test.java"],
460 system_modules: "none",
461 sdk_version: "none",
462 compile_dex: true,
463 }
464 `)
465
Paul Duffin1356d8c2020-02-25 19:26:33 +0000466 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000467 checkAndroidBpContents(`
468// This is auto-generated. DO NOT EDIT.
469
470java_test_import {
471 name: "myexports_myjavatests@current",
472 sdk_member_name: "myjavatests",
473 device_supported: false,
474 host_supported: true,
475 jars: ["java/myjavatests.jar"],
476 test_config: "java/myjavatests-AndroidTest.xml",
477}
478
479java_test_import {
480 name: "myjavatests",
481 prefer: false,
482 device_supported: false,
483 host_supported: true,
484 jars: ["java/myjavatests.jar"],
485 test_config: "java/myjavatests-AndroidTest.xml",
486}
487
488module_exports_snapshot {
489 name: "myexports@current",
490 device_supported: false,
491 host_supported: true,
492 java_tests: ["myexports_myjavatests@current"],
493}
494`),
495 checkAllCopyRules(`
496.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
497.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
498`),
499 )
500}
501
Paul Duffind835daa2019-11-30 17:49:09 +0000502func testSdkWithDroidstubs(t *testing.T, bp string) *testSdkResult {
503 t.Helper()
504
505 fs := map[string][]byte{
506 "foo/bar/Foo.java": nil,
507 "stubs-sources/foo/bar/Foo.java": nil,
508 }
509 return testSdkWithFs(t, bp, fs)
510}
511
Paul Duffina80fdec2019-12-03 15:25:00 +0000512// Note: This test does not verify that a droidstubs can be referenced, either
513// directly or indirectly from an APEX as droidstubs can never be a part of an
514// apex.
515func TestBasicSdkWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000516 testSdkWithDroidstubs(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000517 sdk {
518 name: "mysdk",
519 stubs_sources: ["mystub"],
520 }
521 sdk_snapshot {
522 name: "mysdk@10",
523 stubs_sources: ["mystub_mysdk@10"],
524 }
525 prebuilt_stubs_sources {
526 name: "mystub_mysdk@10",
527 sdk_member_name: "mystub",
528 srcs: ["stubs-sources/foo/bar/Foo.java"],
529 }
530 droidstubs {
531 name: "mystub",
532 srcs: ["foo/bar/Foo.java"],
533 sdk_version: "none",
534 system_modules: "none",
535 }
536 java_library {
537 name: "myjavalib",
538 srcs: [":mystub"],
539 sdk_version: "none",
540 system_modules: "none",
541 }
542 `)
543}
544
545func TestSnapshotWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000546 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000547 module_exports {
548 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000549 stubs_sources: ["myjavaapistubs"],
550 }
551
552 droidstubs {
553 name: "myjavaapistubs",
554 srcs: ["foo/bar/Foo.java"],
555 system_modules: "none",
556 sdk_version: "none",
557 }
558 `)
559
Paul Duffin1356d8c2020-02-25 19:26:33 +0000560 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000561 checkAndroidBpContents(`
562// This is auto-generated. DO NOT EDIT.
563
564prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000565 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000566 sdk_member_name: "myjavaapistubs",
567 srcs: ["java/myjavaapistubs_stubs_sources"],
568}
569
570prebuilt_stubs_sources {
571 name: "myjavaapistubs",
572 prefer: false,
573 srcs: ["java/myjavaapistubs_stubs_sources"],
574}
575
Paul Duffine6029182019-12-16 17:43:48 +0000576module_exports_snapshot {
577 name: "myexports@current",
578 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000579}
580
581`),
582 checkAllCopyRules(""),
Paul Duffin1356d8c2020-02-25 19:26:33 +0000583 checkMergeZip(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000584 )
585}
586
587func TestHostSnapshotWithDroidstubs(t *testing.T) {
588 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
589 SkipIfNotLinux(t)
590
Paul Duffind835daa2019-11-30 17:49:09 +0000591 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000592 module_exports {
593 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000594 device_supported: false,
595 host_supported: true,
596 stubs_sources: ["myjavaapistubs"],
597 }
598
599 droidstubs {
600 name: "myjavaapistubs",
601 device_supported: false,
602 host_supported: true,
603 srcs: ["foo/bar/Foo.java"],
604 system_modules: "none",
605 sdk_version: "none",
606 }
607 `)
608
Paul Duffin1356d8c2020-02-25 19:26:33 +0000609 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000610 checkAndroidBpContents(`
611// This is auto-generated. DO NOT EDIT.
612
613prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000614 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000615 sdk_member_name: "myjavaapistubs",
616 device_supported: false,
617 host_supported: true,
618 srcs: ["java/myjavaapistubs_stubs_sources"],
619}
620
621prebuilt_stubs_sources {
622 name: "myjavaapistubs",
623 prefer: false,
624 device_supported: false,
625 host_supported: true,
626 srcs: ["java/myjavaapistubs_stubs_sources"],
627}
628
Paul Duffine6029182019-12-16 17:43:48 +0000629module_exports_snapshot {
630 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000631 device_supported: false,
632 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000633 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000634}
635`),
636 checkAllCopyRules(""),
Paul Duffin1356d8c2020-02-25 19:26:33 +0000637 checkMergeZip(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000638 )
639}
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000640
641func TestSnapshotWithJavaSystemModules(t *testing.T) {
642 result := testSdkWithJava(t, `
643 sdk {
644 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000645 java_header_libs: ["exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000646 java_system_modules: ["my-system-modules"],
647 }
648
649 java_system_modules {
650 name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000651 libs: ["system-module", "exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000652 }
653
654 java_library {
655 name: "system-module",
656 srcs: ["Test.java"],
657 sdk_version: "none",
658 system_modules: "none",
659 }
Paul Duffin72910952020-01-20 18:16:30 +0000660
661 java_library {
662 name: "exported-system-module",
663 srcs: ["Test.java"],
664 sdk_version: "none",
665 system_modules: "none",
666 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000667 `)
668
Paul Duffin1356d8c2020-02-25 19:26:33 +0000669 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000670 checkAndroidBpContents(`
671// This is auto-generated. DO NOT EDIT.
672
673java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000674 name: "mysdk_exported-system-module@current",
675 sdk_member_name: "exported-system-module",
676 jars: ["java/exported-system-module.jar"],
677}
678
679java_import {
680 name: "exported-system-module",
681 prefer: false,
682 jars: ["java/exported-system-module.jar"],
683}
684
685java_import {
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000686 name: "mysdk_system-module@current",
687 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000688 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000689 jars: ["java/system-module.jar"],
690}
691
692java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000693 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000694 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000695 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000696 jars: ["java/system-module.jar"],
697}
698
699java_system_modules_import {
700 name: "mysdk_my-system-modules@current",
701 sdk_member_name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000702 libs: [
703 "mysdk_system-module@current",
704 "mysdk_exported-system-module@current",
705 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000706}
707
708java_system_modules_import {
709 name: "my-system-modules",
710 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000711 libs: [
712 "mysdk_system-module",
713 "exported-system-module",
714 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000715}
716
717sdk_snapshot {
718 name: "mysdk@current",
Paul Duffin72910952020-01-20 18:16:30 +0000719 java_header_libs: ["mysdk_exported-system-module@current"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000720 java_system_modules: ["mysdk_my-system-modules@current"],
721}
722`),
Paul Duffin72910952020-01-20 18:16:30 +0000723 checkAllCopyRules(`
724.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
725.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
726`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000727 )
728}
729
730func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
731 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
732 SkipIfNotLinux(t)
733
734 result := testSdkWithJava(t, `
735 sdk {
736 name: "mysdk",
737 device_supported: false,
738 host_supported: true,
739 java_system_modules: ["my-system-modules"],
740 }
741
742 java_system_modules {
743 name: "my-system-modules",
744 device_supported: false,
745 host_supported: true,
746 libs: ["system-module"],
747 }
748
749 java_library {
750 name: "system-module",
751 device_supported: false,
752 host_supported: true,
753 srcs: ["Test.java"],
754 sdk_version: "none",
755 system_modules: "none",
756 }
757 `)
758
Paul Duffin1356d8c2020-02-25 19:26:33 +0000759 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000760 checkAndroidBpContents(`
761// This is auto-generated. DO NOT EDIT.
762
763java_import {
764 name: "mysdk_system-module@current",
765 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000766 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000767 device_supported: false,
768 host_supported: true,
769 jars: ["java/system-module.jar"],
770}
771
772java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000773 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000774 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000775 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000776 device_supported: false,
777 host_supported: true,
778 jars: ["java/system-module.jar"],
779}
780
781java_system_modules_import {
782 name: "mysdk_my-system-modules@current",
783 sdk_member_name: "my-system-modules",
784 device_supported: false,
785 host_supported: true,
786 libs: ["mysdk_system-module@current"],
787}
788
789java_system_modules_import {
790 name: "my-system-modules",
791 prefer: false,
792 device_supported: false,
793 host_supported: true,
Paul Duffin72910952020-01-20 18:16:30 +0000794 libs: ["mysdk_system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000795}
796
797sdk_snapshot {
798 name: "mysdk@current",
799 device_supported: false,
800 host_supported: true,
801 java_system_modules: ["mysdk_my-system-modules@current"],
802}
803`),
804 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
805 )
806}
Paul Duffin865171e2020-03-02 18:38:15 +0000807
808func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
809 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
810 SkipIfNotLinux(t)
811
812 result := testSdkWithJava(t, `
813 module_exports {
814 name: "myexports",
815 host_supported: true,
816 java_libs: ["myjavalib"],
817 target: {
818 android: {
819 java_header_libs: ["androidjavalib"],
820 },
821 host: {
822 java_header_libs: ["hostjavalib"],
823 },
824 },
825 }
826
827 java_library {
828 name: "myjavalib",
829 host_supported: true,
830 srcs: ["Test.java"],
831 system_modules: "none",
832 sdk_version: "none",
833 }
834
835 java_library {
836 name: "androidjavalib",
837 srcs: ["Test.java"],
838 system_modules: "none",
839 sdk_version: "none",
840 }
841
842 java_library_host {
843 name: "hostjavalib",
844 srcs: ["Test.java"],
845 }
846 `)
847
848 result.CheckSnapshot("myexports", "",
849 checkAndroidBpContents(`
850// This is auto-generated. DO NOT EDIT.
851
852java_import {
853 name: "myexports_hostjavalib@current",
854 sdk_member_name: "hostjavalib",
855 device_supported: false,
856 host_supported: true,
857 jars: ["java/hostjavalib.jar"],
858}
859
860java_import {
861 name: "hostjavalib",
862 prefer: false,
863 device_supported: false,
864 host_supported: true,
865 jars: ["java/hostjavalib.jar"],
866}
867
868java_import {
869 name: "myexports_androidjavalib@current",
870 sdk_member_name: "androidjavalib",
871 jars: ["java/androidjavalib.jar"],
872}
873
874java_import {
875 name: "androidjavalib",
876 prefer: false,
877 jars: ["java/androidjavalib.jar"],
878}
879
880java_import {
881 name: "myexports_myjavalib@current",
882 sdk_member_name: "myjavalib",
883 host_supported: true,
884 target: {
885 android: {
886 jars: ["java/android/myjavalib.jar"],
887 },
888 linux_glibc: {
889 jars: ["java/linux_glibc/myjavalib.jar"],
890 },
891 },
892}
893
894java_import {
895 name: "myjavalib",
896 prefer: false,
897 host_supported: true,
898 target: {
899 android: {
900 jars: ["java/android/myjavalib.jar"],
901 },
902 linux_glibc: {
903 jars: ["java/linux_glibc/myjavalib.jar"],
904 },
905 },
906}
907
908module_exports_snapshot {
909 name: "myexports@current",
910 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +0000911 java_libs: ["myexports_myjavalib@current"],
Paul Duffin865171e2020-03-02 18:38:15 +0000912 target: {
913 android: {
914 java_header_libs: ["myexports_androidjavalib@current"],
915 },
916 linux_glibc: {
917 java_header_libs: ["myexports_hostjavalib@current"],
918 },
919 },
Paul Duffin865171e2020-03-02 18:38:15 +0000920}
921`),
922 checkAllCopyRules(`
923.intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
924.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
925.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
926.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
927`),
928 )
929}