diff options
author | 2016-02-11 15:10:22 +0000 | |
---|---|---|
committer | 2016-02-11 22:21:22 +0000 | |
commit | e7226d177b7359607bee6468559d2479f5d87cc6 (patch) | |
tree | e5668de6b8a9cd22714e5f4650fb9d2cd4054d28 | |
parent | 42267d6e9454e861ef646688e5ae838ab456af47 (diff) |
Add support for java_imports to Skylark IDE info aspect.
--
MOS_MIGRATED_REVID=114434073
4 files changed, 18 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java index c1dadcfdf9..48d4056e4e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java @@ -81,8 +81,8 @@ public final class JavaSkylarkApiProvider extends SkylarkApiProvider { @SkylarkCallable( name = "annotation_processing", - doc = "Returns information about annotation processing for this Java rule", - structField = true + structField = true, allowReturnNones = true, + doc = "Returns information about annotation processing for this Java rule" ) public JavaGenJarsProvider getGenJarsProvider() { return getInfo().getProvider(JavaGenJarsProvider.class); diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java index ea51474b4b..a72aedfdac 100644 --- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java +++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java @@ -323,10 +323,6 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase @Test public void testJavaImport() throws Exception { - if (!isNativeTest()) { - return; - } - scratch.file( "com/google/example/BUILD", "java_import(", @@ -434,10 +430,6 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase @Test public void testGeneratedJavaImportFilesAreAddedToOutputGroup() throws Exception { - if (!isNativeTest()) { - return; - } - scratch.file( "com/google/example/BUILD", "java_import(", 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 f91eec07ea..03235a93f4 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 @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.ideinfo; import static com.google.common.collect.Iterables.transform; import static com.google.common.truth.Truth.assertThat; +import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -164,7 +165,8 @@ abstract class AndroidStudioInfoAspectTestBase extends BuildViewTestCase { NestedSet<Artifact> artifacts = outputGroupProvider.getOutputGroup(outputGroup); for (Artifact artifact : artifacts) { - assertThat(getGeneratingAction(artifact)).isNotNull(); + assertWithMessage("Artifact %s has no generating action", artifact) + .that(getGeneratingAction(artifact)).isNotNull(); } List<String> artifactRelativePaths = Lists.newArrayList(); diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl b/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl index 0fb3dc6aeb..7826fb7237 100644 --- a/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl +++ b/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl @@ -60,7 +60,7 @@ def artifact_location(file): ) def library_artifact(java_output): - if java_output == None: + if java_output == None or java_output.class_jar == None: return None return struct_omit_none( jar = artifact_location(java_output.class_jar), @@ -74,6 +74,11 @@ def annotation_processing_jars(annotation_processing): source_jar = artifact_location(annotation_processing.source_jar), ) +def add_jar_to_set(s, file): + if file != None and not file.is_source: + return s | set([file]) + else: + return s def java_rule_ide_info(target, ctx): if hasattr(ctx.rule.attr, "srcs"): @@ -82,11 +87,12 @@ def java_rule_ide_info(target, ctx): for file in src.files] else: sources = [] + jars = [library_artifact(output) for output in target.java.outputs.jars] ide_resolve_files = set([jar - for jar in [output.class_jar, output.ijar, output.source_jar] for output in target.java.outputs.jars - if jar != None]) + for jar in [output.class_jar, output.ijar, output.source_jar] + if jar != None and not jar.is_source]) gen_jars = [] if target.java.annotation_processing and target.java.annotation_processing.enabled: @@ -94,11 +100,12 @@ def java_rule_ide_info(target, ctx): ide_resolve_files = ide_resolve_files | set([ jar for jar in [target.java.annotation_processing.class_jar, target.java.annotation_processing.source_jar] - if jar != None]) + if jar != None and not jar.is_source]) jdeps = artifact_location(target.java.outputs.jdeps) - return (struct(sources = sources, + return (struct_omit_none( + sources = sources, jars = jars, jdeps = jdeps, generated_jars = gen_jars @@ -125,7 +132,7 @@ def _aspect_impl(target, ctx): if kind != _unrecognized_rule: if is_java_rule(target, ctx): java_rule_ide_info, java_ide_resolve_files = java_rule_ide_info(target, ctx) - ide_resolve_files += java_ide_resolve_files + ide_resolve_files = ide_resolve_files | java_ide_resolve_files info = struct( label = str(target.label), kind = kind, |