diff options
| author | 2021-02-17 13:22:03 -0500 | |
|---|---|---|
| committer | 2021-03-15 13:09:25 -0400 | |
| commit | ba3ea16f14eb1017fd75aead089ca34b6f32406b (patch) | |
| tree | 57158b4cdf73362469cf120ce3cd28f80a5f4043 /bp2build/build_conversion_test.go | |
| parent | ca5e611e0af6024892e9ca4f0de0d44e557d4944 (diff) | |
Use handcrafted build targets in bp2build
If both bp2build_available and label are specified, label will be
preferred.
Initially, we copy the entire BUILD.bazel file. Eventually we may move
this to use bazel query for a more accurate result.
Test: go test *
Test: build/bazel/scripts/milestone-2/demo.sh full
Test: GENERATE_BAZEL_FILES=true m nothing
edit bionic/libc/tools/BUILD.bazel
GENERATE_BAZEL_FILES=true m nothing and verify changes picked up
Bug: 180516554
Change-Id: I43025583300e6b10d2c18032cd4a76237b578d59
Diffstat (limited to 'bp2build/build_conversion_test.go')
| -rw-r--r-- | bp2build/build_conversion_test.go | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/bp2build/build_conversion_test.go b/bp2build/build_conversion_test.go index aa4fc1d97..89acbe96a 100644 --- a/bp2build/build_conversion_test.go +++ b/bp2build/build_conversion_test.go @@ -1221,3 +1221,157 @@ func TestAllowlistingBp2buildTargets(t *testing.T) { } } } + +func TestCombineBuildFilesBp2buildTargets(t *testing.T) { + testCases := []struct { + description string + moduleTypeUnderTest string + moduleTypeUnderTestFactory android.ModuleFactory + moduleTypeUnderTestBp2BuildMutator func(android.TopDownMutatorContext) + preArchMutators []android.RegisterMutatorFunc + depsMutators []android.RegisterMutatorFunc + bp string + expectedBazelTargets []string + fs map[string]string + dir string + }{ + { + description: "filegroup bazel_module.label", + moduleTypeUnderTest: "filegroup", + moduleTypeUnderTestFactory: android.FileGroupFactory, + moduleTypeUnderTestBp2BuildMutator: android.FilegroupBp2Build, + bp: `filegroup { + name: "fg_foo", + bazel_module: { label: "//other:fg_foo" }, +}`, + expectedBazelTargets: []string{ + `// BUILD file`, + }, + fs: map[string]string{ + "other/BUILD.bazel": `// BUILD file`, + }, + }, + { + description: "multiple bazel_module.label same BUILD", + moduleTypeUnderTest: "filegroup", + moduleTypeUnderTestFactory: android.FileGroupFactory, + moduleTypeUnderTestBp2BuildMutator: android.FilegroupBp2Build, + bp: `filegroup { + name: "fg_foo", + bazel_module: { label: "//other:fg_foo" }, +} + +filegroup { + name: "foo", + bazel_module: { label: "//other:foo" }, +}`, + expectedBazelTargets: []string{ + `// BUILD file`, + }, + fs: map[string]string{ + "other/BUILD.bazel": `// BUILD file`, + }, + }, + { + description: "filegroup bazel_module.label and bp2build", + moduleTypeUnderTest: "filegroup", + moduleTypeUnderTestFactory: android.FileGroupFactory, + moduleTypeUnderTestBp2BuildMutator: android.FilegroupBp2Build, + bp: `filegroup { + name: "fg_foo", + bazel_module: { + label: "//other:fg_foo", + bp2build_available: true, + }, +}`, + expectedBazelTargets: []string{ + `filegroup( + name = "fg_foo", +)`, + `// BUILD file`, + }, + fs: map[string]string{ + "other/BUILD.bazel": `// BUILD file`, + }, + }, + { + description: "filegroup bazel_module.label and filegroup bp2build", + moduleTypeUnderTest: "filegroup", + moduleTypeUnderTestFactory: android.FileGroupFactory, + moduleTypeUnderTestBp2BuildMutator: android.FilegroupBp2Build, + bp: `filegroup { + name: "fg_foo", + bazel_module: { + label: "//other:fg_foo", + }, +} + +filegroup { + name: "fg_bar", + bazel_module: { + bp2build_available: true, + }, +}`, + expectedBazelTargets: []string{ + `filegroup( + name = "fg_bar", +)`, + `// BUILD file`, + }, + fs: map[string]string{ + "other/BUILD.bazel": `// BUILD file`, + }, + }, + } + + dir := "." + for _, testCase := range testCases { + fs := make(map[string][]byte) + toParse := []string{ + "Android.bp", + } + for f, content := range testCase.fs { + if strings.HasSuffix(f, "Android.bp") { + toParse = append(toParse, f) + } + fs[f] = []byte(content) + } + config := android.TestConfig(buildDir, nil, testCase.bp, fs) + ctx := android.NewTestContext(config) + ctx.RegisterModuleType(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestFactory) + for _, m := range testCase.depsMutators { + ctx.DepsBp2BuildMutators(m) + } + ctx.RegisterBp2BuildMutator(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestBp2BuildMutator) + ctx.RegisterForBazelConversion() + + _, errs := ctx.ParseFileList(dir, toParse) + if Errored(t, testCase.description, errs) { + continue + } + _, errs = ctx.ResolveDependencies(config) + if Errored(t, testCase.description, errs) { + continue + } + + checkDir := dir + if testCase.dir != "" { + checkDir = testCase.dir + } + bazelTargets := generateBazelTargetsForDir(NewCodegenContext(config, *ctx.Context, Bp2Build), checkDir) + if actualCount, expectedCount := len(bazelTargets), len(testCase.expectedBazelTargets); actualCount != expectedCount { + t.Errorf("%s: Expected %d bazel target, got %d\n%s", testCase.description, expectedCount, actualCount, bazelTargets) + } else { + for i, target := range bazelTargets { + if w, g := testCase.expectedBazelTargets[i], target.content; w != g { + t.Errorf( + "%s: Expected generated Bazel target to be '%s', got '%s'", + testCase.description, + w, + g, + ) + } + } + } + } +} |