From 7fbd6b645246886e21ce488acace99196ca39ed6 Mon Sep 17 00:00:00 2001 From: Pavel Kirpichenkov Date: Thu, 5 Jan 2023 15:05:05 +0200 Subject: [PATCH] Add test for compileOnly dependencies in Android KT-55697 --- .../regressionTests/ConfigurationsTest.kt | 38 +++++++++++++++++-- .../kotlin/gradle/util/buildProject.kt | 5 +++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt index b6a51f8b85d..235226e9c69 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt @@ -14,6 +14,7 @@ import org.gradle.api.artifacts.ProjectDependency import org.gradle.api.attributes.AttributeContainer import org.gradle.api.attributes.Category import org.gradle.api.attributes.Usage +import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.* import org.jetbrains.kotlin.gradle.dsl.kotlinExtension @@ -27,10 +28,7 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.util.* import java.util.* -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertNotNull -import kotlin.test.assertTrue +import kotlin.test.* class ConfigurationsTest : MultiplatformExtensionTest() { @@ -523,4 +521,36 @@ class ConfigurationsTest : MultiplatformExtensionTest() { ) } } + + // See KT-55697 + @Test + fun testCompileOnlyDependenciesDontGetToAndroidTests() { + val project = buildProject { + applyKotlinAndroidPlugin() + androidLibrary { + compileSdk = 31 + } + } + + project.dependencies { + add("compileOnly", "org:example:1.0") + } + + project.evaluate() + + fun isTestDependencyPresent(configName: String): Boolean = + project.configurations.getByName(configName).incoming.dependencies.any { it.name == "example" } + + assertTrue(isTestDependencyPresent("debugCompileClasspath")) + assertTrue(isTestDependencyPresent("releaseCompileClasspath")) + + assertFalse(isTestDependencyPresent("debugRuntimeClasspath")) + assertFalse(isTestDependencyPresent("debugAndroidTestCompileClasspath")) + assertFalse(isTestDependencyPresent("debugAndroidTestRuntimeClasspath")) + assertFalse(isTestDependencyPresent("debugUnitTestCompileClasspath")) + assertFalse(isTestDependencyPresent("debugUnitTestRuntimeClasspath")) + assertFalse(isTestDependencyPresent("releaseRuntimeClasspath")) + assertFalse(isTestDependencyPresent("releaseUnitTestCompileClasspath")) + assertFalse(isTestDependencyPresent("releaseUnitTestRuntimeClasspath")) + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/buildProject.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/buildProject.kt index ef82511e19c..6fd47fe710f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/buildProject.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/buildProject.kt @@ -15,6 +15,7 @@ import org.gradle.testfixtures.ProjectBuilder import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.unitTests.kpm.applyKpmPlugin +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformAndroidPlugin import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformJvmPlugin import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension @@ -51,6 +52,10 @@ fun Project.applyKotlinJvmPlugin() { project.plugins.apply(KotlinPlatformJvmPlugin::class.java) } +fun Project.applyKotlinAndroidPlugin() { + project.plugins.apply(KotlinPlatformAndroidPlugin::class.java) +} + fun Project.kotlin(code: KotlinMultiplatformExtension.() -> Unit) { val kotlin = project.kotlinExtension as KotlinMultiplatformExtension kotlin.code()