From 6f8393f5c5bddbb49a74d3229411e1050d799208 Mon Sep 17 00:00:00 2001 From: Rumou Duan Date: Wed, 30 Nov 2016 16:03:10 +0000 Subject: Allow aspects to specify multiple sets of required providers to match against rules. Aspects can attach to a rule if at least one set of required providers are present on the rule. -- MOS_MIGRATED_REVID=140605023 --- .../google/devtools/build/lib/analysis/AspectTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java') diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java index 37abaafb46..ae4f5337cf 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java @@ -162,6 +162,21 @@ public class AspectTest extends AnalysisTestCase { .containsExactly("rule //a:a", "aspect //a:b"); } + @Test + public void aspectCreatedIfAtLeastOneSetOfAdvertisedProvidersArePresent() throws Exception { + setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.HonestRule(), + new TestAspects.HonestRule2(), new TestAspects.AspectRequiringProviderSetsRule()); + + pkg("a", + "aspect_requiring_provider_sets(name='a', foo=[':b', ':c'])", + "honest(name='b', foo=[])", + "honest2(name='c', foo=[])"); + + ConfiguredTarget a = getConfiguredTarget("//a:a"); + assertThat(a.getProvider(RuleInfo.class).getData()) + .containsExactly("rule //a:a", "aspect //a:b", "aspect //a:c"); + } + @Test public void aspectWithParametrizedDefinition() throws Exception { setRulesAvailableInTests( -- cgit v1.2.3