diff options
author | 2017-03-22 12:58:06 +0000 | |
---|---|---|
committer | 2017-03-22 15:11:46 +0000 | |
commit | 81d3c3eccdc92d2c047b7c066ff6d7acdc33c113 (patch) | |
tree | 37f8ea6505c8a9e559df13486ce189dc284ff9e2 /src/test/java | |
parent | b3dfc40f0e82c2a7ddfa97b0da9bcbaeced06558 (diff) |
Fix dir() on Targets with aspects applied.
--
PiperOrigin-RevId: 150869561
MOS_MIGRATED_REVID=150869561
Diffstat (limited to 'src/test/java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java | 44 |
1 files changed, 43 insertions, 1 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 b5e951b68b..976c268e97 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 @@ -35,6 +35,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; import com.google.devtools.build.lib.packages.ClassObjectConstructor.Key; +import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor.SkylarkKey; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.java.Jvm; @@ -357,6 +358,47 @@ public class SkylarkAspectsTest extends AnalysisTestCase { } @Test + public void aspectsDirOnMergedTargets() throws Exception { + scratch.file( + "test/aspect.bzl", + "def _impl(target, ctx):", + " return struct(aspect_provider = 'data')", + "", + "p = provider()", + "MyAspect = aspect(implementation=_impl)", + "def _rule_impl(ctx):", + " if ctx.attr.dep:", + " return [p(dir = dir(ctx.attr.dep))]", + " return [p()]", + "", + "my_rule = rule(implementation = _rule_impl,", + " attrs = { 'dep' : attr.label(aspects = [MyAspect]) },", + ")"); + SkylarkKey providerKey = new SkylarkKey(Label.parseAbsoluteUnchecked("//test:aspect.bzl"), "p"); + scratch.file( + "test/BUILD", + "load('/test/aspect', 'my_rule')", + "my_rule(name = 'xxx',)", + "my_rule(name = 'yyy', dep = ':xxx')"); + AnalysisResult analysisResult = update("//test:yyy"); + ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild()); + SkylarkProviders skylarkProviders = target.getProvider(SkylarkProviders.class); + assertThat(skylarkProviders).isNotNull(); + + SkylarkClassObject names = skylarkProviders.getDeclaredProvider(providerKey); + assertThat((Iterable<?>) names.getValue("dir")) + .containsExactly( + "aspect_provider", + "data_runfiles", + "default_runfiles", + "files", + "files_to_run", + "label", + "output_group", + "output_groups"); + } + + @Test public void aspectWithOutputGroups() throws Exception { scratch.file( "test/aspect.bzl", @@ -1968,7 +2010,7 @@ public class SkylarkAspectsTest extends AnalysisTestCase { + "(when propagating from //test:r2 to //test:r1 via attribute dep)"); } - + /** SkylarkAspectTest with "keep going" flag */ @RunWith(JUnit4.class) public static final class WithKeepGoing extends SkylarkAspectsTest { @Override |