blob: ce20721c9abb782c9b7fd228339cfd814a90dd10 [file] [log] [blame]
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -05001// Copyright 2022 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"
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050020
21 "testing"
22)
23
24func TestConvertAndroidLibrary(t *testing.T) {
25 t.Helper()
26 RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
27 Description: "Android Library - simple example",
28 ModuleTypeUnderTest: "android_library",
29 ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
30 Filesystem: map[string]string{
31 "lib.java": "",
32 "arm.java": "",
33 "x86.java": "",
34 "res/res.png": "",
35 "manifest/AndroidManifest.xml": "",
36 },
Sam Delmerico130d75b2023-08-31 00:51:44 +000037 Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050038android_library {
Liz Kammer02914402023-08-07 13:38:18 -040039 name: "TestLib",
40 srcs: ["lib.java"],
41 arch: {
42 arm: {
43 srcs: ["arm.java"],
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050044 },
Liz Kammer02914402023-08-07 13:38:18 -040045 x86: {
46 srcs: ["x86.java"],
47 }
48 },
49 manifest: "manifest/AndroidManifest.xml",
50 static_libs: ["static_lib_dep"],
51 sdk_version: "current",
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050052}
53`,
54 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +000055 MakeBazelTarget(
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050056 "android_library",
57 "TestLib",
58 AttrNameToString{
59 "srcs": `["lib.java"] + select({
60 "//build/bazel/platforms/arch:arm": ["arm.java"],
61 "//build/bazel/platforms/arch:x86": ["x86.java"],
62 "//conditions:default": [],
63 })`,
64 "manifest": `"manifest/AndroidManifest.xml"`,
65 "resource_files": `["res/res.png"]`,
66 "deps": `[":static_lib_dep"]`,
67 "exports": `[":static_lib_dep"]`,
Liz Kammer02914402023-08-07 13:38:18 -040068 "sdk_version": `"current"`, // use as default
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050069 }),
Liz Kammer02914402023-08-07 13:38:18 -040070 MakeNeverlinkDuplicateTarget("android_library", "TestLib"),
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050071 }})
72}
73
74func TestConvertAndroidLibraryWithNoSources(t *testing.T) {
75 t.Helper()
76 RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
77 Description: "Android Library - modules with deps must have sources",
78 ModuleTypeUnderTest: "android_library",
79 ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
80 Filesystem: map[string]string{
81 "res/res.png": "",
82 "AndroidManifest.xml": "",
83 },
Sam Delmerico130d75b2023-08-31 00:51:44 +000084 Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "lib_dep") + `
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050085android_library {
Liz Kammer02914402023-08-07 13:38:18 -040086 name: "TestLib",
87 srcs: [],
88 manifest: "AndroidManifest.xml",
89 libs: ["lib_dep"],
90 sdk_version: "current",
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050091}
92`,
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -050093 ExpectedBazelTargets: []string{},
94 })
95}
96
97func TestConvertAndroidLibraryImport(t *testing.T) {
98 t.Helper()
99 RunBp2BuildTestCase(
100 t,
101 func(ctx android.RegistrationContext) {
102 ctx.RegisterModuleType("android_library", java.AndroidLibraryFactory)
103 },
104 Bp2buildTestCase{
105 Description: "Android Library Import",
106 ModuleTypeUnderTest: "android_library_import",
107 ModuleTypeUnderTestFactory: java.AARImportFactory,
108 Filesystem: map[string]string{
109 "import.aar": "",
110 },
111 // Bazel's aar_import can only export *_import targets, so we expect
112 // only "static_import_dep" in exports, but both "static_lib_dep" and
113 // "static_import_dep" in deps
Sam Delmerico130d75b2023-08-31 00:51:44 +0000114 Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") +
115 SimpleModuleDoNotConvertBp2build("android_library_import", "static_import_dep") + `
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -0500116android_library_import {
117 name: "TestImport",
118 aars: ["import.aar"],
119 static_libs: ["static_lib_dep", "static_import_dep"],
Liz Kammer02914402023-08-07 13:38:18 -0400120 sdk_version: "current",
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -0500121}
122`,
123 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000124 MakeBazelTarget(
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -0500125 "aar_import",
126 "TestImport",
127 AttrNameToString{
128 "aar": `"import.aar"`,
129 "deps": `[
130 ":static_lib_dep",
131 ":static_import_dep",
132 ]`,
Liz Kammer02914402023-08-07 13:38:18 -0400133 "exports": `[":static_import_dep"]`,
134 "sdk_version": `"current"`, // use as default
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -0500135 },
136 ),
Alix14101de2023-01-06 03:42:07 +0000137 MakeNeverlinkDuplicateTarget("android_library", "TestImport"),
Romain Jobredeauxc9b2bba2022-02-15 09:35:07 -0500138 },
139 },
140 )
141}
Alix36795a72023-01-20 16:10:52 +0000142
143func TestConvertAndroidLibraryKotlin(t *testing.T) {
144 t.Helper()
145 RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
146 Description: "Android Library with .kt srcs and common_srcs attribute",
147 ModuleTypeUnderTest: "android_library",
148 ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
149 Filesystem: map[string]string{
150 "AndroidManifest.xml": "",
151 },
152 Blueprint: `
153android_library {
Liz Kammer02914402023-08-07 13:38:18 -0400154 name: "TestLib",
155 srcs: ["a.java", "b.kt"],
156 common_srcs: ["c.kt"],
157 sdk_version: "current",
Alix36795a72023-01-20 16:10:52 +0000158}
159`,
160 ExpectedBazelTargets: []string{
161 MakeBazelTarget(
162 "android_library",
163 "TestLib",
164 AttrNameToString{
165 "srcs": `[
166 "a.java",
167 "b.kt",
168 ]`,
169 "common_srcs": `["c.kt"]`,
170 "manifest": `"AndroidManifest.xml"`,
171 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400172 "sdk_version": `"current"`, // use as default
Alix36795a72023-01-20 16:10:52 +0000173 }),
174 MakeNeverlinkDuplicateTarget("android_library", "TestLib"),
175 }})
176}
Alixf848bf82023-03-06 19:43:55 +0000177
178func TestConvertAndroidLibraryKotlinCflags(t *testing.T) {
179 t.Helper()
180 RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
181 Description: "Android Library with .kt srcs and kotlincflags ",
182 ModuleTypeUnderTest: "android_library",
183 ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
184 Filesystem: map[string]string{
185 "AndroidManifest.xml": "",
186 },
187 Blueprint: `
188android_library {
Liz Kammer02914402023-08-07 13:38:18 -0400189 name: "TestLib",
190 srcs: ["a.java", "b.kt"],
191 kotlincflags: ["-flag1", "-flag2"],
192 sdk_version: "current",
Alixf848bf82023-03-06 19:43:55 +0000193}
194`,
195 ExpectedBazelTargets: []string{
196 MakeBazelTarget(
197 "android_library",
198 "TestLib",
199 AttrNameToString{
200 "srcs": `[
201 "a.java",
202 "b.kt",
203 ]`,
204 "kotlincflags": `[
205 "-flag1",
206 "-flag2",
207 ]`,
208 "manifest": `"AndroidManifest.xml"`,
209 "resource_files": `[]`,
Liz Kammer02914402023-08-07 13:38:18 -0400210 "sdk_version": `"current"`, // use as default
Alixf848bf82023-03-06 19:43:55 +0000211 }),
212 MakeNeverlinkDuplicateTarget("android_library", "TestLib"),
213 }})
214}