• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package bp2build
2
3import (
4	"fmt"
5	"testing"
6
7	"android/soong/cc"
8)
9
10func TestSharedPrebuiltLibrary(t *testing.T) {
11	RunBp2BuildTestCaseSimple(t,
12		Bp2buildTestCase{
13			Description:                "prebuilt library shared simple",
14			ModuleTypeUnderTest:        "cc_prebuilt_library_shared",
15			ModuleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
16			Filesystem: map[string]string{
17				"libf.so": "",
18			},
19			Blueprint: `
20cc_prebuilt_library_shared {
21	name: "libtest",
22	srcs: ["libf.so"],
23	bazel_module: { bp2build_available: true },
24}`,
25			ExpectedBazelTargets: []string{
26				MakeBazelTarget("cc_prebuilt_library_shared", "libtest", AttrNameToString{
27					"shared_library": `"libf.so"`,
28				}),
29			},
30		})
31}
32
33func TestSharedPrebuiltLibraryWithArchVariance(t *testing.T) {
34	RunBp2BuildTestCaseSimple(t,
35		Bp2buildTestCase{
36			Description:                "prebuilt library shared with arch variance",
37			ModuleTypeUnderTest:        "cc_prebuilt_library_shared",
38			ModuleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
39			Filesystem: map[string]string{
40				"libf.so": "",
41				"libg.so": "",
42			},
43			Blueprint: `
44cc_prebuilt_library_shared {
45	name: "libtest",
46	arch: {
47		arm64: { srcs: ["libf.so"], },
48		arm: { srcs: ["libg.so"], },
49	},
50	bazel_module: { bp2build_available: true },
51}`,
52			ExpectedBazelTargets: []string{
53				MakeBazelTarget("cc_prebuilt_library_shared", "libtest", AttrNameToString{
54					"shared_library": `select({
55        "//build/bazel/platforms/arch:arm": "libg.so",
56        "//build/bazel/platforms/arch:arm64": "libf.so",
57        "//conditions:default": None,
58    })`,
59				}),
60			},
61		})
62}
63
64func TestSharedPrebuiltLibrarySharedStanzaFails(t *testing.T) {
65	RunBp2BuildTestCaseSimple(t,
66		Bp2buildTestCase{
67			Description:                "prebuilt library shared with shared stanza fails because multiple sources",
68			ModuleTypeUnderTest:        "cc_prebuilt_library_shared",
69			ModuleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
70			Filesystem: map[string]string{
71				"libf.so": "",
72				"libg.so": "",
73			},
74			Blueprint: `
75cc_prebuilt_library_shared {
76	name: "libtest",
77	srcs: ["libf.so"],
78	shared: {
79		srcs: ["libg.so"],
80	},
81	bazel_module: { bp2build_available: true},
82}`,
83			ExpectedErr: fmt.Errorf("Expected at most one source file"),
84		})
85}
86