aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2017-03-22 12:58:06 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-22 15:11:46 +0000
commit81d3c3eccdc92d2c047b7c066ff6d7acdc33c113 (patch)
tree37f8ea6505c8a9e559df13486ce189dc284ff9e2 /src/test/java
parentb3dfc40f0e82c2a7ddfa97b0da9bcbaeced06558 (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.java44
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