blob: 0daa4fe69f04de6e8e90ad3f6aa89bac1506822d [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 },
Chris Parsonscd209032023-09-19 01:12:48 +000081 StubbedBuildDefinitions: []string{"static_lib_dep"},
82 Blueprint: simpleModule("android_app", "static_lib_dep") + `
Romain Jobredeaux1282c422021-10-29 10:52:59 -040083android_app {
Romain Jobredeaux9973ace2023-08-30 00:27:09 -040084 name: "TestApp",
85 srcs: ["app.java"],
86 sdk_version: "current",
87 package_name: "com.google",
88 resource_dirs: ["resa", "resb"],
89 manifest: "manifest/AndroidManifest.xml",
90 static_libs: ["static_lib_dep"],
91 java_version: "7",
92 certificate: "foocert",
93 required: ["static_lib_dep"],
94 asset_dirs: ["assets_"],
95 optimize: {
96 enabled: true,
97 optimize: false,
98 proguard_flags_files: ["proguard.flags"],
99 shrink: false,
100 obfuscate: false,
101 ignore_warnings: true,
102 },
Romain Jobredeaux1282c422021-10-29 10:52:59 -0400103}
104`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000105 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000106 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
Romain Jobredeaux1282c422021-10-29 10:52:59 -0400107 "srcs": `["app.java"]`,
108 "manifest": `"manifest/AndroidManifest.xml"`,
109 "resource_files": `[
110 "resa/res.png",
111 "resb/res.png",
112 ]`,
Romain Jobredeaux7a71e072023-08-16 17:39:12 -0400113 "assets": `["assets_/asset.png"]`,
114 "assets_dir": `"assets_"`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000115 "custom_package": `"com.google"`,
116 "deps": `[":static_lib_dep"]`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500117 "java_version": `"7"`,
118 "sdk_version": `"current"`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000119 "certificate_name": `"foocert"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400120 "proguard_specs": `[
121 "proguard.flags",
122 ":TestApp_proguard_flags",
123 ]`,
124 }),
125 MakeBazelTarget("genrule", "TestApp_proguard_flags", AttrNameToString{
126 "outs": `["TestApp_proguard.flags"]`,
127 "cmd": `"echo -ignorewarning -dontshrink -dontoptimize -dontobfuscate > $(OUTS)"`,
Romain Jobredeaux1282c422021-10-29 10:52:59 -0400128 }),
129 }})
130}
Sam Delmericoe91d0302022-02-23 15:28:33 +0000131
132func TestAndroidAppArchVariantSrcs(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000133 runAndroidAppTestCase(t, Bp2buildTestCase{
134 Description: "Android app - arch variant srcs",
135 ModuleTypeUnderTest: "android_app",
136 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
137 Filesystem: map[string]string{
Sam Delmericoe91d0302022-02-23 15:28:33 +0000138 "arm.java": "",
139 "x86.java": "",
140 "res/res.png": "",
141 "AndroidManifest.xml": "",
142 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000143 Blueprint: `
Sam Delmericoe91d0302022-02-23 15:28:33 +0000144android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400145 name: "TestApp",
146 sdk_version: "current",
147 arch: {
148 arm: {
149 srcs: ["arm.java"],
150 },
151 x86: {
152 srcs: ["x86.java"],
Sam Delmericoe91d0302022-02-23 15:28:33 +0000153 }
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400154 },
155 optimize: {
156 enabled: false,
157 },
Sam Delmericoe91d0302022-02-23 15:28:33 +0000158}
159`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000160 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000161 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
Sam Delmericoe91d0302022-02-23 15:28:33 +0000162 "srcs": `select({
163 "//build/bazel/platforms/arch:arm": ["arm.java"],
164 "//build/bazel/platforms/arch:x86": ["x86.java"],
165 "//conditions:default": [],
166 })`,
167 "manifest": `"AndroidManifest.xml"`,
168 "resource_files": `["res/res.png"]`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500169 "sdk_version": `"current"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400170 "optimize": `False`,
Sam Delmericoe91d0302022-02-23 15:28:33 +0000171 }),
172 }})
173}
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000174
175func TestAndroidAppCertIsModule(t *testing.T) {
176 runAndroidAppTestCase(t, Bp2buildTestCase{
177 Description: "Android app - cert is module",
178 ModuleTypeUnderTest: "android_app",
179 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
180 Filesystem: map[string]string{},
Chris Parsonscd209032023-09-19 01:12:48 +0000181 StubbedBuildDefinitions: []string{"foocert"},
182 Blueprint: simpleModule("filegroup", "foocert") + `
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000183android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400184 name: "TestApp",
185 certificate: ":foocert",
186 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400187 optimize: {
188 enabled: false,
189 },
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000190}
191`,
192 ExpectedBazelTargets: []string{
193 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
194 "certificate": `":foocert"`,
195 "manifest": `"AndroidManifest.xml"`,
196 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400197 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400198 "optimize": `False`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000199 }),
200 }})
201}
202
203func TestAndroidAppCertIsSrcFile(t *testing.T) {
204 runAndroidAppTestCase(t, Bp2buildTestCase{
205 Description: "Android app - cert is src file",
206 ModuleTypeUnderTest: "android_app",
207 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
208 Filesystem: map[string]string{
209 "foocert": "",
210 },
211 Blueprint: `
212android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400213 name: "TestApp",
214 certificate: "foocert",
215 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400216 optimize: {
217 enabled: false,
218 },
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000219}
220`,
221 ExpectedBazelTargets: []string{
222 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
223 "certificate": `"foocert"`,
224 "manifest": `"AndroidManifest.xml"`,
225 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400226 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400227 "optimize": `False`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000228 }),
229 }})
230}
231
232func TestAndroidAppCertIsNotSrcOrModule(t *testing.T) {
233 runAndroidAppTestCase(t, Bp2buildTestCase{
234 Description: "Android app - cert is not src or module",
235 ModuleTypeUnderTest: "android_app",
236 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
237 Filesystem: map[string]string{
238 // deliberate empty
239 },
240 Blueprint: `
241android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400242 name: "TestApp",
243 certificate: "foocert",
244 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400245 optimize: {
246 enabled: false,
247 },
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000248}
249`,
250 ExpectedBazelTargets: []string{
251 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
252 "certificate_name": `"foocert"`,
253 "manifest": `"AndroidManifest.xml"`,
254 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400255 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400256 "optimize": `False`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +0000257 }),
258 }})
259}
Alix6c087cf2023-01-05 21:12:31 +0000260
261func TestAndroidAppLibs(t *testing.T) {
262 runAndroidAppTestCase(t, Bp2buildTestCase{
263 Description: "Android app with libs",
264 ModuleTypeUnderTest: "android_app",
265 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
266 Filesystem: map[string]string{},
Chris Parsonscd209032023-09-19 01:12:48 +0000267 StubbedBuildDefinitions: []string{"barLib"},
268 Blueprint: simpleModule("java_library", "barLib") + `
Alix6c087cf2023-01-05 21:12:31 +0000269android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400270 name: "foo",
271 libs: ["barLib"],
272 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400273 optimize: {
274 enabled: false,
275 },
Alix6c087cf2023-01-05 21:12:31 +0000276}
277`,
278 ExpectedBazelTargets: []string{
Alix6c087cf2023-01-05 21:12:31 +0000279 MakeBazelTarget("android_binary", "foo", AttrNameToString{
280 "manifest": `"AndroidManifest.xml"`,
281 "resource_files": `[]`,
282 "deps": `[":barLib-neverlink"]`,
Liz Kammer02914402023-08-07 13:38:18 -0400283 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400284 "optimize": `False`,
Alix6c087cf2023-01-05 21:12:31 +0000285 }),
286 }})
287}
Alix0856f9e2023-01-20 22:15:30 +0000288
289func TestAndroidAppKotlinSrcs(t *testing.T) {
290 runAndroidAppTestCase(t, Bp2buildTestCase{
291 Description: "Android app with kotlin sources and common_srcs",
292 ModuleTypeUnderTest: "android_app",
293 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
294 Filesystem: map[string]string{
295 "res/res.png": "",
296 },
Chris Parsonscd209032023-09-19 01:12:48 +0000297 StubbedBuildDefinitions: []string{"foocert", "barLib"},
298 Blueprint: simpleModule("filegroup", "foocert") +
299 simpleModule("java_library", "barLib") + `
Alix0856f9e2023-01-20 22:15:30 +0000300android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400301 name: "foo",
302 srcs: ["a.java", "b.kt"],
303 certificate: ":foocert",
304 manifest: "fooManifest.xml",
305 libs: ["barLib"],
306 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400307 optimize: {
308 enabled: false,
309 },
Alix0856f9e2023-01-20 22:15:30 +0000310}
311`,
312 ExpectedBazelTargets: []string{
Alix0856f9e2023-01-20 22:15:30 +0000313 MakeBazelTarget("android_library", "foo_kt", AttrNameToString{
314 "srcs": `[
315 "a.java",
316 "b.kt",
317 ]`,
318 "manifest": `"fooManifest.xml"`,
319 "resource_files": `["res/res.png"]`,
320 "deps": `[":barLib-neverlink"]`,
Liz Kammer02914402023-08-07 13:38:18 -0400321 "sdk_version": `"current"`, // use as default
Alix0856f9e2023-01-20 22:15:30 +0000322 }),
323 MakeBazelTarget("android_binary", "foo", AttrNameToString{
324 "deps": `[":foo_kt"]`,
325 "certificate": `":foocert"`,
326 "manifest": `"fooManifest.xml"`,
Liz Kammer02914402023-08-07 13:38:18 -0400327 "sdk_version": `"current"`, // use as default
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400328 "optimize": `False`,
Alix0856f9e2023-01-20 22:15:30 +0000329 }),
330 }})
331}
332
333func TestAndroidAppCommonSrcs(t *testing.T) {
334 runAndroidAppTestCase(t, Bp2buildTestCase{
335 Description: "Android app with common_srcs",
336 ModuleTypeUnderTest: "android_app",
337 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
338 Filesystem: map[string]string{
339 "res/res.png": "",
340 },
Chris Parsonscd209032023-09-19 01:12:48 +0000341 StubbedBuildDefinitions: []string{"barLib"},
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400342 Blueprint: `
Alix0856f9e2023-01-20 22:15:30 +0000343android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400344 name: "foo",
345 srcs: ["a.java"],
346 common_srcs: ["b.kt"],
Liz Kammer02914402023-08-07 13:38:18 -0400347 manifest: "fooManifest.xml",
348 libs: ["barLib"],
349 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400350 optimize: {
351 enabled: false,
352 },
Alix0856f9e2023-01-20 22:15:30 +0000353}
354java_library{
Liz Kammer02914402023-08-07 13:38:18 -0400355 name: "barLib",
Alix0856f9e2023-01-20 22:15:30 +0000356}
357`,
358 ExpectedBazelTargets: []string{
Alix0856f9e2023-01-20 22:15:30 +0000359 MakeBazelTarget("android_library", "foo_kt", AttrNameToString{
360 "srcs": `["a.java"]`,
361 "common_srcs": `["b.kt"]`,
362 "manifest": `"fooManifest.xml"`,
363 "resource_files": `["res/res.png"]`,
364 "deps": `[":barLib-neverlink"]`,
Liz Kammer02914402023-08-07 13:38:18 -0400365 "sdk_version": `"current"`, // use as default
Alix0856f9e2023-01-20 22:15:30 +0000366 }),
367 MakeBazelTarget("android_binary", "foo", AttrNameToString{
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400368 "deps": `[":foo_kt"]`,
369 "manifest": `"fooManifest.xml"`,
370 "sdk_version": `"current"`, // use as default
371 "optimize": `False`,
Alix0856f9e2023-01-20 22:15:30 +0000372 }),
373 }})
374}
Alixf848bf82023-03-06 19:43:55 +0000375
376func TestAndroidAppKotlinCflags(t *testing.T) {
377 runAndroidAppTestCase(t, Bp2buildTestCase{
378 Description: "Android app with kotlincflags",
379 ModuleTypeUnderTest: "android_app",
380 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
381 Filesystem: map[string]string{
382 "res/res.png": "",
383 },
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400384 Blueprint: `
Alixf848bf82023-03-06 19:43:55 +0000385android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400386 name: "foo",
387 srcs: ["a.java", "b.kt"],
Liz Kammer02914402023-08-07 13:38:18 -0400388 manifest: "fooManifest.xml",
389 kotlincflags: ["-flag1", "-flag2"],
390 sdk_version: "current",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400391 optimize: {
392 enabled: false,
393 },
Alixf848bf82023-03-06 19:43:55 +0000394}
395`,
396 ExpectedBazelTargets: []string{
397 MakeBazelTarget("android_library", "foo_kt", AttrNameToString{
398 "srcs": `[
399 "a.java",
400 "b.kt",
401 ]`,
402 "manifest": `"fooManifest.xml"`,
403 "resource_files": `["res/res.png"]`,
404 "kotlincflags": `[
405 "-flag1",
406 "-flag2",
407 ]`,
Liz Kammer02914402023-08-07 13:38:18 -0400408 "sdk_version": `"current"`, // use as default
Alixf848bf82023-03-06 19:43:55 +0000409 }),
410 MakeBazelTarget("android_binary", "foo", AttrNameToString{
411 "deps": `[":foo_kt"]`,
Alixf848bf82023-03-06 19:43:55 +0000412 "manifest": `"fooManifest.xml"`,
Liz Kammer02914402023-08-07 13:38:18 -0400413 "sdk_version": `"current"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400414 "optimize": `False`,
Alixf848bf82023-03-06 19:43:55 +0000415 }),
416 }})
417}
Alixe5085eb2023-01-31 19:38:41 +0000418
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400419func TestAndroidAppManifestSdkVersionsProvided(t *testing.T) {
Alixe5085eb2023-01-31 19:38:41 +0000420 runAndroidAppTestCase(t, Bp2buildTestCase{
421 Description: "Android app with value for min_sdk_version",
422 ModuleTypeUnderTest: "android_app",
423 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
424 Filesystem: map[string]string{},
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400425 Blueprint: `
Alixe5085eb2023-01-31 19:38:41 +0000426android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400427 name: "foo",
428 sdk_version: "current",
429 min_sdk_version: "24",
430 max_sdk_version: "30",
431 target_sdk_version: "29",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400432 optimize: {
433 enabled: false,
434 },
Alixe5085eb2023-01-31 19:38:41 +0000435}
436`,
437 ExpectedBazelTargets: []string{
438 MakeBazelTarget("android_binary", "foo", AttrNameToString{
439 "manifest": `"AndroidManifest.xml"`,
440 "resource_files": `[]`,
441 "manifest_values": `{
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400442 "maxSdkVersion": "30",
Alixe5085eb2023-01-31 19:38:41 +0000443 "minSdkVersion": "24",
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400444 "targetSdkVersion": "29",
Alixe5085eb2023-01-31 19:38:41 +0000445 }`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500446 "sdk_version": `"current"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400447 "optimize": `False`,
Alixe5085eb2023-01-31 19:38:41 +0000448 }),
449 }})
450}
451
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400452func TestAndroidAppMinAndTargetSdkDefaultToSdkVersion(t *testing.T) {
Alixe5085eb2023-01-31 19:38:41 +0000453 runAndroidAppTestCase(t, Bp2buildTestCase{
454 Description: "Android app with value for sdk_version",
455 ModuleTypeUnderTest: "android_app",
456 ModuleTypeUnderTestFactory: java.AndroidAppFactory,
457 Filesystem: map[string]string{},
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400458 Blueprint: `
Alixe5085eb2023-01-31 19:38:41 +0000459android_app {
Liz Kammer02914402023-08-07 13:38:18 -0400460 name: "foo",
461 sdk_version: "30",
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400462 optimize: {
463 enabled: false,
464 },
Alixe5085eb2023-01-31 19:38:41 +0000465}
466`,
467 ExpectedBazelTargets: []string{
468 MakeBazelTarget("android_binary", "foo", AttrNameToString{
469 "manifest": `"AndroidManifest.xml"`,
470 "resource_files": `[]`,
471 "manifest_values": `{
472 "minSdkVersion": "30",
Romain Jobredeaux496660d2023-07-10 11:50:00 -0400473 "targetSdkVersion": "30",
Alixe5085eb2023-01-31 19:38:41 +0000474 }`,
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500475 "sdk_version": `"30"`,
Romain Jobredeaux9973ace2023-08-30 00:27:09 -0400476 "optimize": `False`,
Alixe5085eb2023-01-31 19:38:41 +0000477 }),
478 }})
479}