avito-android

Форк
0
92 строки · 3.1 Кб
1
package com.avito.plugin
2

3
import com.avito.test.gradle.TestProjectGenerator
4
import com.avito.test.gradle.gradlew
5
import com.avito.test.gradle.module.AndroidAppModule
6
import com.avito.test.gradle.plugin.plugins
7
import org.junit.jupiter.api.Test
8
import org.junit.jupiter.api.io.TempDir
9
import java.io.File
10
import java.nio.file.Paths
11

12
internal class QAppsPluginTest {
13

14
    @Test
15
    fun `plugin applied - with necessary parameters provided`(@TempDir projectDir: File) {
16
        createProject(
17
            projectDir,
18
            serviceUrl = "http://qapps.dev",
19
            branchName = "develop",
20
            comment = "build #1"
21
        )
22

23
        val result = gradlew(projectDir, "help")
24

25
        result.assertThat().buildSuccessful()
26
    }
27

28
    @Test
29
    fun `plugin apply fails - without required params - in ci`(@TempDir projectDir: File) {
30
        createProject(
31
            projectDir,
32
            serviceUrl = null,
33
            branchName = null,
34
            comment = null
35
        )
36

37
        val result = gradlew(projectDir, ":app:qappsUploadUnsignedDebug", expectFailure = true)
38

39
        result.assertThat().apply {
40
            buildFailed()
41
            outputContains("property 'branch' doesn't have a configured value")
42
            outputContains("property 'comment' doesn't have a configured value")
43
            outputContains("property 'host' doesn't have a configured value")
44
        }
45
    }
46

47
    private fun createProject(
48
        projectDir: File,
49
        serviceUrl: String?,
50
        comment: String?,
51
        branchName: String?
52
    ) {
53
        val stubApk = File(
54
            projectDir.toPath().resolve(Paths.get("app", "build", "outputs", "apk", "debug"))
55
                .toFile()
56
                .apply { mkdirs() },
57
            "app-debug.apk"
58
        ).apply { createNewFile() }
59

60
        TestProjectGenerator(
61
            modules = listOf(
62
                AndroidAppModule(
63
                    "app",
64
                    enableKotlinAndroidPlugin = false,
65
                    imports = listOf(
66
                        "import com.avito.plugin.qappsUploadUnsignedTaskProvider"
67
                    ),
68
                    plugins = plugins {
69
                        id("com.avito.android.qapps")
70
                    },
71
                    buildGradleExtra = """
72
                        qapps {
73
                            ${serviceUrl.asOptionalPropertySetter("serviceUrl")}
74
                            ${comment.asOptionalPropertySetter("comment")}
75
                            ${branchName.asOptionalPropertySetter("branchName")}
76
                        }
77
                        
78
                        afterEvaluate {
79
                            tasks.qappsUploadUnsignedTaskProvider("debug").configure {
80
                                apkDirectory.set(file("${stubApk.parentFile}"))
81
                            }
82
                        }
83
                    """.trimIndent(),
84
                    useKts = true
85
                )
86
            )
87
        ).generateIn(projectDir)
88
    }
89

90
    private fun String?.asOptionalPropertySetter(name: String): String =
91
        if (this == null) "" else "$name.set(\"$this\")"
92
}
93

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.