Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d09ec6f authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

Merge "Add ConvertApexAvailableToTags"

parents f7c0afdb fb11c1ce
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -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(
+20 −0
Original line number Diff line number Diff line
@@ -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")
	}
}