blob: 77a4e94b3e0b4e7f65b3fe6d56216a7b3e49a055 [file] [log] [blame]
Paul Duffina80fdec2019-12-03 15:25:00 +00001// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sdk
16
17import (
18 "testing"
19)
20
Paul Duffind835daa2019-11-30 17:49:09 +000021func testSdkWithJava(t *testing.T, bp string) *testSdkResult {
22 t.Helper()
23
24 fs := map[string][]byte{
25 "Test.java": nil,
26 "aidl/foo/bar/Test.aidl": nil,
Paul Duffindd46f712020-02-10 13:37:10 +000027
28 // For java_sdk_library
29 "api/current.txt": nil,
30 "api/removed.txt": nil,
31 "api/system-current.txt": nil,
32 "api/system-removed.txt": nil,
33 "api/test-current.txt": nil,
34 "api/test-removed.txt": nil,
Paul Duffin8f265b92020-04-28 14:13:56 +010035 "api/module-lib-current.txt": nil,
36 "api/module-lib-removed.txt": nil,
Paul Duffin0c5bae52020-06-02 13:00:08 +010037 "api/system-server-current.txt": nil,
38 "api/system-server-removed.txt": nil,
Paul Duffindd46f712020-02-10 13:37:10 +000039 "build/soong/scripts/gen-java-current-api-files.sh": nil,
Paul Duffind835daa2019-11-30 17:49:09 +000040 }
Paul Duffindd46f712020-02-10 13:37:10 +000041
42 // for java_sdk_library tests
43 bp = `
44java_system_modules_import {
45 name: "core-current-stubs-system-modules",
46}
47java_system_modules_import {
Pete Gillin1f41dbf2020-06-02 15:59:45 +010048 name: "legacy-core-platform-api-stubs-system-modules",
Paul Duffindd46f712020-02-10 13:37:10 +000049}
50java_import {
Pete Gillin1f41dbf2020-06-02 15:59:45 +010051 name: "legacy.core.platform.api.stubs",
Paul Duffindd46f712020-02-10 13:37:10 +000052}
Paul Duffin260bd312020-04-28 14:15:17 +010053java_import {
Paul Duffindd46f712020-02-10 13:37:10 +000054 name: "android_stubs_current",
55}
Paul Duffin260bd312020-04-28 14:15:17 +010056java_import {
Paul Duffindd46f712020-02-10 13:37:10 +000057 name: "android_system_stubs_current",
58}
Paul Duffin260bd312020-04-28 14:15:17 +010059java_import {
Paul Duffindd46f712020-02-10 13:37:10 +000060 name: "android_test_stubs_current",
61}
62java_import {
Paul Duffin8f265b92020-04-28 14:13:56 +010063 name: "android_module_lib_stubs_current",
64}
65java_import {
Paul Duffin0c5bae52020-06-02 13:00:08 +010066 name: "android_system_server_stubs_current",
67}
68java_import {
Paul Duffindd46f712020-02-10 13:37:10 +000069 name: "core-lambda-stubs",
70 sdk_version: "none",
71}
72java_import {
73 name: "ext",
74 sdk_version: "none",
75}
76java_import {
77 name: "framework",
78 sdk_version: "none",
79}
80` + bp
81
Paul Duffind835daa2019-11-30 17:49:09 +000082 return testSdkWithFs(t, bp, fs)
83}
84
Paul Duffina80fdec2019-12-03 15:25:00 +000085// Contains tests for SDK members provided by the java package.
86
87func TestBasicSdkWithJavaLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000088 result := testSdkWithJava(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000089 sdk {
90 name: "mysdk",
Jiyong Park0f80c182020-01-31 02:49:53 +090091 java_header_libs: ["sdkmember"],
Paul Duffina80fdec2019-12-03 15:25:00 +000092 }
93
94 sdk_snapshot {
95 name: "mysdk@1",
Paul Duffina0dbf432019-12-05 11:25:53 +000096 java_header_libs: ["sdkmember_mysdk_1"],
Paul Duffina80fdec2019-12-03 15:25:00 +000097 }
98
99 sdk_snapshot {
100 name: "mysdk@2",
Paul Duffina0dbf432019-12-05 11:25:53 +0000101 java_header_libs: ["sdkmember_mysdk_2"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000102 }
103
Jiyong Park0f80c182020-01-31 02:49:53 +0900104 java_library {
Paul Duffina80fdec2019-12-03 15:25:00 +0000105 name: "sdkmember",
Jiyong Park0f80c182020-01-31 02:49:53 +0900106 srcs: ["Test.java"],
107 system_modules: "none",
108 sdk_version: "none",
Paul Duffina80fdec2019-12-03 15:25:00 +0000109 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,
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000132 apex_available: [
133 "myapex",
134 "myapex2",
135 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000136 }
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
Paul Duffina0dbf432019-12-05 11:25:53 +0000166func 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000186 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000187 checkAndroidBpContents(`
188// This is auto-generated. DO NOT EDIT.
189
190java_import {
191 name: "mysdk_myjavalib@current",
192 sdk_member_name: "myjavalib",
193 jars: ["java/myjavalib.jar"],
194}
195
196java_import {
197 name: "myjavalib",
198 prefer: false,
199 jars: ["java/myjavalib.jar"],
200}
201
202sdk_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
210aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
211`),
212 )
213}
214
215func 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000241 result.CheckSnapshot("mysdk", "",
Paul Duffina0dbf432019-12-05 11:25:53 +0000242 checkAndroidBpContents(`
243// This is auto-generated. DO NOT EDIT.
244
245java_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
253java_import {
254 name: "myjavalib",
255 prefer: false,
256 device_supported: false,
257 host_supported: true,
258 jars: ["java/myjavalib.jar"],
259}
260
261sdk_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
270aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
271`),
272 )
273}
274
Paul Duffina04c1072020-03-02 10:16:35 +0000275func 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
300java_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
314java_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
328sdk_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
Paul Duffina0dbf432019-12-05 11:25:53 +0000341func TestSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000342 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000343 module_exports {
344 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000345 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000361 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000362 checkAndroidBpContents(`
363// This is auto-generated. DO NOT EDIT.
364
365java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000366 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000367 sdk_member_name: "myjavalib",
368 jars: ["java/myjavalib.jar"],
369}
370
371java_import {
372 name: "myjavalib",
373 prefer: false,
374 jars: ["java/myjavalib.jar"],
375}
376
Paul Duffine6029182019-12-16 17:43:48 +0000377module_exports_snapshot {
378 name: "myexports@current",
379 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000380}
381
382`),
383 checkAllCopyRules(`
Paul Duffina0dbf432019-12-05 11:25:53 +0000384.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/myjavalib.jar
Paul Duffina80fdec2019-12-03 15:25:00 +0000385aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
386`),
387 )
388}
389
Paul Duffina0dbf432019-12-05 11:25:53 +0000390func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000391 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
392 SkipIfNotLinux(t)
393
Paul Duffind835daa2019-11-30 17:49:09 +0000394 result := testSdkWithJava(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000395 module_exports {
396 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000397 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000416 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000417 checkAndroidBpContents(`
418// This is auto-generated. DO NOT EDIT.
419
420java_import {
Paul Duffine6029182019-12-16 17:43:48 +0000421 name: "myexports_myjavalib@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000422 sdk_member_name: "myjavalib",
423 device_supported: false,
424 host_supported: true,
425 jars: ["java/myjavalib.jar"],
426}
427
428java_import {
429 name: "myjavalib",
430 prefer: false,
431 device_supported: false,
432 host_supported: true,
433 jars: ["java/myjavalib.jar"],
434}
435
Paul Duffine6029182019-12-16 17:43:48 +0000436module_exports_snapshot {
437 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000438 device_supported: false,
439 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000440 java_libs: ["myexports_myjavalib@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000441}
442`),
443 checkAllCopyRules(`
444.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
445aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
446`),
447 )
448}
449
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000450func 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000467 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000468 checkAndroidBpContents(`
469// This is auto-generated. DO NOT EDIT.
470
471java_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
478java_test_import {
479 name: "myjavatests",
480 prefer: false,
481 jars: ["java/myjavatests.jar"],
482 test_config: "java/myjavatests-AndroidTest.xml",
483}
484
485module_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
497func 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000520 result.CheckSnapshot("myexports", "",
Paul Duffin1b82e6a2019-12-03 18:06:47 +0000521 checkAndroidBpContents(`
522// This is auto-generated. DO NOT EDIT.
523
524java_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
533java_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
542module_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
Paul Duffind835daa2019-11-30 17:49:09 +0000556func 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
Paul Duffina80fdec2019-12-03 15:25:00 +0000566// 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.
569func TestBasicSdkWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000570 testSdkWithDroidstubs(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000571 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
599func TestSnapshotWithDroidstubs(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000600 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000601 module_exports {
602 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000603 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000614 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000615 checkAndroidBpContents(`
616// This is auto-generated. DO NOT EDIT.
617
618prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000619 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000620 sdk_member_name: "myjavaapistubs",
621 srcs: ["java/myjavaapistubs_stubs_sources"],
622}
623
624prebuilt_stubs_sources {
625 name: "myjavaapistubs",
626 prefer: false,
627 srcs: ["java/myjavaapistubs_stubs_sources"],
628}
629
Paul Duffine6029182019-12-16 17:43:48 +0000630module_exports_snapshot {
631 name: "myexports@current",
632 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000633}
634
635`),
636 checkAllCopyRules(""),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100637 checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000638 )
639}
640
641func TestHostSnapshotWithDroidstubs(t *testing.T) {
642 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
643 SkipIfNotLinux(t)
644
Paul Duffind835daa2019-11-30 17:49:09 +0000645 result := testSdkWithDroidstubs(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000646 module_exports {
647 name: "myexports",
Paul Duffina80fdec2019-12-03 15:25:00 +0000648 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000663 result.CheckSnapshot("myexports", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000664 checkAndroidBpContents(`
665// This is auto-generated. DO NOT EDIT.
666
667prebuilt_stubs_sources {
Paul Duffine6029182019-12-16 17:43:48 +0000668 name: "myexports_myjavaapistubs@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000669 sdk_member_name: "myjavaapistubs",
670 device_supported: false,
671 host_supported: true,
672 srcs: ["java/myjavaapistubs_stubs_sources"],
673}
674
675prebuilt_stubs_sources {
676 name: "myjavaapistubs",
677 prefer: false,
678 device_supported: false,
679 host_supported: true,
680 srcs: ["java/myjavaapistubs_stubs_sources"],
681}
682
Paul Duffine6029182019-12-16 17:43:48 +0000683module_exports_snapshot {
684 name: "myexports@current",
Paul Duffina80fdec2019-12-03 15:25:00 +0000685 device_supported: false,
686 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000687 stubs_sources: ["myexports_myjavaapistubs@current"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000688}
689`),
690 checkAllCopyRules(""),
Paul Duffin3d1248c2020-04-09 00:10:17 +0100691 checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
Paul Duffina80fdec2019-12-03 15:25:00 +0000692 )
693}
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000694
695func TestSnapshotWithJavaSystemModules(t *testing.T) {
696 result := testSdkWithJava(t, `
697 sdk {
698 name: "mysdk",
Paul Duffin72910952020-01-20 18:16:30 +0000699 java_header_libs: ["exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000700 java_system_modules: ["my-system-modules"],
701 }
702
703 java_system_modules {
704 name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000705 libs: ["system-module", "exported-system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000706 }
707
708 java_library {
709 name: "system-module",
710 srcs: ["Test.java"],
711 sdk_version: "none",
712 system_modules: "none",
713 }
Paul Duffin72910952020-01-20 18:16:30 +0000714
715 java_library {
716 name: "exported-system-module",
717 srcs: ["Test.java"],
718 sdk_version: "none",
719 system_modules: "none",
720 }
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000721 `)
722
Paul Duffin1356d8c2020-02-25 19:26:33 +0000723 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000724 checkAndroidBpContents(`
725// This is auto-generated. DO NOT EDIT.
726
727java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000728 name: "mysdk_exported-system-module@current",
729 sdk_member_name: "exported-system-module",
730 jars: ["java/exported-system-module.jar"],
731}
732
733java_import {
734 name: "exported-system-module",
735 prefer: false,
736 jars: ["java/exported-system-module.jar"],
737}
738
739java_import {
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000740 name: "mysdk_system-module@current",
741 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000742 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000743 jars: ["java/system-module.jar"],
744}
745
746java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000747 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000748 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000749 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000750 jars: ["java/system-module.jar"],
751}
752
753java_system_modules_import {
754 name: "mysdk_my-system-modules@current",
755 sdk_member_name: "my-system-modules",
Paul Duffin72910952020-01-20 18:16:30 +0000756 libs: [
757 "mysdk_system-module@current",
758 "mysdk_exported-system-module@current",
759 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000760}
761
762java_system_modules_import {
763 name: "my-system-modules",
764 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000765 libs: [
766 "mysdk_system-module",
767 "exported-system-module",
768 ],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000769}
770
771sdk_snapshot {
772 name: "mysdk@current",
Paul Duffin72910952020-01-20 18:16:30 +0000773 java_header_libs: ["mysdk_exported-system-module@current"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000774 java_system_modules: ["mysdk_my-system-modules@current"],
775}
776`),
Paul Duffin72910952020-01-20 18:16:30 +0000777 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`),
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000781 )
782}
783
784func 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
Paul Duffin1356d8c2020-02-25 19:26:33 +0000813 result.CheckSnapshot("mysdk", "",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000814 checkAndroidBpContents(`
815// This is auto-generated. DO NOT EDIT.
816
817java_import {
818 name: "mysdk_system-module@current",
819 sdk_member_name: "system-module",
Paul Duffin72910952020-01-20 18:16:30 +0000820 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000821 device_supported: false,
822 host_supported: true,
823 jars: ["java/system-module.jar"],
824}
825
826java_import {
Paul Duffin72910952020-01-20 18:16:30 +0000827 name: "mysdk_system-module",
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000828 prefer: false,
Paul Duffin72910952020-01-20 18:16:30 +0000829 visibility: ["//visibility:private"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000830 device_supported: false,
831 host_supported: true,
832 jars: ["java/system-module.jar"],
833}
834
835java_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
843java_system_modules_import {
844 name: "my-system-modules",
845 prefer: false,
846 device_supported: false,
847 host_supported: true,
Paul Duffin72910952020-01-20 18:16:30 +0000848 libs: ["mysdk_system-module"],
Paul Duffin7b81f5e2020-01-13 21:03:22 +0000849}
850
851sdk_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}
Paul Duffin865171e2020-03-02 18:38:15 +0000861
862func 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
906java_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
914java_import {
915 name: "hostjavalib",
916 prefer: false,
917 device_supported: false,
918 host_supported: true,
919 jars: ["java/hostjavalib.jar"],
920}
921
922java_import {
923 name: "myexports_androidjavalib@current",
924 sdk_member_name: "androidjavalib",
925 jars: ["java/androidjavalib.jar"],
926}
927
928java_import {
929 name: "androidjavalib",
930 prefer: false,
931 jars: ["java/androidjavalib.jar"],
932}
933
934java_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
948java_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
962module_exports_snapshot {
963 name: "myexports@current",
964 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +0000965 java_libs: ["myexports_myjavalib@current"],
Paul Duffin865171e2020-03-02 18:38:15 +0000966 target: {
967 android: {
968 java_header_libs: ["myexports_androidjavalib@current"],
969 },
970 linux_glibc: {
971 java_header_libs: ["myexports_hostjavalib@current"],
972 },
973 },
Paul Duffin865171e2020-03-02 18:38:15 +0000974}
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}
Paul Duffindd46f712020-02-10 13:37:10 +0000984
985func 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",
Paul Duffind7eb1c22020-05-26 20:57:10 +0100997 shared_library: false,
Paul Duffin4911a892020-04-29 23:35:13 +0100998 stubs_library_visibility: ["//other"],
999 stubs_source_visibility: ["//another"],
Paul Duffindd46f712020-02-10 13:37:10 +00001000 }
1001 `)
1002
1003 result.CheckSnapshot("mysdk", "",
1004 checkAndroidBpContents(`
1005// This is auto-generated. DO NOT EDIT.
1006
1007java_sdk_library_import {
1008 name: "mysdk_myjavalib@current",
1009 sdk_member_name: "myjavalib",
1010 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001011 shared_library: false,
Paul Duffindd46f712020-02-10 13:37:10 +00001012 public: {
1013 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001014 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +01001015 current_api: "sdk_library/public/myjavalib.txt",
1016 removed_api: "sdk_library/public/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +00001017 sdk_version: "current",
1018 },
1019 system: {
1020 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001021 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +01001022 current_api: "sdk_library/system/myjavalib.txt",
1023 removed_api: "sdk_library/system/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +00001024 sdk_version: "system_current",
1025 },
1026 test: {
1027 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001028 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +01001029 current_api: "sdk_library/test/myjavalib.txt",
1030 removed_api: "sdk_library/test/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +00001031 sdk_version: "test_current",
1032 },
1033}
1034
1035java_sdk_library_import {
1036 name: "myjavalib",
1037 prefer: false,
1038 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001039 shared_library: false,
Paul Duffindd46f712020-02-10 13:37:10 +00001040 public: {
1041 jars: ["sdk_library/public/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001042 stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +01001043 current_api: "sdk_library/public/myjavalib.txt",
1044 removed_api: "sdk_library/public/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +00001045 sdk_version: "current",
1046 },
1047 system: {
1048 jars: ["sdk_library/system/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001049 stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +01001050 current_api: "sdk_library/system/myjavalib.txt",
1051 removed_api: "sdk_library/system/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +00001052 sdk_version: "system_current",
1053 },
1054 test: {
1055 jars: ["sdk_library/test/myjavalib-stubs.jar"],
Paul Duffin3d1248c2020-04-09 00:10:17 +01001056 stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
Paul Duffin1fd005d2020-04-09 01:08:11 +01001057 current_api: "sdk_library/test/myjavalib.txt",
1058 removed_api: "sdk_library/test/myjavalib-removed.txt",
Paul Duffindd46f712020-02-10 13:37:10 +00001059 sdk_version: "test_current",
1060 },
1061}
1062
1063sdk_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
Paul Duffin1fd005d2020-04-09 01:08:11 +01001070.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001071.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +00001072.intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
Paul Duffin1fd005d2020-04-09 01:08:11 +01001073.intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001074.intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +00001075.intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar
Paul Duffin1fd005d2020-04-09 01:08:11 +01001076.intermediates/myjavalib.stubs.source.test/android_common/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001077.intermediates/myjavalib.stubs.source.test/android_common/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt
Paul Duffindd46f712020-02-10 13:37:10 +00001078`),
Paul Duffin3d1248c2020-04-09 00:10:17 +01001079 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"),
Paul Duffindd46f712020-02-10 13:37:10 +00001083 )
1084}
Paul Duffin3375e352020-04-28 10:44:03 +01001085
Paul Duffin780c5f42020-05-12 15:52:55 +01001086func 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
1105java_sdk_library_import {
1106 name: "mysdk_myjavalib@current",
1107 sdk_member_name: "myjavalib",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001108 shared_library: true,
Paul Duffin780c5f42020-05-12 15:52:55 +01001109 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
1118java_sdk_library_import {
1119 name: "myjavalib",
1120 prefer: false,
Paul Duffind7eb1c22020-05-26 20:57:10 +01001121 shared_library: true,
Paul Duffin780c5f42020-05-12 15:52:55 +01001122 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
1131sdk_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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001139.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin780c5f42020-05-12 15:52:55 +01001140`),
1141 checkMergeZips(
1142 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1143 ),
1144 )
1145}
1146
Paul Duffin87a05a32020-05-12 11:50:28 +01001147func 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
1169java_sdk_library_import {
1170 name: "mysdk_myjavalib@current",
1171 sdk_member_name: "myjavalib",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001172 shared_library: true,
Paul Duffin87a05a32020-05-12 11:50:28 +01001173 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
1182java_sdk_library_import {
1183 name: "myjavalib",
1184 prefer: false,
Paul Duffind7eb1c22020-05-26 20:57:10 +01001185 shared_library: true,
Paul Duffin87a05a32020-05-12 11:50:28 +01001186 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
1195sdk_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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001203.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin87a05a32020-05-12 11:50:28 +01001204`),
1205 checkMergeZips(
1206 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1207 ),
1208 )
1209}
1210
1211func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
Paul Duffin3375e352020-04-28 10:44:03 +01001212 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
1236java_sdk_library_import {
1237 name: "mysdk_myjavalib@current",
1238 sdk_member_name: "myjavalib",
1239 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001240 shared_library: true,
Paul Duffin3375e352020-04-28 10:44:03 +01001241 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
1257java_sdk_library_import {
1258 name: "myjavalib",
1259 prefer: false,
1260 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001261 shared_library: true,
Paul Duffin3375e352020-04-28 10:44:03 +01001262 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
1278sdk_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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001286.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin3375e352020-04-28 10:44:03 +01001287.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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001289.intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffin3375e352020-04-28 10:44:03 +01001290`),
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}
Paul Duffin8f265b92020-04-28 14:13:56 +01001297
1298func 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
1326java_sdk_library_import {
1327 name: "mysdk_myjavalib@current",
1328 sdk_member_name: "myjavalib",
1329 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001330 shared_library: true,
Paul Duffin8f265b92020-04-28 14:13:56 +01001331 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: {
Paul Duffin6b836ba2020-05-13 19:19:49 +01001346 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",
Paul Duffin8f265b92020-04-28 14:13:56 +01001350 sdk_version: "module_current",
1351 },
1352}
1353
1354java_sdk_library_import {
1355 name: "myjavalib",
1356 prefer: false,
1357 apex_available: ["//apex_available:anyapex"],
Paul Duffind7eb1c22020-05-26 20:57:10 +01001358 shared_library: true,
Paul Duffin8f265b92020-04-28 14:13:56 +01001359 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: {
Paul Duffin6b836ba2020-05-13 19:19:49 +01001374 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",
Paul Duffin8f265b92020-04-28 14:13:56 +01001378 sdk_version: "module_current",
1379 },
1380}
1381
1382sdk_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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001390.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffin8f265b92020-04-28 14:13:56 +01001391.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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001393.intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
Paul Duffin6b836ba2020-05-13 19:19:49 +01001394.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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001396.intermediates/myjavalib.api.module_lib/android_common/myjavalib.api.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
Paul Duffin8f265b92020-04-28 14:13:56 +01001397`),
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",
Paul Duffin6b836ba2020-05-13 19:19:49 +01001401 ".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
Paul Duffin8f265b92020-04-28 14:13:56 +01001402 ),
1403 )
1404}
Paul Duffinf7a64332020-05-13 16:54:55 +01001405
Paul Duffin0c5bae52020-06-02 13:00:08 +01001406func 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
1431java_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
1452java_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
1473sdk_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
Paul Duffinf7a64332020-05-13 16:54:55 +01001493func 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
1516java_sdk_library_import {
1517 name: "mysdk_myjavalib@current",
1518 sdk_member_name: "myjavalib",
1519 apex_available: ["//apex_available:anyapex"],
1520 naming_scheme: "framework-modules",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001521 shared_library: true,
Paul Duffinf7a64332020-05-13 16:54:55 +01001522 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
1531java_sdk_library_import {
1532 name: "myjavalib",
1533 prefer: false,
1534 apex_available: ["//apex_available:anyapex"],
1535 naming_scheme: "framework-modules",
Paul Duffind7eb1c22020-05-26 20:57:10 +01001536 shared_library: true,
Paul Duffinf7a64332020-05-13 16:54:55 +01001537 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
1546sdk_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
Paul Duffin3dbf9fd2020-06-02 13:00:02 +01001554.intermediates/myjavalib-stubs-srcs-publicapi/android_common/myjavalib-stubs-srcs-publicapi_removed.txt -> sdk_library/public/myjavalib-removed.txt
Paul Duffinf7a64332020-05-13 16:54:55 +01001555`),
1556 checkMergeZips(
1557 ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1558 ),
1559 )
1560}