diff options
author | 2016-02-01 13:41:23 +0000 | |
---|---|---|
committer | 2016-02-02 14:55:06 +0000 | |
commit | 076acfff37364351f68adb73ada8c1dac2f95ea7 (patch) | |
tree | 7a8677bdd126621718364810daeb63efa7e09d27 /src/test/java/com/google/devtools/build/lib/skylark | |
parent | 2ac20962867aec785fb6f4616e6b51cbf5a3fb01 (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.java | 46 |
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 |