Add incompatible_disallow_rule_execution_platform_constraints_allowed flag.
Part of #8136 and #8134.
RELNOTES: Adds
incompatible_disallow_rule_execution_platform_constraints_allowed, which
disallows the use of the "execution_platform_constraints_allowed"
attribute when defining new rules.
Closes #8145.
PiperOrigin-RevId: 245405049
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 8c70a04..7bda34c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -137,7 +137,7 @@
}
private void registerDummyUserDefinedFunction() throws Exception {
- eval("def impl():\n" + " return 0\n");
+ eval("def impl():", " pass");
}
@Test
@@ -1739,7 +1739,14 @@
}
@Test
- public void testTargetsCanAddExecutionPlatformConstraints() throws Exception {
+ public void testTargetsCanAddExecutionPlatformConstraints_enabled() throws Exception {
+ StarlarkSemantics semantics =
+ StarlarkSemantics.DEFAULT_SEMANTICS.toBuilder()
+ .incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(false)
+ .build();
+ ev = createEvaluationTestCase(semantics);
+ ev.initialize();
+
registerDummyUserDefinedFunction();
scratch.file("test/BUILD", "toolchain_type(name = 'my_toolchain_type')");
evalAndExport(
@@ -1753,6 +1760,47 @@
}
@Test
+ public void testTargetsCanAddExecutionPlatformConstraints_notEnabled() throws Exception {
+ StarlarkSemantics semantics =
+ StarlarkSemantics.DEFAULT_SEMANTICS.toBuilder()
+ .incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(false)
+ .build();
+ ev = createEvaluationTestCase(semantics);
+ ev.initialize();
+
+ registerDummyUserDefinedFunction();
+ scratch.file("test/BUILD", "toolchain_type(name = 'my_toolchain_type')");
+ evalAndExport(
+ "r1 = rule(impl, ",
+ " toolchains=['//test:my_toolchain_type'],",
+ " execution_platform_constraints_allowed=False,",
+ ")");
+ RuleClass c = ((SkylarkRuleFunction) lookup("r1")).getRuleClass();
+ assertThat(c.executionPlatformConstraintsAllowed())
+ .isEqualTo(ExecutionPlatformConstraintsAllowed.PER_RULE);
+ }
+
+ @Test
+ public void testTargetsCanAddExecutionPlatformConstraints_disallowed() throws Exception {
+ StarlarkSemantics semantics =
+ StarlarkSemantics.DEFAULT_SEMANTICS.toBuilder()
+ .incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(true)
+ .build();
+ ev = createEvaluationTestCase(semantics);
+ ev.setFailFast(false);
+ ev.initialize();
+
+ registerDummyUserDefinedFunction();
+ scratch.file("test/BUILD", "toolchain_type(name = 'my_toolchain_type')");
+ evalAndExport(
+ "r1 = rule(impl, ",
+ " toolchains=['//test:my_toolchain_type'],",
+ " execution_platform_constraints_allowed=True,",
+ ")");
+ ev.assertContainsError("parameter 'execution_platform_constraints_allowed' is deprecated");
+ }
+
+ @Test
public void testRuleFunctionReturnsNone() throws Exception {
scratch.file("test/rule.bzl",
"def _impl(ctx):",