blob: f2ee322e6dc682030c7f71e4fc5c56937e37b0d9 [file] [log] [blame]
Romain Jobredeaux1282c422021-10-29 10:52:59 -04001// Copyright 2021 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 bp2build
16
17import (
18 "android/soong/android"
19 "android/soong/java"
20
21 "testing"
22)
23
Sam Delmerico3177a6e2022-06-21 19:28:33 +000024func runAndroidAppTestCase(t *testing.T, tc Bp2buildTestCase) {
Romain Jobredeaux1282c422021-10-29 10:52:59 -040025 t.Helper()
Sam Delmerico3177a6e2022-06-21 19:28:33 +000026 RunBp2BuildTestCase(t, registerAndroidAppModuleTypes, tc)
Romain Jobredeaux1282c422021-10-29 10:52:59 -040027}
28
29func registerAndroidAppModuleTypes(ctx android.RegistrationContext) {
Jingwen Chen6817bbb2022-10-14 09:56:07 +000030 ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
Alix6c087cf2023-01-05 21:12:31 +000031 ctx.RegisterModuleType("java_library", java.LibraryFactory)
Romain Jobredeaux1282c422021-10-29 10:52:59 -040032}
33
34func TestMinimalAndroidApp(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000035 runAndroidAppTestCase(t, Bp2buildTestCase{
36 Description: "Android app - simple example",
37 ModuleTypeUnderTest: "android_app",
38 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
39 Filesystem: map[string]string{
Romain Jobredeaux1282c422021-10-29 10:52:59 -040040 "app.java": "",
41 "res/res.png": "",
42 "AndroidManifest.xml": "",
Romain Jobredeaux7a71e072023-08-16 17:39:12 -040043 "assets/asset.png": "",
Romain Jobredeaux1282c422021-10-29 10:52:59 -040044 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +000045 Blueprint: `
Romain Jobredeaux1282c422021-10-29 10:52:59 -040046android_app {
Liz Kammer02914402023-08-07 13:38:18 -040047 name: "TestApp",
48 srcs: ["app.java"],
49 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -040050 optimize: {
51 shrink: true,
52 optimize: true,
53 obfuscate: true,
54 },
Romain Jobredeaux1282c422021-10-29 10:52:59 -040055}
56`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000057 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +000058 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
Romain Jobredeaux1282c422021-10-29 10:52:59 -040059 "srcs": `["app.java"]`,
60 "manifest": `"AndroidManifest.xml"`,
61 "resource_files": `["res/res.png"]`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -050062 "sdk_version": `"current"`,
Romain Jobredeaux7a71e072023-08-16 17:39:12 -040063 "assets": `["assets/asset.png"]`,
64 "assets_dir": `"assets"`,
Romain Jobredeaux1282c422021-10-29 10:52:59 -040065 }),
66 }})
67}
68
69func TestAndroidAppAllSupportedFields(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000070 runAndroidAppTestCase(t, Bp2buildTestCase{
71 Description: "Android app - all supported fields",
72 ModuleTypeUnderTest: "android_app",
73 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
74 Filesystem: map[string]string{
Romain Jobredeaux1282c422021-10-29 10:52:59 -040075 "app.java": "",
76 "resa/res.png": "",
77 "resb/res.png": "",
78 "manifest/AndroidManifest.xml": "",
Romain Jobredeaux7a71e072023-08-16 17:39:12 -040079 "assets_/asset.png": "",
Romain Jobredeaux1282c422021-10-29 10:52:59 -040080 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +000081 Blueprint: simpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + `
Romain Jobredeaux1282c422021-10-29 10:52:59 -040082android_app {
Romain Jobredeaux9973ace2023-08-30 00:27:09 -040083 name: "TestApp",
84 srcs: ["app.java"],
85 sdk_version: "current",
86 package_name: "com.google",
87 resource_dirs: ["resa", "resb"],
88 manifest: "manifest/AndroidManifest.xml",
89 static_libs: ["static_lib_dep"],
90 java_version: "7",
91 certificate: "foocert",
92 required: ["static_lib_dep"],
93 asset_dirs: ["assets_"],
94 optimize: {
95 enabled: true,
96 optimize: false,
97 proguard_flags_files: ["proguard.flags"],
98 shrink: false,
99 obfuscate: false,
100 ignore_warnings: true,
101 },
Romain Jobredeaux1282c422021-10-29 10:52:59 -0400102}
103`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000104 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000105 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
Romain Jobredeaux1282c422021-10-29 10:52:59 -0400106 "srcs": `["app.java"]`,
107 "manifest": `"manifest/AndroidManifest.xml"`,
108 "resource_files": `[
109 "resa/res.png",
110 "resb/res.png",
111 ]`,
Romain Jobredeaux7a71e072023-08-16 17:39:12 -0400112 "assets": `["assets_/asset.png"]`,
113 "assets_dir": `"assets_"`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000114 "custom_package": `"com.google"`,
115 "deps": `[":static_lib_dep"]`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500116 "java_version": `"7"`,
117 "sdk_version": `"current"`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000118 "certificate_name": `"foocert"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400119 "proguard_specs": `[
120 "proguard.flags",
121 ":TestApp_proguard_flags",
122 ]`,
123 }),
124 MakeBazelTarget("genrule", "TestApp_proguard_flags", AttrNameToString{
125 "outs": `["TestApp_proguard.flags"]`,
126 "cmd": `"echo -ignorewarning -dontshrink -dontoptimize -dontobfuscate > $(OUTS)"`,
Romain Jobredeaux1282c422021-10-29 10:52:59 -0400127 }),
128 }})
129}
Sam Delmericoe91d0302022-02-23 15:28:33 +0000130
131func TestAndroidAppArchVariantSrcs(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000132 runAndroidAppTestCase(t, Bp2buildTestCase{
133 Description: "Android app - arch variant srcs",
134 ModuleTypeUnderTest: "android_app",
135 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
136 Filesystem: map[string]string{
Sam Delmericoe91d0302022-02-23 15:28:33 +0000137 "arm.java": "",
138 "x86.java": "",
139 "res/res.png": "",
140 "AndroidManifest.xml": "",
141 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000142 Blueprint: `
Sam Delmericoe91d0302022-02-23 15:28:33 +0000143android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400144 name: "TestApp",
145 sdk_version: "current",
146 arch: {
147 arm: {
148 srcs: ["arm.java"],
149 },
150 x86: {
151 srcs: ["x86.java"],
Sam Delmericoe91d0302022-02-23 15:28:33 +0000152 }
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400153 },
154 optimize: {
155 enabled: false,
156 },
Sam Delmericoe91d0302022-02-23 15:28:33 +0000157}
158`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000159 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000160 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
Sam Delmericoe91d0302022-02-23 15:28:33 +0000161 "srcs": `select({
162 "//build/bazel/platforms/arch:arm": ["arm.java"],
163 "//build/bazel/platforms/arch:x86": ["x86.java"],
164 "//conditions:default": [],
165 })`,
166 "manifest": `"AndroidManifest.xml"`,
167 "resource_files": `["res/res.png"]`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500168 "sdk_version": `"current"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400169 "optimize": `False`,
Sam Delmericoe91d0302022-02-23 15:28:33 +0000170 }),
171 }})
172}
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000173
174func TestAndroidAppCertIsModule(t *testing.T) {
175 runAndroidAppTestCase(t, Bp2buildTestCase{
176 Description: "Android app - cert is module",
177 ModuleTypeUnderTest: "android_app",
178 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
179 Filesystem: map[string]string{},
180 Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + `
181android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400182 name: "TestApp",
183 certificate: ":foocert",
184 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400185 optimize: {
186 enabled: false,
187 },
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000188}
189`,
190 ExpectedBazelTargets: []string{
191 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
192 "certificate": `":foocert"`,
193 "manifest": `"AndroidManifest.xml"`,
194 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400195 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400196 "optimize": `False`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000197 }),
198 }})
199}
200
201func TestAndroidAppCertIsSrcFile(t *testing.T) {
202 runAndroidAppTestCase(t, Bp2buildTestCase{
203 Description: "Android app - cert is src file",
204 ModuleTypeUnderTest: "android_app",
205 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
206 Filesystem: map[string]string{
207 "foocert": "",
208 },
209 Blueprint: `
210android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400211 name: "TestApp",
212 certificate: "foocert",
213 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400214 optimize: {
215 enabled: false,
216 },
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000217}
218`,
219 ExpectedBazelTargets: []string{
220 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
221 "certificate": `"foocert"`,
222 "manifest": `"AndroidManifest.xml"`,
223 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400224 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400225 "optimize": `False`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000226 }),
227 }})
228}
229
230func TestAndroidAppCertIsNotSrcOrModule(t *testing.T) {
231 runAndroidAppTestCase(t, Bp2buildTestCase{
232 Description: "Android app - cert is not src or module",
233 ModuleTypeUnderTest: "android_app",
234 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
235 Filesystem: map[string]string{
236 // deliberate empty
237 },
238 Blueprint: `
239android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400240 name: "TestApp",
241 certificate: "foocert",
242 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400243 optimize: {
244 enabled: false,
245 },
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000246}
247`,
248 ExpectedBazelTargets: []string{
249 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
250 "certificate_name": `"foocert"`,
251 "manifest": `"AndroidManifest.xml"`,
252 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400253 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400254 "optimize": `False`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000255 }),
256 }})
257}
Alix6c087cf2023-01-05 21:12:31 +0000258
259func TestAndroidAppLibs(t *testing.T) {
260 runAndroidAppTestCase(t, Bp2buildTestCase{
261 Description: "Android app with libs",
262 ModuleTypeUnderTest: "android_app",
263 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
264 Filesystem: map[string]string{},
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400265 Blueprint: simpleModuleDoNotConvertBp2build("java_library", "barLib") + `
Alix6c087cf2023-01-05 21:12:31 +0000266android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400267 name: "foo",
268 libs: ["barLib"],
269 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400270 optimize: {
271 enabled: false,
272 },
Alix6c087cf2023-01-05 21:12:31 +0000273}
274`,
275 ExpectedBazelTargets: []string{
Alix6c087cf2023-01-05 21:12:31 +0000276 MakeBazelTarget("android_binary", "foo", AttrNameToString{
277 "manifest": `"AndroidManifest.xml"`,
278 "resource_files": `[]`,
279 "deps": `[":barLib-neverlink"]`,
Liz Kammer02914402023-08-07 13:38:18 -0400280 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400281 "optimize": `False`,
Alix6c087cf2023-01-05 21:12:31 +0000282 }),
283 }})
284}
Alix0856f9e2023-01-20 22:15:30 +0000285
286func TestAndroidAppKotlinSrcs(t *testing.T) {
287 runAndroidAppTestCase(t, Bp2buildTestCase{
288 Description: "Android app with kotlin sources and common_srcs",
289 ModuleTypeUnderTest: "android_app",
290 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
291 Filesystem: map[string]string{
292 "res/res.png": "",
293 },
Liz Kammer02914402023-08-07 13:38:18 -0400294 Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") +
295 simpleModuleDoNotConvertBp2build("java_library", "barLib") + `
Alix0856f9e2023-01-20 22:15:30 +0000296android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400297 name: "foo",
298 srcs: ["a.java", "b.kt"],
299 certificate: ":foocert",
300 manifest: "fooManifest.xml",
301 libs: ["barLib"],
302 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400303 optimize: {
304 enabled: false,
305 },
Alix0856f9e2023-01-20 22:15:30 +0000306}
307`,
308 ExpectedBazelTargets: []string{
Alix0856f9e2023-01-20 22:15:30 +0000309 MakeBazelTarget("android_library", "foo_kt", AttrNameToString{
310 "srcs": `[
311 "a.java",
312 "b.kt",
313 ]`,
314 "manifest": `"fooManifest.xml"`,
315 "resource_files": `["res/res.png"]`,
316 "deps": `[":barLib-neverlink"]`,
Liz Kammer02914402023-08-07 13:38:18 -0400317 "sdk_version": `"current"`, // use as default
Alix0856f9e2023-01-20 22:15:30 +0000318 }),
319 MakeBazelTarget("android_binary", "foo", AttrNameToString{
320 "deps": `[":foo_kt"]`,
321 "certificate": `":foocert"`,
322 "manifest": `"fooManifest.xml"`,
Liz Kammer02914402023-08-07 13:38:18 -0400323 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400324 "optimize": `False`,
Alix0856f9e2023-01-20 22:15:30 +0000325 }),
326 }})
327}
328
329func TestAndroidAppCommonSrcs(t *testing.T) {
330 runAndroidAppTestCase(t, Bp2buildTestCase{
331 Description: "Android app with common_srcs",
332 ModuleTypeUnderTest: "android_app",
333 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
334 Filesystem: map[string]string{
335 "res/res.png": "",
336 },
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400337 Blueprint: `
Alix0856f9e2023-01-20 22:15:30 +0000338android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400339 name: "foo",
340 srcs: ["a.java"],
341 common_srcs: ["b.kt"],
Liz Kammer02914402023-08-07 13:38:18 -0400342 manifest: "fooManifest.xml",
343 libs: ["barLib"],
344 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400345 optimize: {
346 enabled: false,
347 },
Alix0856f9e2023-01-20 22:15:30 +0000348}
349java_library{
Liz Kammer02914402023-08-07 13:38:18 -0400350 name: "barLib",
351 bazel_module: { bp2build_available: false },
Alix0856f9e2023-01-20 22:15:30 +0000352}
353`,
354 ExpectedBazelTargets: []string{
Alix0856f9e2023-01-20 22:15:30 +0000355 MakeBazelTarget("android_library", "foo_kt", AttrNameToString{
356 "srcs": `["a.java"]`,
357 "common_srcs": `["b.kt"]`,
358 "manifest": `"fooManifest.xml"`,
359 "resource_files": `["res/res.png"]`,
360 "deps": `[":barLib-neverlink"]`,
Liz Kammer02914402023-08-07 13:38:18 -0400361 "sdk_version": `"current"`, // use as default
Alix0856f9e2023-01-20 22:15:30 +0000362 }),
363 MakeBazelTarget("android_binary", "foo", AttrNameToString{
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400364 "deps": `[":foo_kt"]`,
365 "manifest": `"fooManifest.xml"`,
366 "sdk_version": `"current"`, // use as default
367 "optimize": `False`,
Alix0856f9e2023-01-20 22:15:30 +0000368 }),
369 }})
370}
Alixf848bf82023-03-06 19:43:55 +0000371
372func TestAndroidAppKotlinCflags(t *testing.T) {
373 runAndroidAppTestCase(t, Bp2buildTestCase{
374 Description: "Android app with kotlincflags",
375 ModuleTypeUnderTest: "android_app",
376 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
377 Filesystem: map[string]string{
378 "res/res.png": "",
379 },
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400380 Blueprint: `
Alixf848bf82023-03-06 19:43:55 +0000381android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400382 name: "foo",
383 srcs: ["a.java", "b.kt"],
Liz Kammer02914402023-08-07 13:38:18 -0400384 manifest: "fooManifest.xml",
385 kotlincflags: ["-flag1", "-flag2"],
386 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400387 optimize: {
388 enabled: false,
389 },
Alixf848bf82023-03-06 19:43:55 +0000390}
391`,
392 ExpectedBazelTargets: []string{
393 MakeBazelTarget("android_library", "foo_kt", AttrNameToString{
394 "srcs": `[
395 "a.java",
396 "b.kt",
397 ]`,
398 "manifest": `"fooManifest.xml"`,
399 "resource_files": `["res/res.png"]`,
400 "kotlincflags": `[
401 "-flag1",
402 "-flag2",
403 ]`,
Liz Kammer02914402023-08-07 13:38:18 -0400404 "sdk_version": `"current"`, // use as default
Alixf848bf82023-03-06 19:43:55 +0000405 }),
406 MakeBazelTarget("android_binary", "foo", AttrNameToString{
407 "deps": `[":foo_kt"]`,
Alixf848bf82023-03-06 19:43:55 +0000408 "manifest": `"fooManifest.xml"`,
Liz Kammer02914402023-08-07 13:38:18 -0400409 "sdk_version": `"current"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400410 "optimize": `False`,
Alixf848bf82023-03-06 19:43:55 +0000411 }),
412 }})
413}
Alixe5085eb2023-01-31 19:38:41 +0000414
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400415func TestAndroidAppManifestSdkVersionsProvided(t *testing.T) {
Alixe5085eb2023-01-31 19:38:41 +0000416 runAndroidAppTestCase(t, Bp2buildTestCase{
417 Description: "Android app with value for min_sdk_version",
418 ModuleTypeUnderTest: "android_app",
419 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
420 Filesystem: map[string]string{},
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400421 Blueprint: `
Alixe5085eb2023-01-31 19:38:41 +0000422android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400423 name: "foo",
424 sdk_version: "current",
425 min_sdk_version: "24",
426 max_sdk_version: "30",
427 target_sdk_version: "29",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400428 optimize: {
429 enabled: false,
430 },
Alixe5085eb2023-01-31 19:38:41 +0000431}
432`,
433 ExpectedBazelTargets: []string{
434 MakeBazelTarget("android_binary", "foo", AttrNameToString{
435 "manifest": `"AndroidManifest.xml"`,
436 "resource_files": `[]`,
437 "manifest_values": `{
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400438 "maxSdkVersion": "30",
Alixe5085eb2023-01-31 19:38:41 +0000439 "minSdkVersion": "24",
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400440 "targetSdkVersion": "29",
Alixe5085eb2023-01-31 19:38:41 +0000441 }`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500442 "sdk_version": `"current"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400443 "optimize": `False`,
Alixe5085eb2023-01-31 19:38:41 +0000444 }),
445 }})
446}
447
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400448func TestAndroidAppMinAndTargetSdkDefaultToSdkVersion(t *testing.T) {
Alixe5085eb2023-01-31 19:38:41 +0000449 runAndroidAppTestCase(t, Bp2buildTestCase{
450 Description: "Android app with value for sdk_version",
451 ModuleTypeUnderTest: "android_app",
452 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
453 Filesystem: map[string]string{},
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400454 Blueprint: `
Alixe5085eb2023-01-31 19:38:41 +0000455android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400456 name: "foo",
457 sdk_version: "30",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400458 optimize: {
459 enabled: false,
460 },
Alixe5085eb2023-01-31 19:38:41 +0000461}
462`,
463 ExpectedBazelTargets: []string{
464 MakeBazelTarget("android_binary", "foo", AttrNameToString{
465 "manifest": `"AndroidManifest.xml"`,
466 "resource_files": `[]`,
467 "manifest_values": `{
468 "minSdkVersion": "30",
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400469 "targetSdkVersion": "30",
Alixe5085eb2023-01-31 19:38:41 +0000470 }`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500471 "sdk_version": `"30"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400472 "optimize": `False`,
Alixe5085eb2023-01-31 19:38:41 +0000473 }),
474 }})
475}