From ea988b691aa9c1ceb67d05885b947ca58c13cbf7 Mon Sep 17 00:00:00 2001 From: Lukacs Berki Date: Tue, 30 Aug 2016 12:26:18 +0000 Subject: Make aspects attached to aliases work when their actual= attribute is a select. Fixes https://github.com/bazelbuild/e4b/issues/6 . -- MOS_MIGRATED_REVID=131698950 --- .../devtools/build/lib/analysis/AspectTest.java | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/test/java/com/google') 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 f602e8b441..14c4b1fb2f 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 @@ -59,6 +59,46 @@ public class AspectTest extends AnalysisTestCase { scratch.file("" + name + "/BUILD", contents); } + @Test + public void testAspectAppliedToAliasWithSelect() throws Exception { + setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule()); + pkg("a", + "aspect(name='a', foo=[':b'])", + "alias(name='b', actual=select({'//conditions:default': ':c'}))", + "base(name='c')"); + ConfiguredTarget a = getConfiguredTarget("//a:a"); + assertThat(a.getProvider(RuleInfo.class).getData()) + .containsExactly("aspect //a:c", "rule //a:a"); + } + + @Test + public void testAspectAppliedToChainedAliases() throws Exception { + setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule()); + pkg("a", + "aspect(name='a', foo=[':b'])", + "alias(name='b', actual=':c')", + "alias(name='c', actual=':d')", + "alias(name='d', actual=':e')", + "base(name='e')"); + + ConfiguredTarget a = getConfiguredTarget("//a:a"); + assertThat(a.getProvider(RuleInfo.class).getData()) + .containsExactly("aspect //a:e", "rule //a:a"); + } + + @Test + public void testAspectAppliedToChainedAliasesAndSelect() throws Exception { + setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule()); + pkg("a", + "aspect(name='a', foo=[':b'])", + "alias(name='b', actual=select({'//conditions:default': ':c'}))", + "alias(name='c', actual=select({'//conditions:default': ':d'}))", + "base(name='d')"); + ConfiguredTarget a = getConfiguredTarget("//a:a"); + assertThat(a.getProvider(RuleInfo.class).getData()) + .containsExactly("aspect //a:d", "rule //a:a"); + } + @Test public void providersOfAspectAreMergedIntoDependency() throws Exception { setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule()); -- cgit v1.2.3