use of com.google.devtools.build.lib.flags.InvocationPolicyEnforcer in project bazel by bazelbuild.
the class InvocationPolicyEnforcerTest method testSetValueWithNoValueThrows.
@Test
public void testSetValueWithNoValueThrows() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder.addFlagPoliciesBuilder().setFlagName("test_string").getSetValueBuilder();
InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
parser.parse("--test_string=user value");
TestOptions testOptions = getTestOptions();
assertEquals("user value", testOptions.testString);
try {
enforcer.enforce(parser, "build");
fail();
} catch (OptionsParsingException e) {
// expected.
}
}
use of com.google.devtools.build.lib.flags.InvocationPolicyEnforcer in project bazel by bazelbuild.
the class InvocationPolicyEnforcerTest method testUseDefaultWithImplicitlyRequiredFlag.
@Test
public void testUseDefaultWithImplicitlyRequiredFlag() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder.addFlagPoliciesBuilder().setFlagName("an_implicit_requirement").getUseDefaultBuilder();
InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
parser.parse("--test_implicit_requirement=user value", "--an_implicit_requirement=implicit user value");
// test_implicit_requirement sets an_implicit_requirement to "foo", which ignores the user's
// value because the parser processes implicit values last.
TestOptions testOptions = getTestOptions();
assertEquals("user value", testOptions.testImplicitRequirement);
assertEquals("foo", testOptions.anImplicitRequirement);
// Then policy puts an_implicit_requirement back to its default.
enforcer.enforce(parser, "build");
testOptions = getTestOptions();
assertEquals("user value", testOptions.testImplicitRequirement);
assertEquals("implicit default", testOptions.anImplicitRequirement);
}
use of com.google.devtools.build.lib.flags.InvocationPolicyEnforcer in project bazel by bazelbuild.
the class InvocationPolicyEnforcerTest method testDisallowValuesDisallowsMultipleValues.
@Test
public void testDisallowValuesDisallowsMultipleValues() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder.addFlagPoliciesBuilder().setFlagName("test_multiple_string").getDisallowValuesBuilder().addDisallowedValues("foo").addDisallowedValues("bar");
InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
parser.parse("--test_multiple_string=baz", "--test_multiple_string=bar");
// Option should be "baz" and "bar" as specified by the user.
TestOptions testOptions = getTestOptions();
assertThat(testOptions.testMultipleString).containsExactly("baz", "bar").inOrder();
try {
enforcer.enforce(parser, "build");
fail();
} catch (OptionsParsingException e) {
// expected, since bar is disallowed.
}
}
use of com.google.devtools.build.lib.flags.InvocationPolicyEnforcer in project bazel by bazelbuild.
the class InvocationPolicyEnforcerTest method testDisallowValuesSetsNewValueWhenDefaultIsDisallowed.
@Test
public void testDisallowValuesSetsNewValueWhenDefaultIsDisallowed() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder.addFlagPoliciesBuilder().setFlagName("test_string").getDisallowValuesBuilder().addDisallowedValues(STRING_FLAG_DEFAULT).setNewValue("baz");
InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
// Option should be the default since the use didn't specify a value.
TestOptions testOptions = getTestOptions();
assertEquals(STRING_FLAG_DEFAULT, testOptions.testString);
enforcer.enforce(parser, "build");
// Should now be "baz" because the policy set the new default to "baz"
testOptions = getTestOptions();
assertEquals("baz", testOptions.testString);
}
use of com.google.devtools.build.lib.flags.InvocationPolicyEnforcer in project bazel by bazelbuild.
the class InvocationPolicyEnforcerTest method testSetValueWithExpansionFlags.
@Test
public void testSetValueWithExpansionFlags() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder.addFlagPoliciesBuilder().setFlagName("test_expansion").getSetValueBuilder().addFlagValue(// this value is arbitrary, the value for a Void flag is ignored
"true");
InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
// Unrelated flag, but --test_expansion is not set
parser.parse("--test_string=foo");
// The flags that --test_expansion expands into should still be their default values
TestOptions testOptions = getTestOptions();
assertTrue(testOptions.testExpansionA);
assertTrue(testOptions.testExpansionB);
assertEquals(12, testOptions.testExpansionC);
assertEquals("foo", testOptions.testExpansionD);
enforcer.enforce(parser, "build");
// After policy enforcement, the flags should be the values from --test_expansion
testOptions = getTestOptions();
assertFalse(testOptions.testExpansionA);
assertFalse(testOptions.testExpansionB);
assertEquals(42, testOptions.testExpansionC);
assertEquals("bar", testOptions.testExpansionD);
}
Aggregations