Allow Invocation Policy to set output-affecting flags in conjunction with PROJECT.scl files.
PiperOrigin-RevId: 689004819
Change-Id: Ide4749c79903af3f85774ab9a5666458f2fa9090
diff --git a/src/main/java/com/google/devtools/common/options/GlobalRcUtils.java b/src/main/java/com/google/devtools/common/options/GlobalRcUtils.java
index 7d8da99..bff03a0 100644
--- a/src/main/java/com/google/devtools/common/options/GlobalRcUtils.java
+++ b/src/main/java/com/google/devtools/common/options/GlobalRcUtils.java
@@ -28,7 +28,12 @@
&& option.getOrigin().getSource().equals("client")) {
return true;
}
+ if (option.getOrigin().getSource() != null
+ && option.getOrigin().getSource().equals("Invocation policy")) {
+ return true;
+ }
return false;
};
- // LINT.ThenChange(//src/main/cpp/option_processor.cc)
+ // LINT.ThenChange(//src/main/cpp/option_processor.cc,
+ // src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
}
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 4046ebe..e43ae1b 100644
--- a/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
+++ b/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
@@ -52,7 +52,10 @@
public final class InvocationPolicyEnforcer {
private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
+ // LINT.IfChange
private static final String INVOCATION_POLICY_SOURCE = "Invocation policy";
+ // LINT.ThenChange(//src/main/java/com/google/devtools/common/options/GlobalRcUtils.java,
+ // src/main/java/com/google/devtools/common/options/GlobalRcUtils.java
private final InvocationPolicy invocationPolicy;
private final Level loglevel;
@Nullable private final Object conversionContext;
diff --git a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
index a599712..98cb297 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
@@ -2641,6 +2641,22 @@
assertThat(parser.getUserOptions()).containsExactly("--foo");
}
+ @Test
+ public void testOptionsParser_getUserOptions_excludesInvocationPolicy() throws Exception {
+ OptionsParser parser =
+ OptionsParser.builder()
+ .optionsClasses(ExpandingOptions.class, ExpandingOptionsFallback.class)
+ .build();
+ parser.parseWithSourceFunction(
+ PriorityCategory.RC_FILE, o -> "Invocation policy", ImmutableList.of("--foo"), null);
+ assertThat(parser.getUserOptions()).isEmpty();
+
+ parser.parseWithSourceFunction(
+ PriorityCategory.RC_FILE, o -> ".bazelrc", ImmutableList.of("--foo"), null);
+
+ assertThat(parser.getUserOptions()).containsExactly("--foo");
+ }
+
private static OptionInstanceOrigin createInvocationPolicyOrigin() {
return createInvocationPolicyOrigin(/*implicitDependent=*/ null, /*expandedFrom=*/ null);
}