diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-12 02:29:46 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-12 02:29:46 +0000 |
commit | d34b51c7328e5b6a3ed4656b6eee4d15d360930a (patch) | |
tree | 0ba8cfb2ada63f33d5cd87848958c93ecf16b18e | |
parent | 84a3f0c1500e5a9e4c8f0208b740fb4d2fb7813f (diff) | |
parent | 3dd39398da1540b85f46750c0ae71e543b3f9c14 (diff) | |
download | base-d34b51c7328e5b6a3ed4656b6eee4d15d360930a.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/22579695'] into studio-giraffe-release.
Change-Id: I12551c5e0778b45f638aab6f74588e2325ab6b70
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) } |