Print default val if all vals in axis match default val

To avoid verbosity, we currently dedupe keys in axis if its value
matches the value of //conditions:default. For axes where all values
might match the default value, we would effectively drop the common
value.

To fix this, we are now dropping the select statement and not the common
value.

Test: go test ./bp2build
Change-Id: Ic377b93ee2aba971753f6a5e7a62e15d1fcfa2bc
This commit is contained in:
Spandan Das 2023-04-26 02:56:37 +00:00
parent 9e4c6c9cc7
commit 921af32310
2 changed files with 19 additions and 0 deletions

View file

@ -21,6 +21,7 @@ import (
"android/soong/android"
"android/soong/android/allowlists"
"android/soong/bazel"
"android/soong/python"
)
@ -1931,3 +1932,17 @@ func TestGenerateConfigSetting(t *testing.T) {
Description: "Generating API contribution Bazel targets for custom module",
})
}
// If values of all keys in an axis are equal to //conditions:default, drop the axis and print the common value
func TestPrettyPrintSelectMapEqualValues(t *testing.T) {
lla := bazel.LabelListAttribute{
Value: bazel.LabelList{},
}
libFooImplLabel := bazel.Label{
Label: ":libfoo.impl",
}
lla.SetSelectValue(bazel.OsAndInApexAxis, bazel.AndroidAndNonApex, bazel.MakeLabelList([]bazel.Label{libFooImplLabel}))
lla.SetSelectValue(bazel.OsAndInApexAxis, bazel.ConditionsDefaultConfigKey, bazel.MakeLabelList([]bazel.Label{libFooImplLabel}))
actual, _ := prettyPrintAttribute(lla, 0)
android.AssertStringEquals(t, "Print the common value if all keys in an axis have the same value", `[":libfoo.impl"]`, actual)
}

View file

@ -279,6 +279,10 @@ func prettyPrintSelectMap(selectMap map[string]reflect.Value, defaultValue *stri
}
if len(selects) == 0 {
// If there is a default value, and there are no selects for this axis, print that without any selects.
if val, exists := selectMap[bazel.ConditionsDefaultSelectKey]; exists {
return prettyPrint(val, indent, emitZeroValues)
}
// No conditions (or all values are empty lists), so no need for a map.
return "", nil
}