aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2015-06-02 19:40:41 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-06-03 13:48:53 +0000
commit2ffc4fe76740e4d1b45de45af1293f80eb80be6f (patch)
treedc9cba1d92467f5f0914b7749cf0586ae444431e /src/test/java/com/google/devtools
parent7923559213e6d1a12bf66df85705ffd31d2f1e28 (diff)
Remove compatible_with / restricted_to attributes from rule
classes that are exempt from constraint checking. -- MOS_MIGRATED_REVID=95033646
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/constraints/ConstraintsTest.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/constraints/ConstraintsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/constraints/ConstraintsTest.java
index 909d7a6603..f87b939050 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/constraints/ConstraintsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/constraints/ConstraintsTest.java
@@ -123,6 +123,25 @@ public class ConstraintsTest extends AbstractConstraintsTest {
}
}
+ private static final class ConstraintExemptRuleClass implements RuleDefinition {
+ @Override
+ public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
+ return builder
+ .setUndocumented()
+ .exemptFromConstraintChecking("for testing removal of restricted_to / compatible_with")
+ .build();
+ }
+
+ @Override
+ public Metadata getMetadata() {
+ return RuleDefinition.Metadata.builder()
+ .name("totally_free_rule")
+ .ancestors(BaseRuleClasses.RuleBase.class)
+ .factoryClass(UnknownRuleConfiguredTarget.class)
+ .build();
+ }
+ }
+
/**
* Injects the rule class default rules into the default test rule class provider.
*/
@@ -133,6 +152,7 @@ public class ConstraintsTest extends AbstractConstraintsTest {
builder.addRuleDefinition(new RuleClassDefaultRule());
builder.addRuleDefinition(new BadRuleClassDefaultRule());
builder.addRuleDefinition(new RuleClassWithImplicitAndLateBoundDefaults());
+ builder.addRuleDefinition(new ConstraintExemptRuleClass());
return builder.build();
}
@@ -723,4 +743,20 @@ public class ConstraintsTest extends AbstractConstraintsTest {
assertNotNull(getConfiguredTarget("//hello:main"));
assertNoEvents();
}
+
+ public void testConstraintExemptRulesDontHaveConstraintAttributes() throws Exception {
+ new EnvironmentGroupMaker("foo_env")
+ .setEnvironments("a", "b")
+ .setDefaults("a")
+ .make();
+ scratch.file("ihave/BUILD",
+ "totally_free_rule(",
+ " name = 'nolimits',",
+ " restricted_to = ['//foo_env:b']",
+ ")");
+
+ reporter.removeHandler(failFastHandler);
+ assertNull(getConfiguredTarget("//ihave:nolimits"));
+ assertContainsEvent("no such attribute 'restricted_to' in 'totally_free_rule'");
+ }
}