diff options
author | Greg Estren <gregce@google.com> | 2015-06-02 19:40:41 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2015-06-03 13:48:53 +0000 |
commit | 2ffc4fe76740e4d1b45de45af1293f80eb80be6f (patch) | |
tree | dc9cba1d92467f5f0914b7749cf0586ae444431e /src/test/java/com/google/devtools | |
parent | 7923559213e6d1a12bf66df85705ffd31d2f1e28 (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.java | 36 |
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'"); + } } |