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
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 f602e8b..14c4b1f 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 @@
}
@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",