aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-11-06 18:43:46 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-11-06 22:53:24 +0000
commit297f1202500e199fec28acdc070336507a8e2876 (patch)
treed38f0e26a1ecd8f2a7ed8239e7b2f8d03ef49c32 /src
parent0c4e3bf1bfb77198a1ac03715fabb253844a4f8d (diff)
Propagate ASwB aspect across robolectric implicit deps.
-- MOS_MIGRATED_REVID=107247614
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java38
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java1
2 files changed, 29 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index 44e818827a..197c550c20 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -56,6 +56,7 @@ import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
import com.google.devtools.build.lib.rules.java.JavaSourceInfoProvider;
+import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.protobuf.MessageLite;
@@ -79,6 +80,21 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
public static final String IDE_INFO_TEXT = "ide-info-text";
public static final String IDE_RESOLVE = "ide-resolve";
+ private static class PrerequisiteAttr {
+ public final String name;
+ public final Type<?> type;
+ public PrerequisiteAttr(String name, Type<?> type) {
+ this.name = name;
+ this.type = type;
+ }
+ }
+ public static final PrerequisiteAttr[] PREREQUISITE_ATTRS = {
+ new PrerequisiteAttr("deps", BuildType.LABEL_LIST),
+ new PrerequisiteAttr("exports", BuildType.LABEL_LIST),
+ new PrerequisiteAttr("$robolectric", BuildType.LABEL_LIST),
+ new PrerequisiteAttr("$junit", BuildType.LABEL)
+ };
+
// File suffixes.
public static final String ASWB_BUILD_SUFFIX = ".aswb-build";
public static final String ASWB_BUILD_TEXT_SUFFIX = ".aswb-build.txt";
@@ -92,11 +108,14 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
@Override
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
- return new AspectDefinition.Builder(NAME)
- .attributeAspect("deps", AndroidStudioInfoAspect.class)
- .attributeAspect("exports", AndroidStudioInfoAspect.class)
- .attributeAspect("runtime_deps", AndroidStudioInfoAspect.class)
- .build();
+ AspectDefinition.Builder builder = new AspectDefinition.Builder(NAME)
+ .attributeAspect("runtime_deps", AndroidStudioInfoAspect.class);
+
+ for (PrerequisiteAttr prerequisiteAttr : PREREQUISITE_ATTRS) {
+ builder.attributeAspect(prerequisiteAttr.name, AndroidStudioInfoAspect.class);
+ }
+
+ return builder.build();
}
@Override
@@ -142,11 +161,10 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
// Calculate direct dependencies
ImmutableList.Builder<TransitiveInfoCollection> directDepsBuilder = ImmutableList.builder();
- if (ruleContext.attributes().has("deps", BuildType.LABEL_LIST)) {
- directDepsBuilder.addAll(ruleContext.getPrerequisites("deps", Mode.TARGET));
- }
- if (ruleContext.attributes().has("exports", BuildType.LABEL_LIST)) {
- directDepsBuilder.addAll(ruleContext.getPrerequisites("exports", Mode.TARGET));
+ for (PrerequisiteAttr prerequisiteAttr : PREREQUISITE_ATTRS) {
+ if (ruleContext.attributes().has(prerequisiteAttr.name, prerequisiteAttr.type)) {
+ directDepsBuilder.addAll(ruleContext.getPrerequisites(prerequisiteAttr.name, Mode.TARGET));
+ }
}
List<TransitiveInfoCollection> directDeps = directDepsBuilder.build();
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
index 4c6e7797ae..84b95533a0 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
@@ -101,6 +101,7 @@ abstract class AndroidStudioInfoAspectTestBase extends BuildViewTestCase {
protected RuleIdeInfo getRuleInfoAndVerifyLabel(
String target, Map<String, RuleIdeInfo> ruleIdeInfos) {
RuleIdeInfo ruleIdeInfo = ruleIdeInfos.get(target);
+ assertThat(ruleIdeInfo).named(target).isNotNull();
assertThat(ruleIdeInfo.getLabel()).isEqualTo(target);
return ruleIdeInfo;
}