diff options
author | Lukacs Berki <lberki@google.com> | 2016-08-30 12:26:18 +0000 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2016-08-31 08:09:03 +0000 |
commit | ea988b691aa9c1ceb67d05885b947ca58c13cbf7 (patch) | |
tree | ade5d14eb2bba1d326798b1176877159a632a64e /src/test/java/com/google | |
parent | 1b2071f1809e8fd91a238b3b08fc1b32bf24b89b (diff) |
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
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java | 40 |
1 files changed, 40 insertions, 0 deletions
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 @@ -60,6 +60,46 @@ public class AspectTest extends AnalysisTestCase { } @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()); pkg("a", |