blob: 072f5b3b48d51c2faf97ea23a5bec98932bdd881 [file] [log] [blame]
Rupert Shuttleworth54e78412021-02-15 11:04:32 +00001// 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 (
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020018 "testing"
19
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000020 "android/soong/android"
21 "android/soong/cc"
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000022)
23
24const (
25 // See cc/testing.go for more context
Jingwen Chen63930982021-03-24 10:04:33 -040026 soongCcLibraryHeadersPreamble = `
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000027cc_defaults {
Liz Kammer8337ea42021-09-10 10:06:32 -040028 name: "linux_bionic_supported",
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000029}`
30)
31
32func TestCcLibraryHeadersLoadStatement(t *testing.T) {
33 testCases := []struct {
34 bazelTargets BazelTargets
35 expectedLoadStatements string
36 }{
37 {
38 bazelTargets: BazelTargets{
39 BazelTarget{
40 name: "cc_library_headers_target",
41 ruleClass: "cc_library_headers",
42 // Note: no bzlLoadLocation for native rules
43 },
44 },
45 expectedLoadStatements: ``,
46 },
47 }
48
49 for _, testCase := range testCases {
50 actual := testCase.bazelTargets.LoadStatements()
51 expected := testCase.expectedLoadStatements
52 if actual != expected {
53 t.Fatalf("Expected load statements to be %s, got %s", expected, actual)
54 }
55 }
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000056}
57
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020058func registerCcLibraryHeadersModuleTypes(ctx android.RegistrationContext) {
59 cc.RegisterCCBuildComponents(ctx)
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020060}
61
Sam Delmerico3177a6e2022-06-21 19:28:33 +000062func runCcLibraryHeadersTestCase(t *testing.T, tc Bp2buildTestCase) {
Liz Kammere4982e82021-05-25 10:39:35 -040063 t.Helper()
Sam Delmerico3177a6e2022-06-21 19:28:33 +000064 RunBp2BuildTestCase(t, registerCcLibraryHeadersModuleTypes, tc)
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020065}
66
67func TestCcLibraryHeadersSimple(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000068 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
69 Description: "cc_library_headers test",
70 ModuleTypeUnderTest: "cc_library_headers",
71 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
72 Filesystem: map[string]string{
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020073 "lib-1/lib1a.h": "",
74 "lib-1/lib1b.h": "",
75 "lib-2/lib2a.h": "",
76 "lib-2/lib2b.h": "",
77 "dir-1/dir1a.h": "",
78 "dir-1/dir1b.h": "",
79 "dir-2/dir2a.h": "",
80 "dir-2/dir2b.h": "",
81 "arch_arm64_exported_include_dir/a.h": "",
82 "arch_x86_exported_include_dir/b.h": "",
83 "arch_x86_64_exported_include_dir/c.h": "",
84 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +000085 Blueprint: soongCcLibraryHeadersPreamble + `
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000086cc_library_headers {
Rupert Shuttleworth54e78412021-02-15 11:04:32 +000087 name: "foo_headers",
88 export_include_dirs: ["dir-1", "dir-2"],
89 header_libs: ["lib-1", "lib-2"],
Rupert Shuttleworth095081c2021-03-25 09:06:03 +000090
Rupert Shuttleworthb8151682021-04-06 20:06:21 +000091 arch: {
92 arm64: {
Liz Kammer8337ea42021-09-10 10:06:32 -040093 // We expect dir-1 headers to be dropped, because dir-1 is already in export_include_dirs
Rupert Shuttleworthb8151682021-04-06 20:06:21 +000094 export_include_dirs: ["arch_arm64_exported_include_dir", "dir-1"],
95 },
96 x86: {
97 export_include_dirs: ["arch_x86_exported_include_dir"],
98 },
99 x86_64: {
100 export_include_dirs: ["arch_x86_64_exported_include_dir"],
101 },
102 },
Yu Liufc603162022-03-01 15:44:08 -0800103 sdk_version: "current",
104 min_sdk_version: "29",
Rupert Shuttleworthb8151682021-04-06 20:06:21 +0000105
Rupert Shuttleworth095081c2021-03-25 09:06:03 +0000106 // TODO: Also support export_header_lib_headers
Rupert Shuttleworth54e78412021-02-15 11:04:32 +0000107}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000108 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000109 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Zi Wang1cb11802022-12-09 16:08:54 -0800110 "export_includes": `select({
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000111 "//build/bazel/platforms/arch:arm64": ["arch_arm64_exported_include_dir"],
112 "//build/bazel/platforms/arch:x86": ["arch_x86_exported_include_dir"],
113 "//build/bazel/platforms/arch:x86_64": ["arch_x86_64_exported_include_dir"],
Rupert Shuttleworthb8151682021-04-06 20:06:21 +0000114 "//conditions:default": [],
Zi Wang1cb11802022-12-09 16:08:54 -0800115 }) + [
116 "dir-1",
117 "dir-2",
118 ]`,
Trevor Radcliffefb6c5222022-06-17 19:42:28 +0000119 "sdk_version": `"current"`,
120 "min_sdk_version": `"29"`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500121 }),
122 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200123 })
124}
125
Spandan Das4238c652022-09-09 01:38:47 +0000126func TestCcApiHeaders(t *testing.T) {
127 fs := map[string]string{
128 "bar/Android.bp": `cc_library_headers { name: "bar_headers", }`,
129 }
130 bp := `
131 cc_library_headers {
132 name: "foo_headers",
133 export_include_dirs: ["dir1", "dir2"],
134 export_header_lib_headers: ["bar_headers"],
135
136 arch: {
137 arm: {
138 export_include_dirs: ["dir_arm"],
139 },
140 x86: {
141 export_include_dirs: ["dir_x86"],
142 },
143 },
144
145 target: {
146 android: {
147 export_include_dirs: ["dir1", "dir_android"],
148 },
149 windows: {
150 export_include_dirs: ["dir_windows"],
151 },
152 }
153 }
154 `
155 expectedBazelTargets := []string{
156 MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution.arm", AttrNameToString{
157 "export_includes": `["dir_arm"]`,
158 "arch": `"arm"`,
159 }),
160 MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution.x86", AttrNameToString{
161 "export_includes": `["dir_x86"]`,
162 "arch": `"x86"`,
163 }),
164 MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution.androidos", AttrNameToString{
165 "export_includes": `["dir_android"]`, // common includes are deduped
166 }),
167 // Windows headers are not exported
168 MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution", AttrNameToString{
169 "export_includes": `[
170 "dir1",
171 "dir2",
172 ]`,
173 "deps": `[
174 "//bar:bar_headers.contribution",
175 ":foo_headers.contribution.arm",
176 ":foo_headers.contribution.x86",
177 ":foo_headers.contribution.androidos",
178 ]`,
179 }),
180 }
181 RunApiBp2BuildTestCase(t, cc.RegisterLibraryHeadersBuildComponents, Bp2buildTestCase{
182 Blueprint: bp,
183 Description: "Header library contributions to API surfaces",
184 ExpectedBazelTargets: expectedBazelTargets,
185 Filesystem: fs,
186 })
187}
188
Zi Wang9f609db2023-01-04 11:06:54 -0800189// header_libs has "variant_prepend" tag. In bp2build output,
190// variant info(select) should go before general info.
Liz Kammer8337ea42021-09-10 10:06:32 -0400191func TestCcLibraryHeadersOsSpecificHeader(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000192 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
193 Description: "cc_library_headers test with os-specific header_libs props",
194 ModuleTypeUnderTest: "cc_library_headers",
195 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
196 Filesystem: map[string]string{},
197 Blueprint: soongCcLibraryPreamble + `
Liz Kammer8337ea42021-09-10 10:06:32 -0400198cc_library_headers {
199 name: "android-lib",
200 bazel_module: { bp2build_available: false },
201}
202cc_library_headers {
203 name: "base-lib",
204 bazel_module: { bp2build_available: false },
205}
206cc_library_headers {
207 name: "darwin-lib",
208 bazel_module: { bp2build_available: false },
209}
210cc_library_headers {
211 name: "linux-lib",
212 bazel_module: { bp2build_available: false },
213}
214cc_library_headers {
215 name: "linux_bionic-lib",
216 bazel_module: { bp2build_available: false },
217}
218cc_library_headers {
219 name: "windows-lib",
220 bazel_module: { bp2build_available: false },
221}
Jingwen Chen91220d72021-03-24 02:18:33 -0400222cc_library_headers {
223 name: "foo_headers",
224 header_libs: ["base-lib"],
Trevor Radcliffefb6c5222022-06-17 19:42:28 +0000225 export_header_lib_headers: ["base-lib"],
Jingwen Chen91220d72021-03-24 02:18:33 -0400226 target: {
Trevor Radcliffefb6c5222022-06-17 19:42:28 +0000227 android: {
228 header_libs: ["android-lib"],
229 export_header_lib_headers: ["android-lib"],
230 },
231 darwin: {
232 header_libs: ["darwin-lib"],
233 export_header_lib_headers: ["darwin-lib"],
234 },
235 linux_bionic: {
236 header_libs: ["linux_bionic-lib"],
237 export_header_lib_headers: ["linux_bionic-lib"],
238 },
239 linux_glibc: {
240 header_libs: ["linux-lib"],
241 export_header_lib_headers: ["linux-lib"],
242 },
243 windows: {
244 header_libs: ["windows-lib"],
245 export_header_lib_headers: ["windows-lib"],
246 },
Jingwen Chen91220d72021-03-24 02:18:33 -0400247 },
Liz Kammer8337ea42021-09-10 10:06:32 -0400248 include_build_directory: false,
Jingwen Chen91220d72021-03-24 02:18:33 -0400249}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000250 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000251 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Zi Wang9f609db2023-01-04 11:06:54 -0800252 "deps": `select({
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000253 "//build/bazel/platforms/os:android": [":android-lib"],
254 "//build/bazel/platforms/os:darwin": [":darwin-lib"],
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000255 "//build/bazel/platforms/os:linux_bionic": [":linux_bionic-lib"],
Colin Cross133782e2022-12-20 15:29:31 -0800256 "//build/bazel/platforms/os:linux_glibc": [":linux-lib"],
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000257 "//build/bazel/platforms/os:windows": [":windows-lib"],
Jingwen Chen91220d72021-03-24 02:18:33 -0400258 "//conditions:default": [],
Zi Wang9f609db2023-01-04 11:06:54 -0800259 }) + [":base-lib"]`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500260 }),
261 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200262 })
263}
264
265func TestCcLibraryHeadersOsSpecficHeaderLibsExportHeaderLibHeaders(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000266 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
267 Description: "cc_library_headers test with os-specific header_libs and export_header_lib_headers props",
268 ModuleTypeUnderTest: "cc_library_headers",
269 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
270 Filesystem: map[string]string{},
271 Blueprint: soongCcLibraryPreamble + `
Liz Kammer8337ea42021-09-10 10:06:32 -0400272cc_library_headers {
273 name: "android-lib",
274 bazel_module: { bp2build_available: false },
275 }
276cc_library_headers {
277 name: "exported-lib",
278 bazel_module: { bp2build_available: false },
279}
Jingwen Chen91220d72021-03-24 02:18:33 -0400280cc_library_headers {
281 name: "foo_headers",
282 target: {
Liz Kammer7a210ac2021-09-22 15:52:58 -0400283 android: {
284 header_libs: ["android-lib", "exported-lib"],
285 export_header_lib_headers: ["exported-lib"]
286 },
Jingwen Chen91220d72021-03-24 02:18:33 -0400287 },
Liz Kammer8337ea42021-09-10 10:06:32 -0400288 include_build_directory: false,
Jingwen Chen91220d72021-03-24 02:18:33 -0400289}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000290 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000291 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500292 "deps": `select({
Chris Parsonsd6358772021-05-18 18:35:24 -0400293 "//build/bazel/platforms/os:android": [":exported-lib"],
294 "//conditions:default": [],
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500295 })`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500296 }),
297 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200298 })
299}
300
301func TestCcLibraryHeadersArchAndTargetExportSystemIncludes(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000302 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
303 Description: "cc_library_headers test with arch-specific and target-specific export_system_include_dirs props",
304 ModuleTypeUnderTest: "cc_library_headers",
305 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
306 Filesystem: map[string]string{},
307 Blueprint: soongCcLibraryPreamble + `cc_library_headers {
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400308 name: "foo_headers",
309 export_system_include_dirs: [
Liz Kammer8337ea42021-09-10 10:06:32 -0400310 "shared_include_dir",
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400311 ],
312 target: {
Liz Kammer8337ea42021-09-10 10:06:32 -0400313 android: {
314 export_system_include_dirs: [
315 "android_include_dir",
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400316 ],
Liz Kammer8337ea42021-09-10 10:06:32 -0400317 },
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400318 linux_glibc: {
319 export_system_include_dirs: [
320 "linux_include_dir",
321 ],
322 },
323 darwin: {
324 export_system_include_dirs: [
325 "darwin_include_dir",
326 ],
327 },
328 },
329 arch: {
330 arm: {
Liz Kammer8337ea42021-09-10 10:06:32 -0400331 export_system_include_dirs: [
332 "arm_include_dir",
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400333 ],
Liz Kammer8337ea42021-09-10 10:06:32 -0400334 },
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400335 x86_64: {
336 export_system_include_dirs: [
337 "x86_64_include_dir",
338 ],
339 },
340 },
Liz Kammer8337ea42021-09-10 10:06:32 -0400341 include_build_directory: false,
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400342}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000343 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000344 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Zi Wang1cb11802022-12-09 16:08:54 -0800345 "export_system_includes": `select({
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400346 "//build/bazel/platforms/os:android": ["android_include_dir"],
347 "//build/bazel/platforms/os:darwin": ["darwin_include_dir"],
Colin Cross133782e2022-12-20 15:29:31 -0800348 "//build/bazel/platforms/os:linux_glibc": ["linux_include_dir"],
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400349 "//conditions:default": [],
Zi Wang1cb11802022-12-09 16:08:54 -0800350 }) + select({
351 "//build/bazel/platforms/arch:arm": ["arm_include_dir"],
352 "//build/bazel/platforms/arch:x86_64": ["x86_64_include_dir"],
353 "//conditions:default": [],
354 }) + ["shared_include_dir"]`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500355 }),
356 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200357 })
Rupert Shuttleworth54e78412021-02-15 11:04:32 +0000358}
Liz Kammerd366c902021-06-03 13:43:01 -0400359
360func TestCcLibraryHeadersNoCrtIgnored(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000361 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
362 Description: "cc_library_headers test",
363 ModuleTypeUnderTest: "cc_library_headers",
364 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
365 Filesystem: map[string]string{
Liz Kammerd366c902021-06-03 13:43:01 -0400366 "lib-1/lib1a.h": "",
367 "lib-1/lib1b.h": "",
368 "lib-2/lib2a.h": "",
369 "lib-2/lib2b.h": "",
370 "dir-1/dir1a.h": "",
371 "dir-1/dir1b.h": "",
372 "dir-2/dir2a.h": "",
373 "dir-2/dir2b.h": "",
374 "arch_arm64_exported_include_dir/a.h": "",
375 "arch_x86_exported_include_dir/b.h": "",
376 "arch_x86_64_exported_include_dir/c.h": "",
377 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000378 Blueprint: soongCcLibraryHeadersPreamble + `
Liz Kammerd366c902021-06-03 13:43:01 -0400379cc_library_headers {
380 name: "lib-1",
381 export_include_dirs: ["lib-1"],
382 no_libcrt: true,
Liz Kammer8337ea42021-09-10 10:06:32 -0400383 include_build_directory: false,
Liz Kammerd366c902021-06-03 13:43:01 -0400384}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000385 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000386 MakeBazelTarget("cc_library_headers", "lib-1", AttrNameToString{
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500387 "export_includes": `["lib-1"]`,
388 }),
389 },
Liz Kammerd366c902021-06-03 13:43:01 -0400390 })
391}
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000392
393func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000394 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
395 Description: "cc_library_headers exported_static_lib_headers is reexported",
396 ModuleTypeUnderTest: "cc_library_headers",
397 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
398 Filesystem: map[string]string{},
399 Blueprint: soongCcLibraryHeadersPreamble + `
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000400cc_library_headers {
401 name: "foo_headers",
402 export_static_lib_headers: ["foo_export"],
403 static_libs: ["foo_export", "foo_no_reexport"],
404 bazel_module: { bp2build_available: true },
405}
406` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000407 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000408 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000409 "deps": `[":foo_export"]`,
410 }),
411 },
412 })
413}
414
415func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000416 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
417 Description: "cc_library_headers exported_shared_lib_headers is reexported",
418 ModuleTypeUnderTest: "cc_library_headers",
419 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
420 Filesystem: map[string]string{},
421 Blueprint: soongCcLibraryHeadersPreamble + `
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000422cc_library_headers {
423 name: "foo_headers",
424 export_shared_lib_headers: ["foo_export"],
425 shared_libs: ["foo_export", "foo_no_reexport"],
426 bazel_module: { bp2build_available: true },
427}
428` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000429 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000430 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000431 "deps": `[":foo_export"]`,
432 }),
433 },
434 })
435}
436
437func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000438 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
439 Description: "cc_library_headers exported_header_lib_headers is reexported",
440 ModuleTypeUnderTest: "cc_library_headers",
441 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
442 Filesystem: map[string]string{},
443 Blueprint: soongCcLibraryHeadersPreamble + `
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000444cc_library_headers {
445 name: "foo_headers",
446 export_header_lib_headers: ["foo_export"],
447 header_libs: ["foo_export", "foo_no_reexport"],
448 bazel_module: { bp2build_available: true },
449}
450` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000451 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000452 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000453 "deps": `[":foo_export"]`,
454 }),
455 },
456 })
457}
Trevor Radcliffe7f897fc2022-08-18 15:53:00 +0000458
459func TestCcLibraryHeadersWholeStaticLibsReexported(t *testing.T) {
460 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
461 Description: "cc_library_headers whole_static_libs is reexported",
462 ModuleTypeUnderTest: "cc_library_headers",
463 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
464 Filesystem: map[string]string{},
465 Blueprint: soongCcLibraryHeadersPreamble + `
466cc_library_headers {
467 name: "foo_headers",
468 whole_static_libs: ["foo_export"],
469 bazel_module: { bp2build_available: true },
470}
471` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
472 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000473 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe7f897fc2022-08-18 15:53:00 +0000474 "deps": `[":foo_export"]`,
475 }),
476 },
477 })
478}