Merge cherrypicks of [12986203, 12985811] into studio-4.1-release
Change-Id: If35f32983cf3f28f747a15248e962e61d043bbf9
diff --git a/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt b/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
index d6460e2..492ee88 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
+++ b/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
@@ -46,4 +46,4 @@
fun executePropertiesActions(target: PropertiesT) {
propertiesActions.executeActions(target)
}
-}
\ No newline at end of file
+}
diff --git a/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentPropertiesImpl.kt b/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentPropertiesImpl.kt
index 391654b..e881f42 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentPropertiesImpl.kt
+++ b/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentPropertiesImpl.kt
@@ -502,7 +502,11 @@
artifacts.get(COMPILE_AND_RUNTIME_NOT_NAMESPACED_R_CLASS_JAR)
)
} else {
- internalServices.fileCollection(variantScope.rJarForUnitTests)
+ if (buildFeatures.androidResources) {
+ internalServices.fileCollection(variantScope.rJarForUnitTests)
+ } else {
+ internalServices.fileCollection()
+ }
}
}
}
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/TaskManager.java b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/TaskManager.java
index e01ebe3..8c678e8 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/TaskManager.java
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/TaskManager.java
@@ -1733,7 +1733,8 @@
testConfigInputs.getPackageNameOfFinalRClass());
});
} else {
- if (testedVariant.getVariantType().isAar()) {
+ if (testedVariant.getVariantType().isAar()
+ && testedVariant.getBuildFeatures().getAndroidResources()) {
// With compile classpath R classes, we need to generate a dummy R class for unit tests
// See https://issuetracker.google.com/143762955 for more context.
taskFactory.register(
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/factory/AndroidUnitTest.java b/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/factory/AndroidUnitTest.java
index 36f53b7..44978ff 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/factory/AndroidUnitTest.java
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/factory/AndroidUnitTest.java
@@ -195,7 +195,8 @@
RUNTIME_CLASSPATH, ALL, ArtifactType.JAVA_RES));
// 4. The separately compile R class, if applicable.
- if (!globalScope.getExtension().getAaptOptions().getNamespaced()) {
+ if (creationConfig.getBuildFeatures().getAndroidResources()
+ && !globalScope.getExtension().getAaptOptions().getNamespaced()) {
collection.from(component.getVariantScope().getRJarForUnitTests());
}
diff --git a/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/resources/DisableLibraryResourcesTest.kt b/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/resources/DisableLibraryResourcesTest.kt
index 4e27a72..f1e54cf 100644
--- a/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/resources/DisableLibraryResourcesTest.kt
+++ b/build-system/integration-test/application/src/test/java/com/android/build/gradle/integration/resources/DisableLibraryResourcesTest.kt
@@ -23,6 +23,7 @@
import com.android.build.gradle.integration.common.truth.TruthHelper
import com.android.build.gradle.integration.common.utils.TestFileUtils
import com.android.build.gradle.options.BooleanOption
+import com.android.testutils.truth.PathSubject
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
@@ -45,6 +46,27 @@
</resources>""".trimIndent()
)
.withFile("src/main/res/raw/raw_file", "leafLib")
+ .withFile("src/test/java/com/example/MyTest.java",
+ //language=java
+ """
+ package com.example;
+
+ import org.junit.Test;
+
+ public class MyTest {
+ @Test
+ public void check() {
+ System.out.println("ExampleTest has some output");
+ }
+ }
+ """.trimIndent())
+ .appendToBuild("""
+
+ dependencies {
+ testImplementation("junit:junit:4.12")
+ }
+
+ """.trimIndent())
private val localLib = MinimalSubProject.lib("com.example.localLib")
.withFile(
@@ -195,4 +217,14 @@
assertThat(result.didWorkTasks).contains(":localLib:parseDebugLocalResources")
assertThat(result.didWorkTasks).contains(":leafLib:parseDebugLocalResources")
}
-}
\ No newline at end of file
+
+ @Test
+ fun testAndroidAndUnitTests() {
+ project.executor().with(BooleanOption.BUILD_FEATURE_ANDROID_RESOURCES, false)
+ .run(":leaflib:assembleDebugAndroidTest", ":leaflib:test")
+ assertThat(project.file("leafLib/build/reports/tests/testReleaseUnitTest/classes/com.example.MyTest.html").readText())
+ .contains("ExampleTest has some output")
+ assertThat(project.file("leafLib/build/reports/tests/testDebugUnitTest/classes/com.example.MyTest.html").readText())
+ .contains("ExampleTest has some output")
+ }
+}