1
package com.avito.instrumentation
3
import com.avito.instrumentation.configuration.report.ReportConfig
4
import com.avito.instrumentation.internal.LocalRunArgsChecker
5
import com.avito.reportviewer.model.RunId
6
import com.avito.test.gradle.TestProjectGenerator
7
import com.avito.test.gradle.ciRun
8
import com.avito.test.gradle.git
9
import com.avito.test.gradle.module.AndroidAppModule
10
import com.avito.test.gradle.plugin.plugins
11
import com.google.common.truth.Truth.assertThat
12
import org.junit.jupiter.api.DynamicTest
13
import org.junit.jupiter.api.DynamicTest.dynamicTest
14
import org.junit.jupiter.api.TestFactory
15
import org.junit.jupiter.api.io.TempDir
17
import kotlin.io.path.div
19
internal class LocalRunArgsTest {
21
private val appName = "app"
22
private val targetBranch = "another"
23
private val buildType = "buildType"
25
private val reportConfig = ReportConfig.ReportViewer.SendFromDevice(
26
reportApiUrl = "http://stub",
27
reportViewerUrl = "http://stub",
28
fileStorageUrl = "http://stub",
29
planSlug = "AppAndroid",
30
jobSlug = "LocalTests",
34
fun `instrumentation args - passed correctly - kotlin`(@TempDir projectDir: File): List<DynamicTest> {
37
id("com.avito.android.gradle-logger")
43
id(instrumentationPluginId)
47
"import com.avito.instrumentation.reservation.request.Device",
48
"import com.avito.instrumentation.configuration.report.ReportConfig",
50
buildGradleExtra = kotlinStubConfig(reportConfig)
54
).generateIn(projectDir)
56
return cases(projectDir)
59
private fun cases(projectDir: File): List<DynamicTest> {
61
git("branch $targetBranch")
66
"-PteamcityBuildId=0",
67
"-Pavito.git.state=env",
68
"-PisGradleTestKitRun=true",
69
buildType = buildType,
70
).assertThat().buildSuccessful()
72
val dumpDir = projectDir.toPath() / "outputs" / dumpDirName
74
val instrumentationArgs = LocalRunArgsChecker { dumpDir.toFile() }.readDump()
75
val commit = projectDir.git("rev-parse HEAD").trim()
78
buildTypeId = "teamcity-$buildType"
79
).toReportViewerFormat()
82
Case("planSlug", "AppAndroid"),
83
Case("jobSlug", "LocalTests"),
85
Case("avito.report.transport", "backend"),
86
Case("fileStorageUrl", "http://stub"),
87
Case("deviceName", "local"),
88
Case("reportApiUrl", "http://stub"),
89
Case("reportViewerUrl", "http://stub"),
90
Case("expectedCustomParam", "value"),
91
Case("override", "createdInInstrumentationRunnerArguments"),
93
return cases.map { case ->
94
dynamicTest(case.param) {
95
assertThat(instrumentationArgs).containsEntry(case.param, case.expectedValue)
97
} + dynamicTest("keys count") {
98
assertThat(instrumentationArgs.keys).hasSize(cases.size)
102
private data class Case(
104
val expectedValue: String