blob: 7d9db6fe2799a9c161833598bc4a1cfa6c91f5f5 [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{
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500110 "export_includes": `[
Rupert Shuttleworth54e78412021-02-15 11:04:32 +0000111 "dir-1",
112 "dir-2",
Rupert Shuttleworthb8151682021-04-06 20:06:21 +0000113 ] + select({
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000114 "//build/bazel/platforms/arch:arm64": ["arch_arm64_exported_include_dir"],
115 "//build/bazel/platforms/arch:x86": ["arch_x86_exported_include_dir"],
116 "//build/bazel/platforms/arch:x86_64": ["arch_x86_64_exported_include_dir"],
Rupert Shuttleworthb8151682021-04-06 20:06:21 +0000117 "//conditions:default": [],
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500118 })`,
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
Liz Kammer8337ea42021-09-10 10:06:32 -0400189func TestCcLibraryHeadersOsSpecificHeader(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000190 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
191 Description: "cc_library_headers test with os-specific header_libs props",
192 ModuleTypeUnderTest: "cc_library_headers",
193 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
194 Filesystem: map[string]string{},
195 Blueprint: soongCcLibraryPreamble + `
Liz Kammer8337ea42021-09-10 10:06:32 -0400196cc_library_headers {
197 name: "android-lib",
198 bazel_module: { bp2build_available: false },
199}
200cc_library_headers {
201 name: "base-lib",
202 bazel_module: { bp2build_available: false },
203}
204cc_library_headers {
205 name: "darwin-lib",
206 bazel_module: { bp2build_available: false },
207}
208cc_library_headers {
209 name: "linux-lib",
210 bazel_module: { bp2build_available: false },
211}
212cc_library_headers {
213 name: "linux_bionic-lib",
214 bazel_module: { bp2build_available: false },
215}
216cc_library_headers {
217 name: "windows-lib",
218 bazel_module: { bp2build_available: false },
219}
Jingwen Chen91220d72021-03-24 02:18:33 -0400220cc_library_headers {
221 name: "foo_headers",
222 header_libs: ["base-lib"],
Trevor Radcliffefb6c5222022-06-17 19:42:28 +0000223 export_header_lib_headers: ["base-lib"],
Jingwen Chen91220d72021-03-24 02:18:33 -0400224 target: {
Trevor Radcliffefb6c5222022-06-17 19:42:28 +0000225 android: {
226 header_libs: ["android-lib"],
227 export_header_lib_headers: ["android-lib"],
228 },
229 darwin: {
230 header_libs: ["darwin-lib"],
231 export_header_lib_headers: ["darwin-lib"],
232 },
233 linux_bionic: {
234 header_libs: ["linux_bionic-lib"],
235 export_header_lib_headers: ["linux_bionic-lib"],
236 },
237 linux_glibc: {
238 header_libs: ["linux-lib"],
239 export_header_lib_headers: ["linux-lib"],
240 },
241 windows: {
242 header_libs: ["windows-lib"],
243 export_header_lib_headers: ["windows-lib"],
244 },
Jingwen Chen91220d72021-03-24 02:18:33 -0400245 },
Liz Kammer8337ea42021-09-10 10:06:32 -0400246 include_build_directory: false,
Jingwen Chen91220d72021-03-24 02:18:33 -0400247}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000248 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000249 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffefb6c5222022-06-17 19:42:28 +0000250 "deps": `[":base-lib"] + select({
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000251 "//build/bazel/platforms/os:android": [":android-lib"],
252 "//build/bazel/platforms/os:darwin": [":darwin-lib"],
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000253 "//build/bazel/platforms/os:linux": [":linux-lib"],
254 "//build/bazel/platforms/os:linux_bionic": [":linux_bionic-lib"],
255 "//build/bazel/platforms/os:windows": [":windows-lib"],
Jingwen Chen91220d72021-03-24 02:18:33 -0400256 "//conditions:default": [],
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500257 })`,
258 }),
259 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200260 })
261}
262
263func TestCcLibraryHeadersOsSpecficHeaderLibsExportHeaderLibHeaders(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000264 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
265 Description: "cc_library_headers test with os-specific header_libs and export_header_lib_headers props",
266 ModuleTypeUnderTest: "cc_library_headers",
267 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
268 Filesystem: map[string]string{},
269 Blueprint: soongCcLibraryPreamble + `
Liz Kammer8337ea42021-09-10 10:06:32 -0400270cc_library_headers {
271 name: "android-lib",
272 bazel_module: { bp2build_available: false },
273 }
274cc_library_headers {
275 name: "exported-lib",
276 bazel_module: { bp2build_available: false },
277}
Jingwen Chen91220d72021-03-24 02:18:33 -0400278cc_library_headers {
279 name: "foo_headers",
280 target: {
Liz Kammer7a210ac2021-09-22 15:52:58 -0400281 android: {
282 header_libs: ["android-lib", "exported-lib"],
283 export_header_lib_headers: ["exported-lib"]
284 },
Jingwen Chen91220d72021-03-24 02:18:33 -0400285 },
Liz Kammer8337ea42021-09-10 10:06:32 -0400286 include_build_directory: false,
Jingwen Chen91220d72021-03-24 02:18:33 -0400287}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000288 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000289 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500290 "deps": `select({
Chris Parsonsd6358772021-05-18 18:35:24 -0400291 "//build/bazel/platforms/os:android": [":exported-lib"],
292 "//conditions:default": [],
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500293 })`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500294 }),
295 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200296 })
297}
298
299func TestCcLibraryHeadersArchAndTargetExportSystemIncludes(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000300 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
301 Description: "cc_library_headers test with arch-specific and target-specific export_system_include_dirs props",
302 ModuleTypeUnderTest: "cc_library_headers",
303 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
304 Filesystem: map[string]string{},
305 Blueprint: soongCcLibraryPreamble + `cc_library_headers {
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400306 name: "foo_headers",
307 export_system_include_dirs: [
Liz Kammer8337ea42021-09-10 10:06:32 -0400308 "shared_include_dir",
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400309 ],
310 target: {
Liz Kammer8337ea42021-09-10 10:06:32 -0400311 android: {
312 export_system_include_dirs: [
313 "android_include_dir",
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400314 ],
Liz Kammer8337ea42021-09-10 10:06:32 -0400315 },
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400316 linux_glibc: {
317 export_system_include_dirs: [
318 "linux_include_dir",
319 ],
320 },
321 darwin: {
322 export_system_include_dirs: [
323 "darwin_include_dir",
324 ],
325 },
326 },
327 arch: {
328 arm: {
Liz Kammer8337ea42021-09-10 10:06:32 -0400329 export_system_include_dirs: [
330 "arm_include_dir",
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400331 ],
Liz Kammer8337ea42021-09-10 10:06:32 -0400332 },
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400333 x86_64: {
334 export_system_include_dirs: [
335 "x86_64_include_dir",
336 ],
337 },
338 },
Liz Kammer8337ea42021-09-10 10:06:32 -0400339 include_build_directory: false,
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400340}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000341 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000342 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500343 "export_system_includes": `["shared_include_dir"] + select({
Rupert Shuttleworth375451e2021-04-26 07:49:08 -0400344 "//build/bazel/platforms/arch:arm": ["arm_include_dir"],
345 "//build/bazel/platforms/arch:x86_64": ["x86_64_include_dir"],
346 "//conditions:default": [],
347 }) + select({
348 "//build/bazel/platforms/os:android": ["android_include_dir"],
349 "//build/bazel/platforms/os:darwin": ["darwin_include_dir"],
350 "//build/bazel/platforms/os:linux": ["linux_include_dir"],
351 "//conditions:default": [],
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500352 })`,
353 }),
354 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200355 })
Rupert Shuttleworth54e78412021-02-15 11:04:32 +0000356}
Liz Kammerd366c902021-06-03 13:43:01 -0400357
358func TestCcLibraryHeadersNoCrtIgnored(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000359 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
360 Description: "cc_library_headers test",
361 ModuleTypeUnderTest: "cc_library_headers",
362 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
363 Filesystem: map[string]string{
Liz Kammerd366c902021-06-03 13:43:01 -0400364 "lib-1/lib1a.h": "",
365 "lib-1/lib1b.h": "",
366 "lib-2/lib2a.h": "",
367 "lib-2/lib2b.h": "",
368 "dir-1/dir1a.h": "",
369 "dir-1/dir1b.h": "",
370 "dir-2/dir2a.h": "",
371 "dir-2/dir2b.h": "",
372 "arch_arm64_exported_include_dir/a.h": "",
373 "arch_x86_exported_include_dir/b.h": "",
374 "arch_x86_64_exported_include_dir/c.h": "",
375 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000376 Blueprint: soongCcLibraryHeadersPreamble + `
Liz Kammerd366c902021-06-03 13:43:01 -0400377cc_library_headers {
378 name: "lib-1",
379 export_include_dirs: ["lib-1"],
380 no_libcrt: true,
Liz Kammer8337ea42021-09-10 10:06:32 -0400381 include_build_directory: false,
Liz Kammerd366c902021-06-03 13:43:01 -0400382}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000383 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000384 MakeBazelTarget("cc_library_headers", "lib-1", AttrNameToString{
Liz Kammer78cfdaa2021-11-08 12:56:31 -0500385 "export_includes": `["lib-1"]`,
386 }),
387 },
Liz Kammerd366c902021-06-03 13:43:01 -0400388 })
389}
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000390
391func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000392 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
393 Description: "cc_library_headers exported_static_lib_headers is reexported",
394 ModuleTypeUnderTest: "cc_library_headers",
395 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
396 Filesystem: map[string]string{},
397 Blueprint: soongCcLibraryHeadersPreamble + `
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000398cc_library_headers {
399 name: "foo_headers",
400 export_static_lib_headers: ["foo_export"],
401 static_libs: ["foo_export", "foo_no_reexport"],
402 bazel_module: { bp2build_available: true },
403}
404` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000405 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000406 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000407 "deps": `[":foo_export"]`,
408 }),
409 },
410 })
411}
412
413func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000414 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
415 Description: "cc_library_headers exported_shared_lib_headers is reexported",
416 ModuleTypeUnderTest: "cc_library_headers",
417 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
418 Filesystem: map[string]string{},
419 Blueprint: soongCcLibraryHeadersPreamble + `
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000420cc_library_headers {
421 name: "foo_headers",
422 export_shared_lib_headers: ["foo_export"],
423 shared_libs: ["foo_export", "foo_no_reexport"],
424 bazel_module: { bp2build_available: true },
425}
426` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000427 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000428 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000429 "deps": `[":foo_export"]`,
430 }),
431 },
432 })
433}
434
435func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000436 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
437 Description: "cc_library_headers exported_header_lib_headers is reexported",
438 ModuleTypeUnderTest: "cc_library_headers",
439 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
440 Filesystem: map[string]string{},
441 Blueprint: soongCcLibraryHeadersPreamble + `
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000442cc_library_headers {
443 name: "foo_headers",
444 export_header_lib_headers: ["foo_export"],
445 header_libs: ["foo_export", "foo_no_reexport"],
446 bazel_module: { bp2build_available: true },
447}
448` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000449 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000450 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe2be7f542022-06-22 20:30:55 +0000451 "deps": `[":foo_export"]`,
452 }),
453 },
454 })
455}
Trevor Radcliffe7f897fc2022-08-18 15:53:00 +0000456
457func TestCcLibraryHeadersWholeStaticLibsReexported(t *testing.T) {
458 runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
459 Description: "cc_library_headers whole_static_libs is reexported",
460 ModuleTypeUnderTest: "cc_library_headers",
461 ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
462 Filesystem: map[string]string{},
463 Blueprint: soongCcLibraryHeadersPreamble + `
464cc_library_headers {
465 name: "foo_headers",
466 whole_static_libs: ["foo_export"],
467 bazel_module: { bp2build_available: true },
468}
469` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
470 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000471 MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
Trevor Radcliffe7f897fc2022-08-18 15:53:00 +0000472 "deps": `[":foo_export"]`,
473 }),
474 },
475 })
476}