Merge "Add ConvertApexAvailableToTags"

This commit is contained in:
Cole Faust 2023-02-14 00:26:52 +00:00 committed by Gerrit Code Review
commit 1d09ec6fca
2 changed files with 34 additions and 9 deletions

View file

@ -709,24 +709,29 @@ func (t *topDownMutatorContext) CreateBazelTargetModuleWithRestrictions(
// module and returns it as a list of keyed tags.
func ApexAvailableTags(mod Module) bazel.StringListAttribute {
attr := bazel.StringListAttribute{}
tags := []string{}
// Transform specific attributes into tags.
if am, ok := mod.(ApexModule); ok {
// TODO(b/218841706): hidl_interface has the apex_available prop, but it's
// defined directly as a prop and not via ApexModule, so this doesn't
// pick those props up.
// TODO(b/260694842): This does not pick up aidl_interface.backend.ndk.apex_available.
for _, a := range am.apexModuleBase().ApexAvailable() {
tags = append(tags, "apex_available="+a)
}
}
if len(tags) > 0 {
// This avoids creating a tags attr with an empty list if there are no tags.
attr.Value = tags
attr.Value = ConvertApexAvailableToTags(am.apexModuleBase().ApexAvailable())
}
return attr
}
func ConvertApexAvailableToTags(apexAvailable []string) []string {
if len(apexAvailable) == 0 {
// We need nil specifically to make bp2build not add the tags property at all,
// instead of adding it with an empty list
return nil
}
result := make([]string, 0, len(apexAvailable))
for _, a := range apexAvailable {
result = append(result, "apex_available="+a)
}
return result
}
func (t *topDownMutatorContext) createBazelTargetModule(
bazelProps bazel.BazelTargetModuleProperties,
commonAttrs CommonAttributes,

View file

@ -16,6 +16,7 @@ package android
import (
"fmt"
"reflect"
"strings"
"testing"
@ -267,3 +268,22 @@ func TestNoCreateVariationsInFinalDeps(t *testing.T) {
FixtureWithRootAndroidBp(`test {name: "foo"}`),
).RunTest(t)
}
func TestConvertApexAvailableToTags(t *testing.T) {
input := []string{
"com.android.adbd",
"//apex_available:platform",
}
actual := ConvertApexAvailableToTags(input)
expected := []string{
"apex_available=com.android.adbd",
"apex_available=//apex_available:platform",
}
if !reflect.DeepEqual(actual, expected) {
t.Errorf("Expected: %v, actual: %v", expected, actual)
}
if ConvertApexAvailableToTags(nil) != nil {
t.Errorf("Expected providing nil to return nil")
}
}