Add test for compileOnly dependencies in Android

KT-55697
This commit is contained in:
Pavel Kirpichenkov
2023-01-05 15:05:05 +02:00
committed by Space Team
parent 2dca2b4827
commit 7fbd6b6452
2 changed files with 39 additions and 4 deletions
@@ -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"))
}
}
@@ -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()