Split up InvocationPolicyEnforcerTest.

It was large and unwieldy - keep common logic in the original file but split out the tests into groups by invocation policy operation type.

--
PiperOrigin-RevId: 150759733
MOS_MIGRATED_REVID=150759733
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/InvocationPolicyBreakingConditionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/InvocationPolicyBreakingConditionsTest.java
new file mode 100644
index 0000000..ba6916a
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/runtime/InvocationPolicyBreakingConditionsTest.java
@@ -0,0 +1,102 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.runtime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
+import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Test InvocationPolicies on cases where we expect it to fail gracefully. */
+@RunWith(JUnit4.class)
+public class InvocationPolicyBreakingConditionsTest extends InvocationPolicyEnforcerTestBase {
+
+  // Useful constants
+  public static final String TEST_STRING_USER_VALUE = "user value";
+  public static final String TEST_STRING_POLICY_VALUE = "policy value";
+  public static final String TEST_STRING_POLICY_VALUE_2 = "policy value 2";
+
+  @Test
+  public void testFlagPolicyDoesNotApply() throws Exception {
+    InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
+    invocationPolicyBuilder
+        .addFlagPoliciesBuilder()
+        .setFlagName("test_string")
+        .addCommands("build")
+        .getSetValueBuilder()
+        .addFlagValue(TEST_STRING_POLICY_VALUE);
+
+    InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
+    parser.parse("--test_string=" + TEST_STRING_USER_VALUE);
+
+    TestOptions testOptions = getTestOptions();
+    assertThat(testOptions.testString).isEqualTo(TEST_STRING_USER_VALUE);
+
+    enforcer.enforce(parser, "test");
+
+    // Still user value.
+    testOptions = getTestOptions();
+    assertThat(testOptions.testString).isEqualTo(TEST_STRING_USER_VALUE);
+  }
+
+  @Test
+  public void testNonExistantFlagFromPolicy() throws Exception {
+    InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
+    invocationPolicyBuilder
+        .addFlagPoliciesBuilder()
+        .setFlagName("i_do_not_exist")
+        .getSetValueBuilder()
+        .addFlagValue(TEST_STRING_POLICY_VALUE);
+    invocationPolicyBuilder
+        .addFlagPoliciesBuilder()
+        .setFlagName("test_string")
+        .getSetValueBuilder()
+        .addFlagValue(TEST_STRING_POLICY_VALUE_2);
+
+    InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
+    parser.parse("--test_string=" + TEST_STRING_USER_VALUE);
+
+    TestOptions testOptions = getTestOptions();
+    assertThat(testOptions.testString).isEqualTo(TEST_STRING_USER_VALUE);
+
+    enforcer.enforce(parser, "test");
+
+    // Still user value.
+    testOptions = getTestOptions();
+    assertThat(testOptions.testString).isEqualTo(TEST_STRING_POLICY_VALUE_2);
+  }
+
+  @Test
+  public void testOperationNotSet() throws Exception {
+    InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
+    invocationPolicyBuilder.addFlagPoliciesBuilder();
+    // No operations added to the flag policy
+
+    InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
+    parser.parse("--test_string=" + TEST_STRING_USER_VALUE);
+
+    TestOptions testOptions = getTestOptions();
+    assertThat(testOptions.testString).isEqualTo(TEST_STRING_USER_VALUE);
+
+    // Shouldn't throw.
+    enforcer.enforce(parser, "test");
+
+    // Still user value.
+    testOptions = getTestOptions();
+    assertThat(testOptions.testString).isEqualTo(TEST_STRING_USER_VALUE);
+  }
+}