From eedded6492fcc5bfa175f30e0a57bbb5b3422432 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sat, 2 Sep 2023 17:50:52 +0530 Subject: [PATCH] tests(gradle-plugin): update assertions --- .../gradle/AndroidIDEInitScriptPluginTest.kt | 20 +++++++++++++++---- .../com/itsaky/androidide/gradle/utils.kt | 12 +++++++++-- .../resources/sample-project/build.gradle.kts | 10 ++++++++++ 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 gradle-plugin/src/test/resources/sample-project/build.gradle.kts diff --git a/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/AndroidIDEInitScriptPluginTest.kt b/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/AndroidIDEInitScriptPluginTest.kt index 7847bd159..23ab1d88e 100644 --- a/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/AndroidIDEInitScriptPluginTest.kt +++ b/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/AndroidIDEInitScriptPluginTest.kt @@ -18,7 +18,9 @@ package com.itsaky.androidide.gradle import com.google.common.truth.Truth.assertThat +import com.itsaky.androidide.buildinfo.BuildInfo import com.itsaky.androidide.utils.FileProvider +import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.GradleRunner import org.gradle.testkit.runner.internal.PluginUnderTestMetadataReading import org.junit.jupiter.api.Test @@ -30,8 +32,16 @@ import kotlin.io.path.pathString class AndroidIDEInitScriptPluginTest { @Test - fun `test init script plugin is applied`() { - val projectRoot = openProject() + fun `test plugins are applied and log sender dependency is added properly`() { + val result = buildProject() + assertBasics(result) + } + + private fun buildProject( + agpVersion: String = BuildInfo.AGP_VERSION_LATEST, + vararg plugins: String + ): BuildResult { + val projectRoot = openProject(agpVersion, *plugins) val initScript = FileProvider.testHomeDir().resolve(".androidide/init/androidide.init.gradle") val mavenLocal = FileProvider.projectRoot().resolve("gradle-plugin/build/maven-local") @@ -48,8 +58,10 @@ class AndroidIDEInitScriptPluginTest { writeInitScript(initScript.toFile(), PluginUnderTestMetadataReading.readImplementationClasspath()) - val result = runner.build() + return runner.build() + } + private fun assertBasics(result: BuildResult) { // These plugins must be applied to the for ((project, plugins) in mapOf( ":app" to arrayOf(AndroidIDEGradlePlugin::class, LogSenderPlugin::class))) { @@ -64,7 +76,7 @@ class AndroidIDEInitScriptPluginTest { for ((project, variants) in mapOf(":app" to arrayOf("demoDebug", "fullDebug"))) { for (variant in variants) { assertThat(result.output).contains( - "Adding LogSender dependency to variant '${variant}' of project '${project}'" + "Adding LogSender dependency (version '${BuildInfo.VERSION_NAME_SIMPLE}') to variant '${variant}' of project '${project}'" ) } } diff --git a/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt b/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt index 92e112110..fb1e40102 100644 --- a/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt +++ b/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt @@ -17,6 +17,7 @@ package com.itsaky.androidide.gradle +import com.itsaky.androidide.buildinfo.BuildInfo import com.itsaky.androidide.utils.FileProvider import java.io.File import java.nio.file.Path @@ -46,7 +47,10 @@ internal fun writeInitScript(file: File, deps: List) { } } -internal fun openProject(agpVersion: String = "", vararg plugins: String): Path { +internal fun openProject( + agpVersion: String = BuildInfo.AGP_VERSION_LATEST, + vararg plugins: String +): Path { val projectRoot = FileProvider.projectRoot() .resolve("gradle-plugin/src/test/resources/sample-project") @@ -67,7 +71,11 @@ internal fun openProject(agpVersion: String = "", vararg plugins: String): Path private fun File.replaceAllPlaceholders(entries: Map) { val sb = StringBuilder(parentFile.resolve("${name}.in").readText()) for ((placeholder, value) in entries) { - sb.replace("@@${placeholder}@@".toRegex(RegexOption.LITERAL), value) + val regex = Regex.escape("@@${placeholder}@@").toRegex() + val result = regex.findAll(sb) + for (matchResult in result) { + sb.replace(matchResult.range.first, matchResult.range.last + 1, value) + } } writeText(sb.toString()) } \ No newline at end of file diff --git a/gradle-plugin/src/test/resources/sample-project/build.gradle.kts b/gradle-plugin/src/test/resources/sample-project/build.gradle.kts new file mode 100644 index 000000000..73d5da07d --- /dev/null +++ b/gradle-plugin/src/test/resources/sample-project/build.gradle.kts @@ -0,0 +1,10 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + id("com.android.application") version "8.1.0" apply false + id("com.android.library") version "8.1.0" apply false + +} + +tasks.register("clean") { + delete(rootProject.buildDir) +} \ No newline at end of file