aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-02-01 13:41:23 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-02 14:55:06 +0000
commit076acfff37364351f68adb73ada8c1dac2f95ea7 (patch)
tree7a8677bdd126621718364810daeb63efa7e09d27 /src/test/java/com/google/devtools/build/lib/skylark
parent2ac20962867aec785fb6f4616e6b51cbf5a3fb01 (diff)
Add a test that asserts aspects propagating along implicit deps.
Fix a minor bug in the process. -- MOS_MIGRATED_REVID=113519574
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
index c8960cb48b..e393a84726 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
@@ -185,7 +185,53 @@ public class SkylarkAspectsTest extends AnalysisTestCase {
Object ruleKinds = skylarkProviders.getValue("rule_kinds");
assertThat(ruleKinds).isInstanceOf(SkylarkNestedSet.class);
assertThat((SkylarkNestedSet) ruleKinds).containsExactly("java_library");
+ }
+ @Test
+ public void aspectsPropagatingForDefaultAndImplicit() throws Exception {
+ scratch.file(
+ "test/aspect.bzl",
+ "def _impl(target, ctx):",
+ " s = set([target.label])",
+ " c = set([ctx.rule.kind])",
+ " a = ctx.rule.attr",
+ " if hasattr(a, '_stl') and a._stl:",
+ " s += a._stl.target_labels",
+ " c += a._stl.rule_kinds",
+ " if hasattr(a, '_stl_default') and a._stl_default:",
+ " s += a._stl_default.target_labels",
+ " c += a._stl_default.rule_kinds",
+ " return struct(target_labels = s, rule_kinds = c)",
+ "",
+ "MyAspect = aspect(",
+ " implementation=_impl,",
+ " attr_aspects=[':stl', '$stl_default'],",
+ ")");
+ scratch.file(
+ "test/BUILD",
+ "cc_library(",
+ " name = 'xxx',",
+ ")");
+ AnalysisResult analysisResult =
+ update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx");
+ AspectValue aspectValue = analysisResult.getAspects().iterator().next();
+ SkylarkProviders skylarkProviders =
+ aspectValue.getConfiguredAspect().getProvider(SkylarkProviders.class);
+ assertThat(skylarkProviders).isNotNull();
+ Object names = skylarkProviders.getValue("target_labels");
+ assertThat(names).isInstanceOf(SkylarkNestedSet.class);
+ assertThat(
+ transform(
+ (SkylarkNestedSet) names,
+ new Function<Object, String>() {
+ @Nullable
+ @Override
+ public String apply(Object o) {
+ assertThat(o).isInstanceOf(Label.class);
+ return ((Label) o).getName();
+ }
+ }))
+ .containsExactly("stl", "xxx");
}
@Test