1
package com.avito.instrumentation
3
import com.avito.test.gradle.TestProjectGenerator
4
import com.avito.test.gradle.TestResult
5
import com.avito.test.gradle.gradlew
6
import com.avito.test.gradle.module.AndroidAppModule
7
import com.avito.test.gradle.plugin.plugins
8
import org.junit.jupiter.api.Test
9
import org.junit.jupiter.api.io.TempDir
12
internal class InstrumentationTestsPluginCIFalseTests {
15
lateinit var projectDir: File
17
private val instrumentationTask = ":app:instrumentationApi22Test"
20
fun `k8s emulator target task is available with credentials`() {
22
projectDir = projectDir,
24
|Device.CloudEmulator(
27
| model = "Android_SDK_built_for_x86",
30
| cpuCoresLimit = "1",
31
| cpuCoresRequest = "1.3",
32
| memoryLimit = "3.5Gi",
33
| memoryRequest = "3Gi",
38
executeInstrumentationTask(
41
"-PkubernetesToken=stub",
42
"-PkubernetesUrl=stub",
45
.tasksShouldBeTriggered(instrumentationTask)
49
fun `gradle configuration fails with k8s emulator target without credentials`() {
51
projectDir = projectDir,
53
|Device.CloudEmulator(
56
| model = "Android_SDK_built_for_x86",
59
| cpuCoresLimit = "1",
60
| cpuCoresRequest = "1.3",
61
| memoryLimit = "3.5Gi",
62
| memoryRequest = "3Gi",
66
executeInstrumentationTask(
67
task = instrumentationTask,
71
.outputContains("Cannot query the value of property")
75
fun `local emulator target task is always available`() {
77
projectDir = projectDir,
78
device = "Device.LocalEmulator.device(22)"
81
executeInstrumentationTask(
82
task = ":app:instrumentationApi22Local",
86
.tasksShouldBeTriggered(":app:instrumentationApi22Local")
89
private fun executeInstrumentationTask(
91
expectFailure: Boolean,
93
): TestResult = gradlew(
97
"-Pavito.build=local",
98
"-Pavito.git.state=local",
100
expectFailure = expectFailure,
104
private fun createProject(
108
TestProjectGenerator(
110
id("com.avito.android.gradle-logger")
116
id(instrumentationPluginId)
118
buildGradleExtra = instrumentationConfiguration(
124
).generateIn(projectDir)
127
private fun instrumentationConfiguration(device: String): String = """
128
|import com.avito.instrumentation.reservation.request.Device
129
|import com.avito.instrumentation.configuration.KubernetesViaCredentials
130
|import com.avito.kotlin.dsl.getOptionalStringProperty
131
|import com.avito.instrumentation.configuration.report.ReportConfig
135
| outputDir.set(rootProject.file("outputs"))
136
| report.set(ReportConfig.NoOp)
138
| register<KubernetesViaCredentials>("test") {
139
| url.set("http://stub")
140
| namespace.set("android-emulator")
141
| token.set(getOptionalStringProperty("kubernetesToken"))
146
| register("api22") {
148
| register("api22") {
149
| deviceName = "api22"
153
| minimumSuccessCount = 1
156
| staticDevicesReservation {
168
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"