Loading android/mutator.go +14 −9 Original line number Diff line number Diff line Loading @@ -709,22 +709,27 @@ 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) 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 } if len(tags) > 0 { // This avoids creating a tags attr with an empty list if there are no tags. attr.Value = tags result := make([]string, 0, len(apexAvailable)) for _, a := range apexAvailable { result = append(result, "apex_available="+a) } return attr return result } func (t *topDownMutatorContext) createBazelTargetModule( Loading android/mutator_test.go +20 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android import ( "fmt" "reflect" "strings" "testing" Loading Loading @@ -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") } } Loading
android/mutator.go +14 −9 Original line number Diff line number Diff line Loading @@ -709,22 +709,27 @@ 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) 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 } if len(tags) > 0 { // This avoids creating a tags attr with an empty list if there are no tags. attr.Value = tags result := make([]string, 0, len(apexAvailable)) for _, a := range apexAvailable { result = append(result, "apex_available="+a) } return attr return result } func (t *topDownMutatorContext) createBazelTargetModule( Loading
android/mutator_test.go +20 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android import ( "fmt" "reflect" "strings" "testing" Loading Loading @@ -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") } }