diff options
author | 2017-11-29 07:46:25 -0800 | |
---|---|---|
committer | 2017-11-29 07:49:19 -0800 | |
commit | b87a41f3a69873b40b4211b348a497afca9ef316 (patch) | |
tree | cc8c4e4c910642144a35e31374796a15d38cd16f /src/test/java/com/google/devtools/build/lib/skyframe | |
parent | ab75ac81ad40f67de2ce57999a9ae9a7dc6c984e (diff) |
Convert TestAspects to MockRule.
It'd be nice to go further and break out a bunch of this code into more generally useful places (especially for callers that don't care about aspects). But that's a big mess and beyond the scope of what I'm aiming for here.
PiperOrigin-RevId: 177307854
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java | 189 |
1 files changed, 51 insertions, 138 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java index da21b61a52..44fc9259eb 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsWithTrimmedConfigurationsTest.java @@ -26,7 +26,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleDefinition; -import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; @@ -43,7 +42,6 @@ import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.Attribute.Transition; import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper; import com.google.devtools.build.lib.packages.Rule; -import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleTransitionFactory; import com.google.devtools.build.lib.testutil.Suite; import com.google.devtools.build.lib.testutil.TestSpec; @@ -109,88 +107,37 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest } /** Base rule that depends on the test configuration fragment. */ - private static class TestBaseRule implements RuleDefinition { - @Override - public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) { - return builder.requiresConfigurationFragments(TestConfiguration.class).build(); - } - - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("test_base") - .factoryClass(DummyRuleFactory.class) - .ancestors(TestAspects.BaseRule.class) - .build(); - } - } + private static final MockRule TEST_BASE_RULE = () -> + MockRule.ancestor(TestAspects.BASE_RULE.getClass()).factory(DummyRuleFactory.class).define( + "test_base", + (builder, env) -> + builder.requiresConfigurationFragments(TestConfiguration.class).build()); /** A rule with an empty split transition on an attribute. */ - private static class EmptySplitRule implements RuleDefinition { - @Override - public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) { - return builder - .add( - attr("with_empty_transition", LABEL) - .allowedFileTypes(FileTypeSet.ANY_FILE) - .cfg(new EmptySplitTransition())) - .build(); - } - - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("empty_split") - .factoryClass(DummyRuleFactory.class) - .ancestors(TestBaseRule.class) - .build(); - } - } + private static final MockRule EMPTY_SPLIT_RULE = () -> + MockRule.ancestor(TEST_BASE_RULE.getClass()).factory(DummyRuleFactory.class).define( + "empty_split", + attr("with_empty_transition", LABEL) + .allowedFileTypes(FileTypeSet.ANY_FILE) + .cfg(new EmptySplitTransition())); /** Rule with a split transition on an attribute. */ - private static class AttributeTransitionRule implements RuleDefinition { - - @Override - public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) { - return builder - .add(attr("without_transition", LABEL).allowedFileTypes(FileTypeSet.ANY_FILE)) - .add( - attr("with_cpu_transition", LABEL) - .allowedFileTypes(FileTypeSet.ANY_FILE) - .cfg(new SetsCpuSplitTransition())) - .add( - attr("with_host_cpu_transition", LABEL) - .allowedFileTypes(FileTypeSet.ANY_FILE) - .cfg(new SetsHostCpuSplitTransition())) - .build(); - } - - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("attribute_transition") - .factoryClass(DummyRuleFactory.class) - .ancestors(TestBaseRule.class) - .build(); - } - } + private static final MockRule ATTRIBUTE_TRANSITION_RULE = () -> + MockRule.ancestor(TEST_BASE_RULE.getClass()).factory(DummyRuleFactory.class).define( + "attribute_transition", + attr("without_transition", LABEL).allowedFileTypes(FileTypeSet.ANY_FILE), + attr("with_cpu_transition", LABEL) + .allowedFileTypes(FileTypeSet.ANY_FILE) + .cfg(new SetsCpuSplitTransition()), + attr("with_host_cpu_transition", LABEL) + .allowedFileTypes(FileTypeSet.ANY_FILE) + .cfg(new SetsHostCpuSplitTransition())); /** Rule with rule class configuration transition. */ - private static class RuleClassTransitionRule implements RuleDefinition { - @Override - public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) { - return builder.cfg(new SetsCpuPatchTransition()).build(); - } - - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("rule_class_transition") - .factoryClass(DummyRuleFactory.class) - .ancestors(TestBaseRule.class) - .build(); - } - } + private static final MockRule RULE_CLASS_TRANSITION_RULE = () -> + MockRule.ancestor(TEST_BASE_RULE.getClass()).factory(DummyRuleFactory.class).define( + "rule_class_transition", + (builder, env) -> builder.cfg(new SetsCpuPatchTransition()).build()); private static class SetsTestFilterFromAttributePatchTransition implements PatchTransition { private final String value; @@ -224,35 +171,20 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest /** * Rule with a RuleTransitionFactory which sets the --test_filter flag according to its attribute. */ - private static class UsesRuleTransitionFactoryRule implements RuleDefinition { - @Override - public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) { - return builder - .cfg(new SetsTestFilterFromAttributeTransitionFactory()) - .add( - attr("sets_test_filter_to", STRING) - .nonconfigurable("used in RuleTransitionFactory") - .value("")) - .build(); - } - - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("uses_rule_transition_factory") - .factoryClass(DummyRuleFactory.class) - .ancestors(TestBaseRule.class) - .build(); - } - } + private static final MockRule USES_RULE_TRANSITION_FACTORY_RULE = () -> + MockRule.ancestor(TEST_BASE_RULE.getClass()).factory(DummyRuleFactory.class).define( + "uses_rule_transition_factory", + (builder, env) -> + builder + .cfg(new SetsTestFilterFromAttributeTransitionFactory()) + .add(attr("sets_test_filter_to", STRING) + .nonconfigurable("used in RuleTransitionFactory") + .value(""))); @Test public void testRuleClassTransition() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new AttributeTransitionRule(), - new RuleClassTransitionRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, ATTRIBUTE_TRANSITION_RULE, + RULE_CLASS_TRANSITION_RULE); scratch.file("a/BUILD", "attribute_transition(", " name='attribute',", @@ -266,11 +198,8 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void testNonConflictingAttributeAndRuleClassTransitions() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new AttributeTransitionRule(), - new RuleClassTransitionRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, ATTRIBUTE_TRANSITION_RULE, + RULE_CLASS_TRANSITION_RULE); scratch.file("a/BUILD", "attribute_transition(", " name='attribute',", @@ -285,11 +214,8 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void testConflictingAttributeAndRuleClassTransitions() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new AttributeTransitionRule(), - new RuleClassTransitionRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, ATTRIBUTE_TRANSITION_RULE, + RULE_CLASS_TRANSITION_RULE); scratch.file("a/BUILD", "attribute_transition(", " name='attribute',", @@ -303,11 +229,8 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void testEmptySplitDoesNotSuppressRuleClassTransition() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new EmptySplitRule(), - new RuleClassTransitionRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, EMPTY_SPLIT_RULE, + RULE_CLASS_TRANSITION_RULE); scratch.file( "a/BUILD", "empty_split(", @@ -322,8 +245,7 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void testTopLevelRuleClassTransition() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), new TestBaseRule(), new RuleClassTransitionRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, RULE_CLASS_TRANSITION_RULE); scratch.file( "a/BUILD", "rule_class_transition(", @@ -336,11 +258,8 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void testTopLevelRuleClassTransitionAndNoTransition() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new RuleClassTransitionRule(), - new TestAspects.SimpleRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, RULE_CLASS_TRANSITION_RULE, + TestAspects.SIMPLE_RULE); scratch.file( "a/BUILD", "rule_class_transition(", @@ -355,11 +274,8 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void ruleTransitionFactoryUsesNonconfigurableAttributesToGenerateTransition() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new AttributeTransitionRule(), - new UsesRuleTransitionFactoryRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, ATTRIBUTE_TRANSITION_RULE, + USES_RULE_TRANSITION_FACTORY_RULE); useConfiguration("--test_filter=SET ON COMMAND LINE: original and best"); scratch.file( "a/BUILD", @@ -379,11 +295,8 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void ruleTransitionFactoryCanReturnNullToCauseNoTransition() throws Exception { - setRulesAvailableInTests( - new TestAspects.BaseRule(), - new TestBaseRule(), - new AttributeTransitionRule(), - new UsesRuleTransitionFactoryRule()); + setRulesAvailableInTests(TestAspects.BASE_RULE, TEST_BASE_RULE, ATTRIBUTE_TRANSITION_RULE, + USES_RULE_TRANSITION_FACTORY_RULE); useConfiguration("--test_filter=SET ON COMMAND LINE: original and best"); scratch.file( "a/BUILD", @@ -404,7 +317,7 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void topLevelRuleTransitionFactoryUsesNonconfigurableAttributes() throws Exception { setRulesAvailableInTests( - new TestAspects.BaseRule(), new TestBaseRule(), new UsesRuleTransitionFactoryRule()); + TestAspects.BASE_RULE, TEST_BASE_RULE, USES_RULE_TRANSITION_FACTORY_RULE); useConfiguration("--test_filter=SET ON COMMAND LINE: original and best"); scratch.file( "a/BUILD", @@ -420,7 +333,7 @@ public class ConfigurationsForTargetsWithTrimmedConfigurationsTest @Test public void topLevelRuleTransitionFactoryCanReturnNullInTesting() throws Exception { setRulesAvailableInTests( - new TestAspects.BaseRule(), new TestBaseRule(), new UsesRuleTransitionFactoryRule()); + TestAspects.BASE_RULE, TEST_BASE_RULE, USES_RULE_TRANSITION_FACTORY_RULE); useConfiguration("--test_filter=SET ON COMMAND LINE: original and best"); scratch.file( "a/BUILD", |