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:
parent
9e4c6c9cc7
commit
921af32310
2 changed files with 19 additions and 0 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue