summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-04-12 02:29:46 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-04-12 02:29:46 +0000
commitd34b51c7328e5b6a3ed4656b6eee4d15d360930a (patch)
tree0ba8cfb2ada63f33d5cd87848958c93ecf16b18e
parent84a3f0c1500e5a9e4c8f0208b740fb4d2fb7813f (diff)
parent3dd39398da1540b85f46750c0ae71e543b3f9c14 (diff)
downloadbase-d34b51c7328e5b6a3ed4656b6eee4d15d360930a.tar.gz
Merge cherrypicks of ['googleplex-android-review.googlesource.com/22579695'] into studio-giraffe-release.
Change-Id: I12551c5e0778b45f638aab6f74588e2325ab6b70
-rw-r--r--build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfig.kt10
-rw-r--r--build-system/gradle-core/src/main/java/com/android/build/gradle/options/BooleanOption.kt2
-rw-r--r--build-system/gradle-core/src/test/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfigTest.kt35
3 files changed, 36 insertions, 11 deletions
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfig.kt b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfig.kt
index 560859c311..3abc425a12 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfig.kt
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfig.kt
@@ -17,6 +17,7 @@
package com.android.build.gradle.internal.testing.utp
import com.android.build.gradle.internal.dsl.EmulatorControl
+import com.android.build.gradle.options.BooleanOption
import com.android.build.gradle.options.ProjectOptions
import java.io.Serializable
@@ -28,8 +29,15 @@ data class EmulatorControlConfig(
fun createEmulatorControlConfig(
projectOptions: ProjectOptions, emulatorControl: EmulatorControl
): EmulatorControlConfig {
+ check(
+ !emulatorControl.enable || projectOptions.get(BooleanOption.ENABLE_EMULATOR_CONTROL)
+ ) {
+ "EmulatorControl is an experimental feature and it is disabled by default. " +
+ "Please add android.experimental.androidTest.enableEmulatorControl=true " +
+ "in your gradle.properties to opt-in to this feature."
+ }
return EmulatorControlConfig(
- emulatorControl.enable,
+ emulatorControl.enable && projectOptions.get(BooleanOption.ENABLE_EMULATOR_CONTROL),
emulatorControl.allowedEndpoints.toSet(),
emulatorControl.secondsValid
)
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/options/BooleanOption.kt b/build-system/gradle-core/src/main/java/com/android/build/gradle/options/BooleanOption.kt
index 471fa6e152..ac2d13214a 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/options/BooleanOption.kt
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/options/BooleanOption.kt
@@ -133,7 +133,7 @@ enum class BooleanOption(
ENABLE_LOCAL_TESTING("android.bundletool.enableLocalTesting", false, FeatureStage.Experimental),
DISABLE_MINSDKLIBRARY_CHECK("android.unsafe.disable.minSdkLibraryCheck", false, FeatureStage.Experimental),
ENABLE_INSTRUMENTATION_TEST_DESUGARING("android.experimental.library.desugarAndroidTest", false, FeatureStage.Experimental),
-
+ ENABLE_EMULATOR_CONTROL("android.experimental.androidTest.enableEmulatorControl", false, FeatureStage.Experimental),
/**
* When enabled, incompatible APKs installed on a testing device will be uninstalled automatically
* during an instrumentation test run (e.g. When INSTALL_FAILED_UPDATE_INCOMPATIBLE error happens
diff --git a/build-system/gradle-core/src/test/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfigTest.kt b/build-system/gradle-core/src/test/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfigTest.kt
index 1505560aaf..8d63a2915a 100644
--- a/build-system/gradle-core/src/test/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfigTest.kt
+++ b/build-system/gradle-core/src/test/java/com/android/build/gradle/internal/testing/utp/emulatorcontrol/EmulatorControlConfigTest.kt
@@ -24,14 +24,17 @@ import com.android.build.gradle.internal.services.DslServices
import com.android.build.gradle.internal.services.createDslServices
import com.android.build.gradle.internal.testing.utp.createEmulatorControlConfig
import com.android.build.gradle.internal.testing.utp.createEmulatorControlConfig
+import com.android.build.gradle.options.BooleanOption
import com.android.build.gradle.options.IntegerOption
import com.android.build.gradle.options.OptionalBooleanOption
import com.android.build.gradle.options.ProjectOptions
+import com.android.testutils.MockitoKt.whenever
import com.google.common.collect.ImmutableMap
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.mockito.Mockito
+import kotlin.test.assertFailsWith
class EmulatorControlConfigTest {
private lateinit var dslServices: DslServices
@@ -52,36 +55,50 @@ class EmulatorControlConfigTest {
}
@Test
+ fun defaultExperimentalEnableEmulatorControlBooleanIsFalse() {
+ assertThat(emptyProjectOptions.get(BooleanOption.ENABLE_EMULATOR_CONTROL)).isFalse()
+ }
+
+ @Test
fun disableByDefault() {
val emulatorControlConfig = createEmulatorControlConfig(emptyProjectOptions, emulatorControl)
assertThat(emulatorControlConfig.enabled).isFalse()
}
+ @Test
+ fun emulatorEnableEmulatorControlRequiresGradleProperty() {
+ emulatorControl.enable = true
+ assertFailsWith<IllegalStateException>(
+ message = "EmulatorControl is an experimental feature and it is disabled by default. Please add android.experimental.androidTest.enableEmulatorControl=true in your gradle.properties to opt-in to this feature.",
+ block = {
+ createEmulatorControlConfig(emptyProjectOptions, emulatorControl)
+ }
+ )
+ }
+
@Test
- fun enableByDslWithDefaultSetup() {
+ fun emulatorEnableEmulatorControlWithGradleProperty() {
+ val fakeProjectOptions = Mockito.mock(ProjectOptions::class.java)
+ whenever(fakeProjectOptions.get(BooleanOption.ENABLE_EMULATOR_CONTROL)).thenReturn(true)
+
emulatorControl.enable = true
- val emulatorControlConfig = createEmulatorControlConfig(emptyProjectOptions, emulatorControl)
+ val emulatorControlConfig = createEmulatorControlConfig(fakeProjectOptions, emulatorControl)
assertThat(emulatorControlConfig.enabled).isTrue()
- assertThat(emulatorControlConfig.secondsValid).isEqualTo(3600)
- assertThat(emulatorControlConfig.allowedEndpoints).isEmpty()
- }
+ }
+
@Test
fun setSecondsValidByDsl() {
- emulatorControl.enable = true
emulatorControl.secondsValid = 30
val emulatorControlConfig = createEmulatorControlConfig(emptyProjectOptions, emulatorControl)
- assertThat(emulatorControlConfig.enabled).isTrue()
assertThat(emulatorControlConfig.secondsValid).isEqualTo(30)
assertThat(emulatorControlConfig.allowedEndpoints).isEmpty()
}
@Test
fun setAllowEndpointsByDsl() {
- emulatorControl.enable = true
emulatorControl.allowedEndpoints.add("a")
val emulatorControlConfig = createEmulatorControlConfig(emptyProjectOptions, emulatorControl)
- assertThat(emulatorControlConfig.secondsValid).isEqualTo(3600)
assertThat(emulatorControlConfig.allowedEndpoints).contains("a")
assertThat(emulatorControlConfig.allowedEndpoints).hasSize(1)
}