[Gradle] [MPP] Fix 'getDependenciesTransformation' for ^KT-46273
This setup requires a 'jvm like' target and an orphan source set, which depends on 'commonTest'. This orphan will not participate in any compilation and therefore will not have any platform. The code expected at least one test task for this source set and therefore at least one test framework. ^KT-46273 Verification Pending
This commit is contained in:
committed by
Space
parent
1960fe65b8
commit
da361a030e
+48
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("FunctionName")
|
||||
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import kotlin.test.Test
|
||||
|
||||
class KT46273JvmTargetAndOrphanTestSourceSetTest : MultiplatformExtensionTest() {
|
||||
|
||||
override fun setup() {
|
||||
enableGranularSourceSetsMetadata()
|
||||
super.setup()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test KT-46273`() {
|
||||
kotlin.jvm()
|
||||
|
||||
val commonTest = kotlin.sourceSets.getByName("commonTest")
|
||||
commonTest.dependencies {
|
||||
implementation(kotlin("test"))
|
||||
}
|
||||
|
||||
val orphanTestSourceSet = kotlin.sourceSets.create("orphanTest") as DefaultKotlinSourceSet
|
||||
orphanTestSourceSet.dependsOn(commonTest)
|
||||
|
||||
project.evaluate()
|
||||
|
||||
/*
|
||||
Previously failed with:
|
||||
Collection is empty.
|
||||
java.util.NoSuchElementException: Collection is empty.
|
||||
at kotlin.collections.CollectionsKt___CollectionsKt.single(_Collections.kt:562)
|
||||
at org.jetbrains.kotlin.gradle.internal.KotlinDependenciesManagementKt.kotlinTestCapabilityForJvmSourceSet(KotlinDependenciesManagement.kt:347)
|
||||
|
||||
The dependencies' transformation will be called by the IDE during import.
|
||||
*/
|
||||
KotlinDependencyScope.values().forEach { scope ->
|
||||
orphanTestSourceSet.getDependenciesTransformation(scope)
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
-13
@@ -11,18 +11,13 @@ import com.android.build.gradle.api.UnitTestVariant
|
||||
import org.gradle.api.InvalidUserDataException
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.Dependency
|
||||
import org.gradle.api.artifacts.DependencySet
|
||||
import org.gradle.api.artifacts.ExternalDependency
|
||||
import org.gradle.api.artifacts.ProjectDependency
|
||||
import org.gradle.api.artifacts.*
|
||||
import org.gradle.api.tasks.testing.AbstractTestTask
|
||||
import org.gradle.api.tasks.testing.Test
|
||||
import org.gradle.api.tasks.testing.junit.JUnitOptions
|
||||
import org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions
|
||||
import org.gradle.api.tasks.testing.testng.TestNGOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.execution.KotlinAggregateExecutionSource
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
@@ -31,13 +26,12 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.withAllDependsOnSourceSets
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.withAllDependsOnSourceSets
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.JvmCompilationsTestRunSource
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
||||
import org.jetbrains.kotlin.gradle.testing.KotlinTaskTestRun
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
|
||||
internal const val KOTLIN_MODULE_GROUP = "org.jetbrains.kotlin"
|
||||
@@ -348,10 +342,8 @@ private fun kotlinTestCapabilityForJvmSourceSet(project: Project, kotlinSourceSe
|
||||
KotlinTestJvmFramework.junit
|
||||
}
|
||||
}
|
||||
return when {
|
||||
frameworks.size > 1 -> null
|
||||
else -> "$KOTLIN_MODULE_GROUP:$KOTLIN_TEST_ROOT_MODULE_NAME-framework-${frameworks.single()}"
|
||||
}
|
||||
|
||||
return "$KOTLIN_MODULE_GROUP:$KOTLIN_TEST_ROOT_MODULE_NAME-framework-${frameworks.singleOrNull() ?: return null}"
|
||||
}
|
||||
|
||||
internal const val KOTLIN_TEST_ROOT_MODULE_NAME = "kotlin-test"
|
||||
@@ -402,4 +394,4 @@ private fun Project.tryWithDependenciesIfUnresolved(configuration: Configuration
|
||||
|
||||
private fun Configuration.allNonProjectDependencies() = allDependencies.matching { it !is ProjectDependency }
|
||||
|
||||
private fun Configuration.nonProjectDependencies() = dependencies.matching { it !is ProjectDependency }
|
||||
private fun Configuration.nonProjectDependencies() = dependencies.matching { it !is ProjectDependency }
|
||||
|
||||
Reference in New Issue
Block a user