blob: 9fea260499474220b4573e43a904fb8501b3cd29 [file] [log] [blame]
Jiyong Parkd1063c12019-07-17 20:08:41 +09001// Copyright 2019 Google Inc. All rights reserved.
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 (
Jiyong Park232e7852019-11-04 12:23:40 +090018 "path/filepath"
Jiyong Parkd1063c12019-07-17 20:08:41 +090019 "testing"
20
21 "android/soong/android"
Jiyong Parkd1063c12019-07-17 20:08:41 +090022 "android/soong/cc"
Jiyong Parkd1063c12019-07-17 20:08:41 +090023)
24
Paul Duffin82d90432019-11-30 09:24:33 +000025// Needed in an _test.go file in this package to ensure tests run correctly, particularly in IDE.
26func TestMain(m *testing.M) {
27 runTestWithBuildDir(m)
Jiyong Parkd1063c12019-07-17 20:08:41 +090028}
29
30func TestBasicSdkWithJava(t *testing.T) {
31 ctx, _ := testSdk(t, `
32 sdk {
Jiyong Park9b409bc2019-10-11 14:59:13 +090033 name: "mysdk",
Paul Duffin13879572019-11-28 14:31:38 +000034 java_libs: ["myjavalib"],
Jiyong Park9b409bc2019-10-11 14:59:13 +090035 }
36
37 sdk_snapshot {
38 name: "mysdk@1",
Jiyong Parkd1063c12019-07-17 20:08:41 +090039 java_libs: ["sdkmember_mysdk_1"],
40 }
41
Jiyong Park9b409bc2019-10-11 14:59:13 +090042 sdk_snapshot {
43 name: "mysdk@2",
Jiyong Parkd1063c12019-07-17 20:08:41 +090044 java_libs: ["sdkmember_mysdk_2"],
45 }
46
47 java_import {
48 name: "sdkmember",
49 prefer: false,
50 host_supported: true,
51 }
52
53 java_import {
54 name: "sdkmember_mysdk_1",
55 sdk_member_name: "sdkmember",
56 host_supported: true,
57 }
58
59 java_import {
60 name: "sdkmember_mysdk_2",
61 sdk_member_name: "sdkmember",
62 host_supported: true,
63 }
64
65 java_library {
66 name: "myjavalib",
67 srcs: ["Test.java"],
68 libs: ["sdkmember"],
69 system_modules: "none",
70 sdk_version: "none",
71 compile_dex: true,
72 host_supported: true,
73 }
74
75 apex {
76 name: "myapex",
77 java_libs: ["myjavalib"],
Jiyong Park9b409bc2019-10-11 14:59:13 +090078 uses_sdks: ["mysdk@1"],
Jiyong Parkd1063c12019-07-17 20:08:41 +090079 key: "myapex.key",
80 certificate: ":myapex.cert",
81 }
82
83 apex {
84 name: "myapex2",
85 java_libs: ["myjavalib"],
Jiyong Park9b409bc2019-10-11 14:59:13 +090086 uses_sdks: ["mysdk@2"],
Jiyong Parkd1063c12019-07-17 20:08:41 +090087 key: "myapex.key",
88 certificate: ":myapex.cert",
89 }
90 `)
91
92 sdkMemberV1 := ctx.ModuleForTests("sdkmember_mysdk_1", "android_common_myapex").Rule("combineJar").Output
93 sdkMemberV2 := ctx.ModuleForTests("sdkmember_mysdk_2", "android_common_myapex2").Rule("combineJar").Output
94
95 javalibForMyApex := ctx.ModuleForTests("myjavalib", "android_common_myapex")
96 javalibForMyApex2 := ctx.ModuleForTests("myjavalib", "android_common_myapex2")
97
98 // Depending on the uses_sdks value, different libs are linked
99 ensureListContains(t, pathsToStrings(javalibForMyApex.Rule("javac").Implicits), sdkMemberV1.String())
100 ensureListContains(t, pathsToStrings(javalibForMyApex2.Rule("javac").Implicits), sdkMemberV2.String())
101}
102
103func TestBasicSdkWithCc(t *testing.T) {
104 ctx, _ := testSdk(t, `
105 sdk {
Jiyong Park9b409bc2019-10-11 14:59:13 +0900106 name: "mysdk",
107 native_shared_libs: ["sdkmember"],
108 }
109
110 sdk_snapshot {
111 name: "mysdk@1",
Jiyong Parkd1063c12019-07-17 20:08:41 +0900112 native_shared_libs: ["sdkmember_mysdk_1"],
113 }
114
Jiyong Park9b409bc2019-10-11 14:59:13 +0900115 sdk_snapshot {
116 name: "mysdk@2",
Jiyong Parkd1063c12019-07-17 20:08:41 +0900117 native_shared_libs: ["sdkmember_mysdk_2"],
118 }
119
120 cc_prebuilt_library_shared {
121 name: "sdkmember",
122 srcs: ["libfoo.so"],
123 prefer: false,
124 system_shared_libs: [],
125 stl: "none",
126 }
127
128 cc_prebuilt_library_shared {
129 name: "sdkmember_mysdk_1",
130 sdk_member_name: "sdkmember",
131 srcs: ["libfoo.so"],
132 system_shared_libs: [],
133 stl: "none",
134 }
135
136 cc_prebuilt_library_shared {
137 name: "sdkmember_mysdk_2",
138 sdk_member_name: "sdkmember",
139 srcs: ["libfoo.so"],
140 system_shared_libs: [],
141 stl: "none",
142 }
143
144 cc_library_shared {
145 name: "mycpplib",
146 srcs: ["Test.cpp"],
147 shared_libs: ["sdkmember"],
148 system_shared_libs: [],
149 stl: "none",
150 }
151
152 apex {
153 name: "myapex",
154 native_shared_libs: ["mycpplib"],
Jiyong Park9b409bc2019-10-11 14:59:13 +0900155 uses_sdks: ["mysdk@1"],
Jiyong Parkd1063c12019-07-17 20:08:41 +0900156 key: "myapex.key",
157 certificate: ":myapex.cert",
158 }
159
160 apex {
161 name: "myapex2",
162 native_shared_libs: ["mycpplib"],
Jiyong Park9b409bc2019-10-11 14:59:13 +0900163 uses_sdks: ["mysdk@2"],
Jiyong Parkd1063c12019-07-17 20:08:41 +0900164 key: "myapex.key",
165 certificate: ":myapex.cert",
166 }
167 `)
168
169 sdkMemberV1 := ctx.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_core_shared_myapex").Rule("toc").Output
170 sdkMemberV2 := ctx.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_core_shared_myapex2").Rule("toc").Output
171
172 cpplibForMyApex := ctx.ModuleForTests("mycpplib", "android_arm64_armv8-a_core_shared_myapex")
173 cpplibForMyApex2 := ctx.ModuleForTests("mycpplib", "android_arm64_armv8-a_core_shared_myapex2")
174
175 // Depending on the uses_sdks value, different libs are linked
176 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
177 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
178}
179
Paul Duffin91547182019-11-12 19:39:36 +0000180// Note: This test does not verify that a droidstubs can be referenced, either
181// directly or indirectly from an APEX as droidstubs can never be a part of an
182// apex.
183func TestBasicSdkWithDroidstubs(t *testing.T) {
184 testSdk(t, `
185 sdk {
186 name: "mysdk",
187 stubs_sources: ["mystub"],
188 }
189 sdk_snapshot {
190 name: "mysdk@10",
191 stubs_sources: ["mystub_mysdk@10"],
192 }
193 prebuilt_stubs_sources {
194 name: "mystub_mysdk@10",
195 sdk_member_name: "mystub",
196 srcs: ["stubs-sources/foo/bar/Foo.java"],
197 }
198 droidstubs {
199 name: "mystub",
200 srcs: ["foo/bar/Foo.java"],
201 sdk_version: "none",
202 system_modules: "none",
203 }
204 java_library {
205 name: "myjavalib",
206 srcs: [":mystub"],
207 sdk_version: "none",
208 system_modules: "none",
209 }
210 `)
211}
212
Jiyong Parka7bc8ad2019-10-15 15:20:07 +0900213func TestDepNotInRequiredSdks(t *testing.T) {
214 testSdkError(t, `module "myjavalib".*depends on "otherlib".*that isn't part of the required SDKs:.*`, `
215 sdk {
216 name: "mysdk",
217 java_libs: ["sdkmember"],
218 }
219
220 sdk_snapshot {
221 name: "mysdk@1",
222 java_libs: ["sdkmember_mysdk_1"],
223 }
224
225 java_import {
226 name: "sdkmember",
227 prefer: false,
228 host_supported: true,
229 }
230
231 java_import {
232 name: "sdkmember_mysdk_1",
233 sdk_member_name: "sdkmember",
234 host_supported: true,
235 }
236
237 java_library {
238 name: "myjavalib",
239 srcs: ["Test.java"],
240 libs: [
241 "sdkmember",
242 "otherlib",
243 ],
244 system_modules: "none",
245 sdk_version: "none",
246 compile_dex: true,
247 host_supported: true,
248 }
249
250 // this lib is no in mysdk
251 java_library {
252 name: "otherlib",
253 srcs: ["Test.java"],
254 system_modules: "none",
255 sdk_version: "none",
256 compile_dex: true,
257 host_supported: true,
258 }
259
260 apex {
261 name: "myapex",
262 java_libs: ["myjavalib"],
263 uses_sdks: ["mysdk@1"],
264 key: "myapex.key",
265 certificate: ":myapex.cert",
266 }
267 `)
268}
269
Jiyong Park100f3fd2019-11-06 16:03:32 +0900270func TestSdkIsCompileMultilibBoth(t *testing.T) {
271 ctx, _ := testSdk(t, `
272 sdk {
273 name: "mysdk",
274 native_shared_libs: ["sdkmember"],
275 }
276
277 cc_library_shared {
278 name: "sdkmember",
279 srcs: ["Test.cpp"],
280 system_shared_libs: [],
281 stl: "none",
282 }
283 `)
284
285 armOutput := ctx.ModuleForTests("sdkmember", "android_arm_armv7-a-neon_core_shared").Module().(*cc.Module).OutputFile()
286 arm64Output := ctx.ModuleForTests("sdkmember", "android_arm64_armv8-a_core_shared").Module().(*cc.Module).OutputFile()
287
288 var inputs []string
289 buildParams := ctx.ModuleForTests("mysdk", "android_common").Module().BuildParamsForTests()
290 for _, bp := range buildParams {
Jiyong Park232e7852019-11-04 12:23:40 +0900291 if bp.Input != nil {
292 inputs = append(inputs, bp.Input.String())
293 }
Jiyong Park100f3fd2019-11-06 16:03:32 +0900294 }
295
296 // ensure that both 32/64 outputs are inputs of the sdk snapshot
297 ensureListContains(t, inputs, armOutput.String())
298 ensureListContains(t, inputs, arm64Output.String())
299}
300
Jiyong Park232e7852019-11-04 12:23:40 +0900301func TestSnapshot(t *testing.T) {
302 ctx, config := testSdk(t, `
303 sdk {
304 name: "mysdk",
305 java_libs: ["myjavalib"],
306 native_shared_libs: ["mynativelib"],
Paul Duffin91547182019-11-12 19:39:36 +0000307 stubs_sources: ["myjavaapistubs"],
Jiyong Park232e7852019-11-04 12:23:40 +0900308 }
309
310 java_library {
311 name: "myjavalib",
312 srcs: ["Test.java"],
313 aidl: {
314 export_include_dirs: ["aidl"],
315 },
316 system_modules: "none",
317 sdk_version: "none",
318 compile_dex: true,
319 host_supported: true,
320 }
321
322 cc_library_shared {
323 name: "mynativelib",
324 srcs: [
325 "Test.cpp",
326 "aidl/foo/bar/Test.aidl",
327 ],
328 export_include_dirs: ["include"],
329 aidl: {
330 export_aidl_headers: true,
331 },
332 system_shared_libs: [],
333 stl: "none",
334 }
Paul Duffin91547182019-11-12 19:39:36 +0000335
336 droidstubs {
337 name: "myjavaapistubs",
338 srcs: ["foo/bar/Foo.java"],
339 system_modules: "none",
340 sdk_version: "none",
341 }
Jiyong Park232e7852019-11-04 12:23:40 +0900342 `)
343
Paul Duffinac37c502019-11-26 18:02:20 +0000344 sdk := ctx.ModuleForTests("mysdk", "android_common").Module().(*sdk)
345
346 checkSnapshotAndroidBpContents(t, sdk, `// This is auto-generated. DO NOT EDIT.
347
348java_import {
349 name: "mysdk_myjavalib@current",
350 sdk_member_name: "myjavalib",
351 jars: ["java/myjavalib.jar"],
352}
353
354java_import {
355 name: "myjavalib",
356 prefer: false,
357 jars: ["java/myjavalib.jar"],
358}
359
360prebuilt_stubs_sources {
361 name: "mysdk_myjavaapistubs@current",
362 sdk_member_name: "myjavaapistubs",
363 srcs: ["java/myjavaapistubs_stubs_sources"],
364}
365
366prebuilt_stubs_sources {
367 name: "myjavaapistubs",
Paul Duffinac37c502019-11-26 18:02:20 +0000368 prefer: false,
Paul Duffinb1a88132019-11-26 21:55:37 +0000369 srcs: ["java/myjavaapistubs_stubs_sources"],
Paul Duffinac37c502019-11-26 18:02:20 +0000370}
371
372cc_prebuilt_library_shared {
373 name: "mysdk_mynativelib@current",
374 sdk_member_name: "mynativelib",
375 arch: {
376 arm64: {
377 srcs: ["arm64/lib/mynativelib.so"],
378 export_include_dirs: [
379 "arm64/include/include",
380 "arm64/include_gen/mynativelib",
381 ],
382 },
383 arm: {
384 srcs: ["arm/lib/mynativelib.so"],
385 export_include_dirs: [
386 "arm/include/include",
387 "arm/include_gen/mynativelib",
388 ],
389 },
390 },
391 stl: "none",
392 system_shared_libs: [],
393}
394
395cc_prebuilt_library_shared {
396 name: "mynativelib",
397 prefer: false,
398 arch: {
399 arm64: {
400 srcs: ["arm64/lib/mynativelib.so"],
401 export_include_dirs: [
402 "arm64/include/include",
403 "arm64/include_gen/mynativelib",
404 ],
405 },
406 arm: {
407 srcs: ["arm/lib/mynativelib.so"],
408 export_include_dirs: [
409 "arm/include/include",
410 "arm/include_gen/mynativelib",
411 ],
412 },
413 },
414 stl: "none",
415 system_shared_libs: [],
416}
417
418sdk_snapshot {
419 name: "mysdk@current",
Paul Duffinb645ec82019-11-27 17:43:54 +0000420 java_libs: ["mysdk_myjavalib@current"],
421 stubs_sources: ["mysdk_myjavaapistubs@current"],
422 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffinac37c502019-11-26 18:02:20 +0000423}
424
425`)
426
Jiyong Park232e7852019-11-04 12:23:40 +0900427 var copySrcs []string
428 var copyDests []string
Paul Duffinac37c502019-11-26 18:02:20 +0000429 buildParams := sdk.BuildParamsForTests()
Paul Duffin375058f2019-11-29 20:17:53 +0000430 var mergeZipInputs []string
431 var intermediateZip string
432 var outputZip string
Jiyong Park232e7852019-11-04 12:23:40 +0900433 for _, bp := range buildParams {
Paul Duffin91547182019-11-12 19:39:36 +0000434 ruleString := bp.Rule.String()
Paul Duffin375058f2019-11-29 20:17:53 +0000435 if ruleString == android.Cp.String() {
Jiyong Park232e7852019-11-04 12:23:40 +0900436 copySrcs = append(copySrcs, bp.Input.String())
437 copyDests = append(copyDests, bp.Output.Rel()) // rooted at the snapshot root
Paul Duffin375058f2019-11-29 20:17:53 +0000438 } else if ruleString == zipFiles.String() {
439 intermediateZip = bp.Output.String()
440 } else if ruleString == mergeZips.String() {
441 input := bp.Input.String()
442 if intermediateZip != input {
443 t.Errorf("Intermediate zip %s is not an input to merge_zips, %s is used instead", intermediateZip, input)
444 }
445 mergeZipInputs = bp.Inputs.Strings()
446 outputZip = bp.Output.String()
Jiyong Park232e7852019-11-04 12:23:40 +0900447 }
448 }
449
450 buildDir := config.BuildDir()
451 ensureListContains(t, copySrcs, "aidl/foo/bar/Test.aidl")
452 ensureListContains(t, copySrcs, "include/Test.h")
453 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/BnTest.h"))
454 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/BpTest.h"))
455 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/Test.h"))
456 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar"))
457 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/android_arm64_armv8-a_core_shared/mynativelib.so"))
458
459 ensureListContains(t, copyDests, "aidl/aidl/foo/bar/Test.aidl")
460 ensureListContains(t, copyDests, "arm64/include/include/Test.h")
461 ensureListContains(t, copyDests, "arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h")
462 ensureListContains(t, copyDests, "arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h")
463 ensureListContains(t, copyDests, "arm64/include_gen/mynativelib/aidl/foo/bar/Test.h")
464 ensureListContains(t, copyDests, "java/myjavalib.jar")
465 ensureListContains(t, copyDests, "arm64/lib/mynativelib.so")
Paul Duffin91547182019-11-12 19:39:36 +0000466
Paul Duffin375058f2019-11-29 20:17:53 +0000467 expectedOutputZip := filepath.Join(buildDir, ".intermediates/mysdk/android_common/mysdk-current.zip")
468 expectedRepackagedZip := filepath.Join(buildDir, ".intermediates/mysdk/android_common/tmp/java/myjavaapistubs_stubs_sources.zip")
469
Paul Duffin91547182019-11-12 19:39:36 +0000470 // Ensure that the droidstubs .srcjar as repackaged into a temporary zip file
471 // and then merged together with the intermediate snapshot zip.
Paul Duffin375058f2019-11-29 20:17:53 +0000472 ensureListContains(t, mergeZipInputs, expectedRepackagedZip)
473 if outputZip != expectedOutputZip {
474 t.Errorf("Expected snapshot output to be %q but was %q", expectedOutputZip, outputZip)
Paul Duffin91547182019-11-12 19:39:36 +0000475 }
Jiyong Park232e7852019-11-04 12:23:40 +0900476}
477
Paul Duffine44358f2019-11-26 18:04:12 +0000478func TestHostSnapshot(t *testing.T) {
Paul Duffin46fc58e2019-12-03 15:40:55 +0000479 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
480 SkipIfNotLinux(t)
481
Paul Duffine44358f2019-11-26 18:04:12 +0000482 ctx, config := testSdk(t, `
483 sdk {
484 name: "mysdk",
485 device_supported: false,
486 host_supported: true,
487 java_libs: ["myjavalib"],
488 native_shared_libs: ["mynativelib"],
489 stubs_sources: ["myjavaapistubs"],
490 }
491
492 java_library {
493 name: "myjavalib",
494 device_supported: false,
495 host_supported: true,
496 srcs: ["Test.java"],
497 aidl: {
498 export_include_dirs: ["aidl"],
499 },
500 system_modules: "none",
501 sdk_version: "none",
502 compile_dex: true,
503 }
504
505 cc_library_shared {
506 name: "mynativelib",
507 device_supported: false,
508 host_supported: true,
509 srcs: [
510 "Test.cpp",
511 "aidl/foo/bar/Test.aidl",
512 ],
513 export_include_dirs: ["include"],
514 aidl: {
515 export_aidl_headers: true,
516 },
517 system_shared_libs: [],
518 stl: "none",
519 }
520
521 droidstubs {
522 name: "myjavaapistubs",
523 device_supported: false,
524 host_supported: true,
525 srcs: ["foo/bar/Foo.java"],
526 system_modules: "none",
527 sdk_version: "none",
528 }
529 `)
530
531 sdk := ctx.ModuleForTests("mysdk", "linux_glibc_common").Module().(*sdk)
532
533 checkSnapshotAndroidBpContents(t, sdk, `// This is auto-generated. DO NOT EDIT.
534
535java_import {
536 name: "mysdk_myjavalib@current",
537 sdk_member_name: "myjavalib",
538 device_supported: false,
539 host_supported: true,
540 jars: ["java/myjavalib.jar"],
541}
542
543java_import {
544 name: "myjavalib",
545 prefer: false,
546 device_supported: false,
547 host_supported: true,
548 jars: ["java/myjavalib.jar"],
549}
550
551prebuilt_stubs_sources {
552 name: "mysdk_myjavaapistubs@current",
553 sdk_member_name: "myjavaapistubs",
554 device_supported: false,
555 host_supported: true,
556 srcs: ["java/myjavaapistubs_stubs_sources"],
557}
558
559prebuilt_stubs_sources {
560 name: "myjavaapistubs",
561 prefer: false,
562 device_supported: false,
563 host_supported: true,
564 srcs: ["java/myjavaapistubs_stubs_sources"],
565}
566
567cc_prebuilt_library_shared {
568 name: "mysdk_mynativelib@current",
569 sdk_member_name: "mynativelib",
570 device_supported: false,
571 host_supported: true,
572 arch: {
573 x86_64: {
574 srcs: ["x86_64/lib/mynativelib.so"],
575 export_include_dirs: [
576 "x86_64/include/include",
577 "x86_64/include_gen/mynativelib",
578 ],
579 },
580 x86: {
581 srcs: ["x86/lib/mynativelib.so"],
582 export_include_dirs: [
583 "x86/include/include",
584 "x86/include_gen/mynativelib",
585 ],
586 },
587 },
588 stl: "none",
589 system_shared_libs: [],
590}
591
592cc_prebuilt_library_shared {
593 name: "mynativelib",
594 prefer: false,
595 device_supported: false,
596 host_supported: true,
597 arch: {
598 x86_64: {
599 srcs: ["x86_64/lib/mynativelib.so"],
600 export_include_dirs: [
601 "x86_64/include/include",
602 "x86_64/include_gen/mynativelib",
603 ],
604 },
605 x86: {
606 srcs: ["x86/lib/mynativelib.so"],
607 export_include_dirs: [
608 "x86/include/include",
609 "x86/include_gen/mynativelib",
610 ],
611 },
612 },
613 stl: "none",
614 system_shared_libs: [],
615}
616
617sdk_snapshot {
618 name: "mysdk@current",
619 device_supported: false,
620 host_supported: true,
621 java_libs: ["mysdk_myjavalib@current"],
622 stubs_sources: ["mysdk_myjavaapistubs@current"],
623 native_shared_libs: ["mysdk_mynativelib@current"],
624}
625
626`)
627
628 var copySrcs []string
629 var copyDests []string
630 buildParams := sdk.BuildParamsForTests()
Paul Duffin375058f2019-11-29 20:17:53 +0000631 var mergeZipInputs []string
632 var intermediateZip string
633 var outputZip string
Paul Duffine44358f2019-11-26 18:04:12 +0000634 for _, bp := range buildParams {
635 ruleString := bp.Rule.String()
Paul Duffin375058f2019-11-29 20:17:53 +0000636 if ruleString == android.Cp.String() {
Paul Duffine44358f2019-11-26 18:04:12 +0000637 copySrcs = append(copySrcs, bp.Input.String())
638 copyDests = append(copyDests, bp.Output.Rel()) // rooted at the snapshot root
Paul Duffin375058f2019-11-29 20:17:53 +0000639 } else if ruleString == zipFiles.String() {
640 intermediateZip = bp.Output.String()
641 } else if ruleString == mergeZips.String() {
642 input := bp.Input.String()
643 if intermediateZip != input {
644 t.Errorf("Intermediate zip %s is not an input to merge_zips, %s is used instead", intermediateZip, input)
645 }
646 mergeZipInputs = bp.Inputs.Strings()
647 outputZip = bp.Output.String()
Paul Duffine44358f2019-11-26 18:04:12 +0000648 }
649 }
650
651 buildDir := config.BuildDir()
652 ensureListContains(t, copySrcs, "aidl/foo/bar/Test.aidl")
653 ensureListContains(t, copySrcs, "include/Test.h")
654 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h"))
655 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h"))
656 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h"))
657 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar"))
658 ensureListContains(t, copySrcs, filepath.Join(buildDir, ".intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so"))
659
660 ensureListContains(t, copyDests, "aidl/aidl/foo/bar/Test.aidl")
661 ensureListContains(t, copyDests, "x86_64/include/include/Test.h")
662 ensureListContains(t, copyDests, "x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h")
663 ensureListContains(t, copyDests, "x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h")
664 ensureListContains(t, copyDests, "x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h")
665 ensureListContains(t, copyDests, "java/myjavalib.jar")
666 ensureListContains(t, copyDests, "x86_64/lib/mynativelib.so")
667
Paul Duffin375058f2019-11-29 20:17:53 +0000668 expectedOutputZip := filepath.Join(buildDir, ".intermediates/mysdk/linux_glibc_common/mysdk-current.zip")
669 expectedRepackagedZip := filepath.Join(buildDir, ".intermediates/mysdk/linux_glibc_common/tmp/java/myjavaapistubs_stubs_sources.zip")
670
Paul Duffine44358f2019-11-26 18:04:12 +0000671 // Ensure that the droidstubs .srcjar as repackaged into a temporary zip file
672 // and then merged together with the intermediate snapshot zip.
Paul Duffin375058f2019-11-29 20:17:53 +0000673 ensureListContains(t, mergeZipInputs, expectedRepackagedZip)
674 if outputZip != expectedOutputZip {
675 t.Errorf("Expected snapshot output to be %q but was %q", expectedOutputZip, outputZip)
Paul Duffine44358f2019-11-26 18:04:12 +0000676 }
677}