diff --git a/cli/src/jvmMain/kotlin/Cli.kt b/cli/src/jvmMain/kotlin/Cli.kt index f6932a7..7b50340 100644 --- a/cli/src/jvmMain/kotlin/Cli.kt +++ b/cli/src/jvmMain/kotlin/Cli.kt @@ -715,7 +715,7 @@ class Target : CliktCommand("target") { private fun hasAndroidTarget(buildFile: File): Boolean { val content = buildFile.readText() - return content.contains("androidLibrary {") || content.contains("androidTarget {") || content.contains("android {") + return content.contains("android {") } private fun hasJvmTarget(buildFile: File): Boolean { diff --git a/cli/src/jvmTest/kotlin/com/composables/cli/CliTest.kt b/cli/src/jvmTest/kotlin/com/composables/cli/CliTest.kt index 847dc4e..12f4776 100644 --- a/cli/src/jvmTest/kotlin/com/composables/cli/CliTest.kt +++ b/cli/src/jvmTest/kotlin/com/composables/cli/CliTest.kt @@ -269,6 +269,54 @@ class CliTest { } } + @Test + fun `target command detects current android target shape`() { + withTempDir { targetDir -> + val buildFile = File(targetDir, "build.gradle.kts").apply { + writeText( + """ + kotlin { + android { + namespace = "com.example.shared" + } + } + """.trimIndent(), + ) + } + + assertThat(hasAndroidTarget(buildFile)).isTrue() + } + } + + @Test + fun `target command ignores legacy android target shapes`() { + withTempDir { targetDir -> + val androidTargetFile = File(targetDir, "android-target.gradle.kts").apply { + writeText( + """ + kotlin { + androidTarget() + } + """.trimIndent(), + ) + } + val androidLibraryFile = File(targetDir, "android-library.gradle.kts").apply { + writeText( + """ + kotlin { + androidLibrary { + namespace = "com.example.shared" + } + } + """.trimIndent(), + ) + } + + assertThat(hasAndroidTarget(androidTargetFile)).isFalse() + assertThat(hasAndroidTarget(androidLibraryFile)).isFalse() + } + } + @Test fun `gradleScript uses batch file on windows`() { withOsName("Windows 11") { @@ -302,5 +350,11 @@ class CliTest { } } + private fun hasAndroidTarget(buildFile: File): Boolean { + val method = Target::class.java.getDeclaredMethod("hasAndroidTarget", File::class.java) + method.isAccessible = true + return method.invoke(Target(), buildFile) as Boolean + } + private fun String.countOccurrences(value: String): Int = split(value).size - 1 }