aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2018-01-18 10:59:28 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-18 11:01:20 -0800
commit710b9a3af0c1432ed288fe02c8205b645a3e4d52 (patch)
treec11780bb769a22f27b952581e15ea5e699cc676b /src
parent659974ed5e1fbd2122efc98ed7e1a0e3d5e59472 (diff)
Fix aar_import.deps to propagate jars.
Previously, aar_import.deps only worked for resource files and aar_import.exports worked for both resource files and Java. Now, aar_import.deps works for both as well with the same semantics as exports. This is not ideal, but it is how java_import.deps currently works. Fixes https://github.com/bazelbuild/bazel/issues/4472 RELNOTES: None PiperOrigin-RevId: 182405741
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java26
2 files changed, 29 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 9617d95063..950f7edebf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -122,7 +122,10 @@ public class AarImport implements RuleConfiguredTargetFactory {
}
ImmutableList<TransitiveInfoCollection> targets =
- ImmutableList.copyOf(ruleContext.getPrerequisites("exports", Mode.TARGET));
+ ImmutableList.<TransitiveInfoCollection>builder()
+ .addAll(ruleContext.getPrerequisites("exports", Mode.TARGET))
+ .addAll(ruleContext.getPrerequisites("deps", Mode.TARGET))
+ .build();
JavaCommon common =
new JavaCommon(
ruleContext,
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java
index 633c934478..b8616517e8 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java
@@ -17,6 +17,7 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
+import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -46,14 +47,20 @@ public class AarImportTest extends BuildViewTestCase {
" aar = 'foo.aar',",
")",
"aar_import(",
+ " name = 'baz',",
+ " aar = 'baz.aar',",
+ ")",
+ "aar_import(",
" name = 'bar',",
" aar = 'bar.aar',",
+ " deps = [':baz'],",
" exports = [':foo', '//java:baz'],",
")");
scratch.file("java/BUILD",
"android_binary(",
" name = 'app',",
" manifest = 'AndroidManifest.xml',",
+ " srcs = ['App.java'],",
" deps = ['//a:bar'],",
")",
"android_library(",
@@ -124,7 +131,8 @@ public class AarImportTest extends BuildViewTestCase {
androidLibraryTarget.getProvider(NativeLibsZipsProvider.class).getAarNativeLibs();
assertThat(nativeLibs).containsExactly(
ActionsTestUtil.getFirstArtifactEndingWith(nativeLibs, "foo/native_libs.zip"),
- ActionsTestUtil.getFirstArtifactEndingWith(nativeLibs, "bar/native_libs.zip"));
+ ActionsTestUtil.getFirstArtifactEndingWith(nativeLibs, "bar/native_libs.zip"),
+ ActionsTestUtil.getFirstArtifactEndingWith(nativeLibs, "baz/native_libs.zip"));
}
@Test
@@ -180,6 +188,22 @@ public class AarImportTest extends BuildViewTestCase {
}
@Test
+ public void testDepsPropagatesMergedAarJars() throws Exception {
+ Action appCompileAction =
+ getGeneratingAction(
+ ActionsTestUtil.getFirstArtifactEndingWith(
+ actionsTestUtil().artifactClosureOf(
+ getFileConfiguredTarget("//java:app.apk").getArtifact()),
+ "libapp.jar"));
+ assertThat(appCompileAction).isNotNull();
+ assertThat(ActionsTestUtil.prettyArtifactNames(appCompileAction.getInputs()))
+ .containsAllOf(
+ "a/_aar/foo/classes_and_libs_merged.jar",
+ "a/_aar/bar/classes_and_libs_merged.jar",
+ "a/_aar/baz/classes_and_libs_merged.jar");
+ }
+
+ @Test
public void testExportsPropagatesMergedAarJars() throws Exception {
FileConfiguredTarget appTarget = getFileConfiguredTarget("//java:app.apk");
Set<Artifact> artifacts = actionsTestUtil().artifactClosureOf(appTarget.getArtifact());