blob: cbffb501be398bd57bcc1870d903d174bc2ce105 [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,
Jiyong Park0f80c182020-01-31 02:49:53 +090056 apex_available: [
57 "//apex_available:platform",
58 "//apex_available:anyapex",
59 ],
Paul Duffina80fdec2019-12-03 15:25:00 +000060 }
61
62 java_import {
63 name: "sdkmember_mysdk_1",
64 sdk_member_name: "sdkmember",
65 host_supported: true,
Jiyong Park0f80c182020-01-31 02:49:53 +090066 apex_available: [
67 "//apex_available:platform",
68 "//apex_available:anyapex",
69 ],
Paul Duffina80fdec2019-12-03 15:25:00 +000070 }
71
72 java_import {
73 name: "sdkmember_mysdk_2",
74 sdk_member_name: "sdkmember",
75 host_supported: true,
Jiyong Park0f80c182020-01-31 02:49:53 +090076 apex_available: [
77 "//apex_available:platform",
78 "//apex_available:anyapex",
79 ],
Paul Duffina80fdec2019-12-03 15:25:00 +000080 }
81
82 java_library {
83 name: "myjavalib",
84 srcs: ["Test.java"],
85 libs: ["sdkmember"],
86 system_modules: "none",
87 sdk_version: "none",
88 compile_dex: true,
89 host_supported: true,
Anton Hanssoneec79eb2020-01-10 15:12:39 +000090 apex_available: [
91 "myapex",
92 "myapex2",
93 ],
Paul Duffina80fdec2019-12-03 15:25:00 +000094 }
95
96 apex {
97 name: "myapex",
98 java_libs: ["myjavalib"],
99 uses_sdks: ["mysdk@1"],
100 key: "myapex.key",
101 certificate: ":myapex.cert",
102 }
103
104 apex {
105 name: "myapex2",
106 java_libs: ["myjavalib"],
107 uses_sdks: ["mysdk@2"],
108 key: "myapex.key",
109 certificate: ":myapex.cert",
110 }
111 `)
112
113 sdkMemberV1 := result.ctx.ModuleForTests("sdkmember_mysdk_1", "android_common_myapex").Rule("combineJar").Output
114 sdkMemberV2 := result.ctx.ModuleForTests("sdkmember_mysdk_2", "android_common_myapex2").Rule("combineJar").Output
115
116 javalibForMyApex := result.ctx.ModuleForTests("myjavalib", "android_common_myapex")
117 javalibForMyApex2 := result.ctx.ModuleForTests("myjavalib", "android_common_myapex2")
118
119 // Depending on the uses_sdks value, different libs are linked
120 ensureListContains(t, pathsToStrings(javalibForMyApex.Rule("javac").Implicits), sdkMemberV1.String())
121 ensureListContains(t, pathsToStrings(javalibForMyApex2.Rule("javac").Implicits), sdkMemberV2.String())
122}
123
Paul Duffina0dbf432019-12-05 11:25:53 +0000124func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
125 result := testSdkWithJava(t, `
126 sdk {
127 name: "mysdk",
128 java_header_libs: ["myjavalib"],
129 }
130
131 java_library {
132 name: "myjavalib",
133 srcs: ["Test.java"],
134 aidl: {
135 export_include_dirs: ["aidl"],
136 },
137 system_modules: "none",
138 sdk_version: "none",
139 compile_dex: true,
140 host_supported: true,
141 }
142 `)
143
Paul Duffin1356d8c2020-02-25 19:26:33 +0000144 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000145 checkAndroidBpContents(`
146// This is auto-generated. DO NOT EDIT.
147
148java_import {
149 name: "mysdk_myjavalib@current",
150 sdk_member_name: "myjavalib",
151 jars: ["java/myjavalib.jar"],
152}
153
154java_import {
155 name: "myjavalib",
156 prefer: false,
157 jars: ["java/myjavalib.jar"],
158}
159
160sdk_snapshot {
161 name: "mysdk@current",
162 java_header_libs: ["mysdk_myjavalib@current"],
163}
164
165`),
166 checkAllCopyRules(`
167.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
168aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
169`),
170 )
171}
172
173func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
174 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
175 SkipIfNotLinux(t)
176
177 result := testSdkWithJava(t, `
178 sdk {
179 name: "mysdk",
180 device_supported: false,
181 host_supported: true,
182 java_header_libs: ["myjavalib"],
183 }
184
185 java_library {
186 name: "myjavalib",
187 device_supported: false,
188 host_supported: true,
189 srcs: ["Test.java"],
190 aidl: {
191 export_include_dirs: ["aidl"],
192 },
193 system_modules: "none",
194 sdk_version: "none",
195 compile_dex: true,
196 }
197 `)
198
Paul Duffin1356d8c2020-02-25 19:26:33 +0000199 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000200 checkAndroidBpContents(`
201// This is auto-generated. DO NOT EDIT.
202
203java_import {
204 name: "mysdk_myjavalib@current",
205 sdk_member_name: "myjavalib",
206 device_supported: false,
207 host_supported: true,
208 jars: ["java/myjavalib.jar"],
209}
210
211java_import {
212 name: "myjavalib",
213 prefer: false,
214 device_supported: false,
215 host_supported: true,
216 jars: ["java/myjavalib.jar"],
217}
218
219sdk_snapshot {
220 name: "mysdk@current",
221 device_supported: false,
222 host_supported: true,
223 java_header_libs: ["mysdk_myjavalib@current"],
224}
225`),
226 checkAllCopyRules(`
227.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
228aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
229`),
230 )
231}
232
Paul Duffina04c1072020-03-02 10:16:35 +0000233func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
234 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
235 SkipIfNotLinux(t)
236
237 result := testSdkWithJava(t, `
238 sdk {
239 name: "mysdk",
240 host_supported: true,
241 java_header_libs: ["myjavalib"],
242 }
243
244 java_library {
245 name: "myjavalib",
246 host_supported: true,
247 srcs: ["Test.java"],
248 system_modules: "none",
249 sdk_version: "none",
250 compile_dex: true,
251 }
252 `)
253
254 result.CheckSnapshot("mysdk", "",
255 checkAndroidBpContents(`
256// This is auto-generated. DO NOT EDIT.
257
258java_import {
259 name: "mysdk_myjavalib@current",
260 sdk_member_name: "myjavalib",
261 host_supported: true,
262 target: {
263 android: {
264 jars: ["java/android/myjavalib.jar"],
265 },
266 linux_glibc: {
267 jars: ["java/linux_glibc/myjavalib.jar"],
268 },
269 },
270}
271
272java_import {
273 name: "myjavalib",
274 prefer: false,
275 host_supported: true,
276 target: {
277 android: {
278 jars: ["java/android/myjavalib.jar"],
279 },
280 linux_glibc: {
281 jars: ["java/linux_glibc/myjavalib.jar"],
282 },
283 },
284}
285
286sdk_snapshot {
287 name: "mysdk@current",
288 host_supported: true,
289 java_header_libs: ["mysdk_myjavalib@current"],
290}
291`),
292 checkAllCopyRules(`
293.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
294.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
295`),
296 )
297}
298
Paul Duffina0dbf432019-12-05 11:25:53 +0000299func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000300 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000301 module_exports {
302 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000303 java_libs: ["myjavalib"],
304 }
305
306 java_library {
307 name: "myjavalib",
308 srcs: ["Test.java"],
309 aidl: {
310 export_include_dirs: ["aidl"],
311 },
312 system_modules: "none",
313 sdk_version: "none",
314 compile_dex: true,
315 host_supported: true,
316 }
317 `)
318
Paul Duffin1356d8c2020-02-25 19:26:33 +0000319 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000320 checkAndroidBpContents(`
321// This is auto-generated. DO NOT EDIT.
322
323java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000324 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000325 sdk_member_name: "myjavalib",
326 jars: ["java/myjavalib.jar"],
327}
328
329java_import {
330 name: "myjavalib",
331 prefer: false,
332 jars: ["java/myjavalib.jar"],
333}
334
Paul Duffine6029182019-12-16 17:43:48 +0000335module_exports_snapshot {
336 name: "myexports@current",
337 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000338}
339
340`),
341 checkAllCopyRules(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000342.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000343aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
344`),
345 )
346}
347
Paul Duffina0dbf432019-12-05 11:25:53 +0000348func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000349 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
350 SkipIfNotLinux(t)
351
Paul Duffind835daa2019-11-30 17:49:09 +0000352 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000353 module_exports {
354 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000355 device_supported: false,
356 host_supported: true,
357 java_libs: ["myjavalib"],
358 }
359
360 java_library {
361 name: "myjavalib",
362 device_supported: false,
363 host_supported: true,
364 srcs: ["Test.java"],
365 aidl: {
366 export_include_dirs: ["aidl"],
367 },
368 system_modules: "none",
369 sdk_version: "none",
370 compile_dex: true,
371 }
372 `)
373
Paul Duffin1356d8c2020-02-25 19:26:33 +0000374 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000375 checkAndroidBpContents(`
376// This is auto-generated. DO NOT EDIT.
377
378java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000379 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000380 sdk_member_name: "myjavalib",
381 device_supported: false,
382 host_supported: true,
383 jars: ["java/myjavalib.jar"],
384}
385
386java_import {
387 name: "myjavalib",
388 prefer: false,
389 device_supported: false,
390 host_supported: true,
391 jars: ["java/myjavalib.jar"],
392}
393
Paul Duffine6029182019-12-16 17:43:48 +0000394module_exports_snapshot {
395 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000396 device_supported: false,
397 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000398 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000399}
400`),
401 checkAllCopyRules(`
402.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
403aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
404`),
405 )
406}
407
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000408func TestSnapshotWithJavaTest(t *testing.T) {
409 result := testSdkWithJava(t, `
410 module_exports {
411 name: "myexports",
412 java_tests: ["myjavatests"],
413 }
414
415 java_test {
416 name: "myjavatests",
417 srcs: ["Test.java"],
418 system_modules: "none",
419 sdk_version: "none",
420 compile_dex: true,
421 host_supported: true,
422 }
423 `)
424
Paul Duffin1356d8c2020-02-25 19:26:33 +0000425 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000426 checkAndroidBpContents(`
427// This is auto-generated. DO NOT EDIT.
428
429java_test_import {
430 name: "myexports_myjavatests@current",
431 sdk_member_name: "myjavatests",
432 jars: ["java/myjavatests.jar"],
433 test_config: "java/myjavatests-AndroidTest.xml",
434}
435
436java_test_import {
437 name: "myjavatests",
438 prefer: false,
439 jars: ["java/myjavatests.jar"],
440 test_config: "java/myjavatests-AndroidTest.xml",
441}
442
443module_exports_snapshot {
444 name: "myexports@current",
445 java_tests: ["myexports_myjavatests@current"],
446}
447`),
448 checkAllCopyRules(`
449.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
450.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
451`),
452 )
453}
454
455func TestHostSnapshotWithJavaTest(t *testing.T) {
456 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
457 SkipIfNotLinux(t)
458
459 result := testSdkWithJava(t, `
460 module_exports {
461 name: "myexports",
462 device_supported: false,
463 host_supported: true,
464 java_tests: ["myjavatests"],
465 }
466
467 java_test {
468 name: "myjavatests",
469 device_supported: false,
470 host_supported: true,
471 srcs: ["Test.java"],
472 system_modules: "none",
473 sdk_version: "none",
474 compile_dex: true,
475 }
476 `)
477
Paul Duffin1356d8c2020-02-25 19:26:33 +0000478 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000479 checkAndroidBpContents(`
480// This is auto-generated. DO NOT EDIT.
481
482java_test_import {
483 name: "myexports_myjavatests@current",
484 sdk_member_name: "myjavatests",
485 device_supported: false,
486 host_supported: true,
487 jars: ["java/myjavatests.jar"],
488 test_config: "java/myjavatests-AndroidTest.xml",
489}
490
491java_test_import {
492 name: "myjavatests",
493 prefer: false,
494 device_supported: false,
495 host_supported: true,
496 jars: ["java/myjavatests.jar"],
497 test_config: "java/myjavatests-AndroidTest.xml",
498}
499
500module_exports_snapshot {
501 name: "myexports@current",
502 device_supported: false,
503 host_supported: true,
504 java_tests: ["myexports_myjavatests@current"],
505}
506`),
507 checkAllCopyRules(`
508.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
509.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
510`),
511 )
512}
513
Paul Duffind835daa2019-11-30 17:49:09 +0000514func testSdkWithDroidstubs(t *testing.T, bp string) *testSdkResult {
515 t.Helper()
516
517 fs := map[string][]byte{
518 "foo/bar/Foo.java": nil,
519 "stubs-sources/foo/bar/Foo.java": nil,
520 }
521 return testSdkWithFs(t, bp, fs)
522}
523
Paul Duffina80fdec2019-12-03 15:25:00 +0000524// Note: This test does not verify that a droidstubs can be referenced, either
525// directly or indirectly from an APEX as droidstubs can never be a part of an
526// apex.
527func TestBasicSdkWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000528 testSdkWithDroidstubs(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000529 sdk {
530 name: "mysdk",
531 stubs_sources: ["mystub"],
532 }
533 sdk_snapshot {
534 name: "mysdk@10",
535 stubs_sources: ["mystub_mysdk@10"],
536 }
537 prebuilt_stubs_sources {
538 name: "mystub_mysdk@10",
539 sdk_member_name: "mystub",
540 srcs: ["stubs-sources/foo/bar/Foo.java"],
541 }
542 droidstubs {
543 name: "mystub",
544 srcs: ["foo/bar/Foo.java"],
545 sdk_version: "none",
546 system_modules: "none",
547 }
548 java_library {
549 name: "myjavalib",
550 srcs: [":mystub"],
551 sdk_version: "none",
552 system_modules: "none",
553 }
554 `)
555}
556
557func TestSnapshotWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000558 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000559 module_exports {
560 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000561 stubs_sources: ["myjavaapistubs"],
562 }
563
564 droidstubs {
565 name: "myjavaapistubs",
566 srcs: ["foo/bar/Foo.java"],
567 system_modules: "none",
568 sdk_version: "none",
569 }
570 `)
571
Paul Duffin1356d8c2020-02-25 19:26:33 +0000572 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000573 checkAndroidBpContents(`
574// This is auto-generated. DO NOT EDIT.
575
576prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000577 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000578 sdk_member_name: "myjavaapistubs",
579 srcs: ["java/myjavaapistubs_stubs_sources"],
580}
581
582prebuilt_stubs_sources {
583 name: "myjavaapistubs",
584 prefer: false,
585 srcs: ["java/myjavaapistubs_stubs_sources"],
586}
587
Paul Duffine6029182019-12-16 17:43:48 +0000588module_exports_snapshot {
589 name: "myexports@current",
590 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000591}
592
593`),
594 checkAllCopyRules(""),
Paul Duffin1356d8c2020-02-25 19:26:33 +0000595 checkMergeZip(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000596 )
597}
598
599func TestHostSnapshotWithDroidstubs(t *testing.T) {
600 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
601 SkipIfNotLinux(t)
602
Paul Duffind835daa2019-11-30 17:49:09 +0000603 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000604 module_exports {
605 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000606 device_supported: false,
607 host_supported: true,
608 stubs_sources: ["myjavaapistubs"],
609 }
610
611 droidstubs {
612 name: "myjavaapistubs",
613 device_supported: false,
614 host_supported: true,
615 srcs: ["foo/bar/Foo.java"],
616 system_modules: "none",
617 sdk_version: "none",
618 }
619 `)
620
Paul Duffin1356d8c2020-02-25 19:26:33 +0000621 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000622 checkAndroidBpContents(`
623// This is auto-generated. DO NOT EDIT.
624
625prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000626 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000627 sdk_member_name: "myjavaapistubs",
628 device_supported: false,
629 host_supported: true,
630 srcs: ["java/myjavaapistubs_stubs_sources"],
631}
632
633prebuilt_stubs_sources {
634 name: "myjavaapistubs",
635 prefer: false,
636 device_supported: false,
637 host_supported: true,
638 srcs: ["java/myjavaapistubs_stubs_sources"],
639}
640
Paul Duffine6029182019-12-16 17:43:48 +0000641module_exports_snapshot {
642 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000643 device_supported: false,
644 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000645 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000646}
647`),
648 checkAllCopyRules(""),
Paul Duffin1356d8c2020-02-25 19:26:33 +0000649 checkMergeZip(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000650 )
651}
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000652
653func TestSnapshotWithJavaSystemModules(t *testing.T) {
654 result := testSdkWithJava(t, `
655 sdk {
656 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000657 java_header_libs: ["exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000658 java_system_modules: ["my-system-modules"],
659 }
660
661 java_system_modules {
662 name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000663 libs: ["system-module", "exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000664 }
665
666 java_library {
667 name: "system-module",
668 srcs: ["Test.java"],
669 sdk_version: "none",
670 system_modules: "none",
671 }
Paul Duffin72910952020-01-20 18:16:30 +0000672
673 java_library {
674 name: "exported-system-module",
675 srcs: ["Test.java"],
676 sdk_version: "none",
677 system_modules: "none",
678 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000679 `)
680
Paul Duffin1356d8c2020-02-25 19:26:33 +0000681 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000682 checkAndroidBpContents(`
683// This is auto-generated. DO NOT EDIT.
684
685java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000686 name: "mysdk_exported-system-module@current",
687 sdk_member_name: "exported-system-module",
688 jars: ["java/exported-system-module.jar"],
689}
690
691java_import {
692 name: "exported-system-module",
693 prefer: false,
694 jars: ["java/exported-system-module.jar"],
695}
696
697java_import {
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000698 name: "mysdk_system-module@current",
699 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000700 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000701 jars: ["java/system-module.jar"],
702}
703
704java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000705 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000706 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000707 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000708 jars: ["java/system-module.jar"],
709}
710
711java_system_modules_import {
712 name: "mysdk_my-system-modules@current",
713 sdk_member_name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000714 libs: [
715 "mysdk_system-module@current",
716 "mysdk_exported-system-module@current",
717 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000718}
719
720java_system_modules_import {
721 name: "my-system-modules",
722 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000723 libs: [
724 "mysdk_system-module",
725 "exported-system-module",
726 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000727}
728
729sdk_snapshot {
730 name: "mysdk@current",
Paul Duffin72910952020-01-20 18:16:30 +0000731 java_header_libs: ["mysdk_exported-system-module@current"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000732 java_system_modules: ["mysdk_my-system-modules@current"],
733}
734`),
Paul Duffin72910952020-01-20 18:16:30 +0000735 checkAllCopyRules(`
736.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
737.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
738`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000739 )
740}
741
742func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
743 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
744 SkipIfNotLinux(t)
745
746 result := testSdkWithJava(t, `
747 sdk {
748 name: "mysdk",
749 device_supported: false,
750 host_supported: true,
751 java_system_modules: ["my-system-modules"],
752 }
753
754 java_system_modules {
755 name: "my-system-modules",
756 device_supported: false,
757 host_supported: true,
758 libs: ["system-module"],
759 }
760
761 java_library {
762 name: "system-module",
763 device_supported: false,
764 host_supported: true,
765 srcs: ["Test.java"],
766 sdk_version: "none",
767 system_modules: "none",
768 }
769 `)
770
Paul Duffin1356d8c2020-02-25 19:26:33 +0000771 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000772 checkAndroidBpContents(`
773// This is auto-generated. DO NOT EDIT.
774
775java_import {
776 name: "mysdk_system-module@current",
777 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000778 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000779 device_supported: false,
780 host_supported: true,
781 jars: ["java/system-module.jar"],
782}
783
784java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000785 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000786 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000787 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000788 device_supported: false,
789 host_supported: true,
790 jars: ["java/system-module.jar"],
791}
792
793java_system_modules_import {
794 name: "mysdk_my-system-modules@current",
795 sdk_member_name: "my-system-modules",
796 device_supported: false,
797 host_supported: true,
798 libs: ["mysdk_system-module@current"],
799}
800
801java_system_modules_import {
802 name: "my-system-modules",
803 prefer: false,
804 device_supported: false,
805 host_supported: true,
Paul Duffin72910952020-01-20 18:16:30 +0000806 libs: ["mysdk_system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000807}
808
809sdk_snapshot {
810 name: "mysdk@current",
811 device_supported: false,
812 host_supported: true,
813 java_system_modules: ["mysdk_my-system-modules@current"],
814}
815`),
816 checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
817 )
818}
Paul Duffin865171e2020-03-02 18:38:15 +0000819
820func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
821 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
822 SkipIfNotLinux(t)
823
824 result := testSdkWithJava(t, `
825 module_exports {
826 name: "myexports",
827 host_supported: true,
828 java_libs: ["myjavalib"],
829 target: {
830 android: {
831 java_header_libs: ["androidjavalib"],
832 },
833 host: {
834 java_header_libs: ["hostjavalib"],
835 },
836 },
837 }
838
839 java_library {
840 name: "myjavalib",
841 host_supported: true,
842 srcs: ["Test.java"],
843 system_modules: "none",
844 sdk_version: "none",
845 }
846
847 java_library {
848 name: "androidjavalib",
849 srcs: ["Test.java"],
850 system_modules: "none",
851 sdk_version: "none",
852 }
853
854 java_library_host {
855 name: "hostjavalib",
856 srcs: ["Test.java"],
857 }
858 `)
859
860 result.CheckSnapshot("myexports", "",
861 checkAndroidBpContents(`
862// This is auto-generated. DO NOT EDIT.
863
864java_import {
865 name: "myexports_hostjavalib@current",
866 sdk_member_name: "hostjavalib",
867 device_supported: false,
868 host_supported: true,
869 jars: ["java/hostjavalib.jar"],
870}
871
872java_import {
873 name: "hostjavalib",
874 prefer: false,
875 device_supported: false,
876 host_supported: true,
877 jars: ["java/hostjavalib.jar"],
878}
879
880java_import {
881 name: "myexports_androidjavalib@current",
882 sdk_member_name: "androidjavalib",
883 jars: ["java/androidjavalib.jar"],
884}
885
886java_import {
887 name: "androidjavalib",
888 prefer: false,
889 jars: ["java/androidjavalib.jar"],
890}
891
892java_import {
893 name: "myexports_myjavalib@current",
894 sdk_member_name: "myjavalib",
895 host_supported: true,
896 target: {
897 android: {
898 jars: ["java/android/myjavalib.jar"],
899 },
900 linux_glibc: {
901 jars: ["java/linux_glibc/myjavalib.jar"],
902 },
903 },
904}
905
906java_import {
907 name: "myjavalib",
908 prefer: false,
909 host_supported: true,
910 target: {
911 android: {
912 jars: ["java/android/myjavalib.jar"],
913 },
914 linux_glibc: {
915 jars: ["java/linux_glibc/myjavalib.jar"],
916 },
917 },
918}
919
920module_exports_snapshot {
921 name: "myexports@current",
922 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +0000923 java_libs: ["myexports_myjavalib@current"],
Paul Duffin865171e2020-03-02 18:38:15 +0000924 target: {
925 android: {
926 java_header_libs: ["myexports_androidjavalib@current"],
927 },
928 linux_glibc: {
929 java_header_libs: ["myexports_hostjavalib@current"],
930 },
931 },
Paul Duffin865171e2020-03-02 18:38:15 +0000932}
933`),
934 checkAllCopyRules(`
935.intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
936.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
937.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
938.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
939`),
940 )
941}