blob: 486f154caba192fd982705111f3b07e509e25ff5 [file] [log] [blame]
Jingwen Chen65289992023-09-21 15:15:47 +00001// Copyright 2023 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
24func runAndroidTestTestCase(t *testing.T, tc Bp2buildTestCase) {
25 t.Helper()
26 RunBp2BuildTestCase(t, registerAndroidTestModuleTypes, tc)
27}
28
29func registerAndroidTestModuleTypes(ctx android.RegistrationContext) {
30 ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
31 ctx.RegisterModuleType("java_library", java.LibraryFactory)
32}
33
34func TestMinimalAndroidTest(t *testing.T) {
35 runAndroidAppTestCase(t, Bp2buildTestCase{
36 Description: "Android test - simple example",
37 ModuleTypeUnderTest: "android_test",
38 ModuleTypeUnderTestFactory: java.AndroidTestFactory,
39 Filesystem: map[string]string{
40 "app.java": "",
41 "res/res.png": "",
42 "AndroidManifest.xml": "",
43 "assets/asset.png": "",
44 },
45 Blueprint: `
46android_test {
47 name: "TestApp",
48 srcs: ["app.java"],
49 sdk_version: "current",
Jingwen Chen65229202023-09-20 13:34:16 +000050}
51`,
52 ExpectedBazelTargets: []string{
53 MakeBazelTarget("android_test", "TestApp", AttrNameToString{
54 "srcs": `["app.java"]`,
55 "manifest": `"AndroidManifest.xml"`,
56 "resource_files": `["res/res.png"]`,
57 "sdk_version": `"current"`,
58 "assets": `["assets/asset.png"]`,
59 "assets_dir": `"assets"`,
60 // no need for optimize = False because it's false for
61 // android_test by default
62 }),
63 }})
64}
65
66func TestAndroidTest_OptimizationEnabled(t *testing.T) {
67 runAndroidAppTestCase(t, Bp2buildTestCase{
68 Description: "Android test - simple example",
69 ModuleTypeUnderTest: "android_test",
70 ModuleTypeUnderTestFactory: java.AndroidTestFactory,
71 Filesystem: map[string]string{
72 "app.java": "",
73 "res/res.png": "",
74 "AndroidManifest.xml": "",
75 "assets/asset.png": "",
76 },
77 Blueprint: `
78android_test {
79 name: "TestApp",
80 srcs: ["app.java"],
81 sdk_version: "current",
Jingwen Chen65289992023-09-21 15:15:47 +000082 optimize: {
Jingwen Chen65229202023-09-20 13:34:16 +000083 enabled: true,
Jingwen Chen65289992023-09-21 15:15:47 +000084 shrink: true,
85 optimize: true,
86 obfuscate: true,
87 },
88}
89`,
90 ExpectedBazelTargets: []string{
91 MakeBazelTarget("android_test", "TestApp", AttrNameToString{
92 "srcs": `["app.java"]`,
93 "manifest": `"AndroidManifest.xml"`,
94 "resource_files": `["res/res.png"]`,
95 "sdk_version": `"current"`,
96 "assets": `["assets/asset.png"]`,
97 "assets_dir": `"assets"`,
Jingwen Chen65229202023-09-20 13:34:16 +000098 // optimize = True because it's false for android_test by
99 // default
100 "optimize": `True`,
Jingwen Chen65289992023-09-21 15:15:47 +0000101 }),
102 }})
103}
104
105func TestMinimalAndroidTestHelperApp(t *testing.T) {
106 runAndroidAppTestCase(t, Bp2buildTestCase{
107 Description: "Android test helper app - simple example",
108 ModuleTypeUnderTest: "android_test_helper_app",
109 ModuleTypeUnderTestFactory: java.AndroidTestHelperAppFactory,
110 Filesystem: map[string]string{
111 "app.java": "",
112 "res/res.png": "",
113 "AndroidManifest.xml": "",
114 "assets/asset.png": "",
115 },
116 Blueprint: `
117android_test_helper_app {
118 name: "TestApp",
119 srcs: ["app.java"],
120 sdk_version: "current",
121 optimize: {
122 shrink: true,
123 optimize: true,
124 obfuscate: true,
125 },
126}
127`,
128 ExpectedBazelTargets: []string{
129 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
130 "srcs": `["app.java"]`,
131 "manifest": `"AndroidManifest.xml"`,
132 "resource_files": `["res/res.png"]`,
133 "sdk_version": `"current"`,
134 "assets": `["assets/asset.png"]`,
135 "assets_dir": `"assets"`,
136 "testonly": `True`,
Jingwen Chen65229202023-09-20 13:34:16 +0000137 // no need for optimize = True because it's true for
138 // android_test_helper_app by default
139 }),
140 }})
141}
142
143func TestAndroidTestHelperApp_OptimizationDisabled(t *testing.T) {
144 runAndroidAppTestCase(t, Bp2buildTestCase{
145 Description: "Android test helper app - simple example",
146 ModuleTypeUnderTest: "android_test_helper_app",
147 ModuleTypeUnderTestFactory: java.AndroidTestHelperAppFactory,
148 Filesystem: map[string]string{
149 "app.java": "",
150 "res/res.png": "",
151 "AndroidManifest.xml": "",
152 "assets/asset.png": "",
153 },
154 Blueprint: `
155android_test_helper_app {
156 name: "TestApp",
157 srcs: ["app.java"],
158 sdk_version: "current",
159 optimize: {
160 enabled: false,
161 },
162}
163`,
164 ExpectedBazelTargets: []string{
165 MakeBazelTarget("android_binary", "TestApp", AttrNameToString{
166 "srcs": `["app.java"]`,
167 "manifest": `"AndroidManifest.xml"`,
168 "resource_files": `["res/res.png"]`,
169 "sdk_version": `"current"`,
170 "assets": `["assets/asset.png"]`,
171 "assets_dir": `"assets"`,
172 "testonly": `True`,
173 // optimize = False because it's true for
174 // android_test_helper_app by default
175 "optimize": `False`,
Jingwen Chen65289992023-09-21 15:15:47 +0000176 }),
177 }})
178}