avito-android
92 строки · 3.1 Кб
1package com.avito.plugin
2
3import com.avito.test.gradle.TestProjectGenerator
4import com.avito.test.gradle.gradlew
5import com.avito.test.gradle.module.AndroidAppModule
6import com.avito.test.gradle.plugin.plugins
7import org.junit.jupiter.api.Test
8import org.junit.jupiter.api.io.TempDir
9import java.io.File
10import java.nio.file.Paths
11
12internal class QAppsPluginTest {
13
14@Test
15fun `plugin applied - with necessary parameters provided`(@TempDir projectDir: File) {
16createProject(
17projectDir,
18serviceUrl = "http://qapps.dev",
19branchName = "develop",
20comment = "build #1"
21)
22
23val result = gradlew(projectDir, "help")
24
25result.assertThat().buildSuccessful()
26}
27
28@Test
29fun `plugin apply fails - without required params - in ci`(@TempDir projectDir: File) {
30createProject(
31projectDir,
32serviceUrl = null,
33branchName = null,
34comment = null
35)
36
37val result = gradlew(projectDir, ":app:qappsUploadUnsignedDebug", expectFailure = true)
38
39result.assertThat().apply {
40buildFailed()
41outputContains("property 'branch' doesn't have a configured value")
42outputContains("property 'comment' doesn't have a configured value")
43outputContains("property 'host' doesn't have a configured value")
44}
45}
46
47private fun createProject(
48projectDir: File,
49serviceUrl: String?,
50comment: String?,
51branchName: String?
52) {
53val stubApk = File(
54projectDir.toPath().resolve(Paths.get("app", "build", "outputs", "apk", "debug"))
55.toFile()
56.apply { mkdirs() },
57"app-debug.apk"
58).apply { createNewFile() }
59
60TestProjectGenerator(
61modules = listOf(
62AndroidAppModule(
63"app",
64enableKotlinAndroidPlugin = false,
65imports = listOf(
66"import com.avito.plugin.qappsUploadUnsignedTaskProvider"
67),
68plugins = plugins {
69id("com.avito.android.qapps")
70},
71buildGradleExtra = """
72qapps {
73${serviceUrl.asOptionalPropertySetter("serviceUrl")}
74${comment.asOptionalPropertySetter("comment")}
75${branchName.asOptionalPropertySetter("branchName")}
76}
77
78afterEvaluate {
79tasks.qappsUploadUnsignedTaskProvider("debug").configure {
80apkDirectory.set(file("${stubApk.parentFile}"))
81}
82}
83""".trimIndent(),
84useKts = true
85)
86)
87).generateIn(projectDir)
88}
89
90private fun String?.asOptionalPropertySetter(name: String): String =
91if (this == null) "" else "$name.set(\"$this\")"
92}
93