Add a test specifying a value for a `Void` expansion in `SetValue` policy.
Add a test to make sure that we ignore any of the provided values for the void flag and successfully set the expanded ones.
PiperOrigin-RevId: 440204560
diff --git a/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java b/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
index 136769b..3e88a1f 100644
--- a/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
+++ b/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
@@ -434,10 +434,7 @@
// Flag value from the expansion, overridability from the original policy, unless the flag is
// repeatable, in which case we care about appendability, not overridability.
- SetValue.Builder setValueExpansion = SetValue.newBuilder();
- for (String value : subflagValue) {
- setValueExpansion.addFlagValue(value);
- }
+ SetValue.Builder setValueExpansion = SetValue.newBuilder().addAllFlagValue(subflagValue);
switch (originalPolicy.policy.getSetValue().getBehavior()) {
case UNDEFINED:
diff --git a/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java b/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java
index 3320c46..aa90fcb 100644
--- a/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java
+++ b/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java
@@ -213,14 +213,19 @@
}
@Test
- public void finalValueIgnoreOverrides_setFlagWithExpansion_setsExpandedValues() throws Exception {
+ public void setFlagWithExpansion_finalValueIgnoreOverrides_setsExpandedValuesAsFinal(
+ @TestParameter({"null", "", "some value"}) String value) throws Exception {
InvocationPolicy.Builder invocationPolicy = InvocationPolicy.newBuilder();
- invocationPolicy
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion")
- // SetValue must have no values for a Void flag.
- .getSetValueBuilder()
- .setBehavior(Behavior.FINAL_VALUE_IGNORE_OVERRIDES);
+ SetValue.Builder setValue =
+ invocationPolicy
+ .addFlagPoliciesBuilder()
+ .setFlagName("test_expansion")
+ // SetValue must have no values for a Void flag.
+ .getSetValueBuilder()
+ .setBehavior(Behavior.FINAL_VALUE_IGNORE_OVERRIDES);
+ if (value != null) {
+ setValue.addFlagValue(value);
+ }
InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicy);
// Unrelated flag, but --test_expansion is not set