HMPP: add importing tests
This commit is contained in:
+183
-1
@@ -5,7 +5,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
import com.intellij.openapi.roots.DependencyScope
|
||||
import org.jetbrains.jps.model.java.JavaResourceRootType
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.idea.codeInsight.gradle.MultiplePluginVersionGradleImportingTestCase
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatform
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
@@ -46,6 +54,179 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testImportIntermediateModules() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
|
||||
checkProjectStructure {
|
||||
module("my-app")
|
||||
module("project.my-app.commonMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16, KonanPlatforms.defaultKonanPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
sourceFolder("src/commonMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/commonMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.commonTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16, KonanPlatforms.defaultKonanPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.TEST)
|
||||
sourceFolder("src/commonTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/commonTest/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.jsMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.jvmAndJsMain", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.linuxAndJsMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/jsMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/jsMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.jsTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-js:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jsMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jvmAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jvmAndJsTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.linuxAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.linuxAndJsTest", DependencyScope.TEST)
|
||||
sourceFolder("src/jsTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/jsTest/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.jvmAndJsMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/jvmAndJsMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/jvmAndJsMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.jvmAndJsTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jvmAndJsMain", DependencyScope.TEST)
|
||||
sourceFolder("src/jvmAndJsTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/jvmAndJsTest/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.jvmMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.jvmAndJsMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/jvmMain/kotlin", JavaSourceRootType.SOURCE)
|
||||
sourceFolder("src/jvmMain/resources", JavaResourceRootType.RESOURCE)
|
||||
}
|
||||
|
||||
module("project.my-app.jvmTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: junit:junit:4.12", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.hamcrest:hamcrest-core:1.3", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jvmAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jvmAndJsTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.jvmMain", DependencyScope.TEST)
|
||||
sourceFolder("src/jvmTest/kotlin", JavaSourceRootType.TEST_SOURCE)
|
||||
sourceFolder("src/jvmTest/resources", JavaResourceRootType.TEST_RESOURCE)
|
||||
}
|
||||
|
||||
module("project.my-app.linuxAndJsMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, KonanPlatforms.defaultKonanPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/linuxAndJsMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/linuxAndJsMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.linuxAndJsTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, KonanPlatforms.defaultKonanPlatform)
|
||||
sourceFolder("src/linuxAndJsTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/linuxAndJsTest/resources", TestResourceKotlinRootType)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.linuxAndJsMain", DependencyScope.TEST)
|
||||
}
|
||||
|
||||
module("project.my-app.linuxX64Main") {
|
||||
isHMPP(true)
|
||||
targetPlatform(KonanPlatforms.defaultKonanPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.COMPILE)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - builtin [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - iconv [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - linux [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - posix [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - stdlib", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - zlib [linux_x64]", DependencyScope.PROVIDED)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.COMPILE)
|
||||
moduleDependency("project.my-app.linuxAndJsMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/linuxX64Main/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/linuxX64Main/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("project.my-app.linuxX64Test") {
|
||||
isHMPP(true)
|
||||
targetPlatform(KonanPlatforms.defaultKonanPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.50-dev-1383", DependencyScope.TEST)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - builtin [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - iconv [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - linux [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - posix [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - stdlib", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - zlib [linux_x64]", DependencyScope.PROVIDED)
|
||||
moduleDependency("project.my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.linuxAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.linuxAndJsTest", DependencyScope.TEST)
|
||||
moduleDependency("project.my-app.linuxX64Main", DependencyScope.TEST)
|
||||
sourceFolder("src/linuxX64Test/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/linuxX64Test/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkProjectStructure(
|
||||
exhaustiveModuleList: Boolean = true,
|
||||
exhaustiveSourceSourceRootList: Boolean = true,
|
||||
@@ -58,7 +239,8 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
exhaustiveModuleList,
|
||||
exhaustiveSourceSourceRootList,
|
||||
exhaustiveDependencyList,
|
||||
body)
|
||||
body
|
||||
)
|
||||
}
|
||||
|
||||
override fun importProject() {
|
||||
|
||||
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
import org.jetbrains.kotlin.idea.project.isHMPPEnabled
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.platform.SimplePlatform
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.presentableDescription
|
||||
|
||||
@@ -111,6 +112,25 @@ class ModuleInfo(
|
||||
}
|
||||
}
|
||||
|
||||
fun targetPlatform(vararg platforms: TargetPlatform) {
|
||||
val expected = platforms.flatMap { it.componentPlatforms }.toSet()
|
||||
val actual = module.platform?.componentPlatforms
|
||||
|
||||
if (actual == null) {
|
||||
projectInfo.messageCollector.report("Module '${module.name}': actual target platform is null")
|
||||
return
|
||||
}
|
||||
|
||||
val notFound = expected.subtract(actual)
|
||||
if (notFound.isNotEmpty()) {
|
||||
projectInfo.messageCollector.report("Module '${module.name}': not found target platforms: " + notFound.joinToString(","))
|
||||
}
|
||||
val notExpected = actual.subtract(expected)
|
||||
if (notExpected.isNotEmpty()) {
|
||||
projectInfo.messageCollector.report("Module '${module.name}': found unexpected target platforms: " + notExpected.joinToString(","))
|
||||
}
|
||||
}
|
||||
|
||||
fun apiVersion(version: String) {
|
||||
val actualVersion = module.languageVersionSettings.apiVersion.versionString
|
||||
if (actualVersion != version) {
|
||||
|
||||
Vendored
+88
@@ -0,0 +1,88 @@
|
||||
plugins {
|
||||
// TODO parametrization
|
||||
kotlin("multiplatform").version("1.3.50-dev-1383")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://kotlin.bintray.com/kotlin-dev")
|
||||
jcenter()
|
||||
}
|
||||
|
||||
group = "project"
|
||||
version = "1.0"
|
||||
|
||||
kotlin {
|
||||
jvm()
|
||||
js()
|
||||
|
||||
linuxX64()
|
||||
|
||||
sourceSets {
|
||||
val commonMain by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib-common"))
|
||||
}
|
||||
}
|
||||
|
||||
val commonTest by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("test-common"))
|
||||
implementation(kotlin("test-annotations-common"))
|
||||
}
|
||||
}
|
||||
|
||||
val jvmAndJsMain by creating {
|
||||
dependsOn(commonMain)
|
||||
}
|
||||
|
||||
val jvmAndJsTest by creating {
|
||||
dependsOn(commonTest)
|
||||
}
|
||||
|
||||
val linuxAndJsMain by creating {
|
||||
dependsOn(commonMain)
|
||||
}
|
||||
|
||||
val linuxAndJsTest by creating {
|
||||
dependsOn(commonTest)
|
||||
}
|
||||
|
||||
jvm().compilations["main"].defaultSourceSet {
|
||||
dependsOn(jvmAndJsMain)
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib"))
|
||||
}
|
||||
}
|
||||
|
||||
jvm().compilations["test"].defaultSourceSet {
|
||||
dependsOn(jvmAndJsTest)
|
||||
dependencies {
|
||||
implementation(kotlin("test-junit"))
|
||||
}
|
||||
}
|
||||
|
||||
js().compilations["main"].defaultSourceSet {
|
||||
dependsOn(jvmAndJsMain)
|
||||
dependsOn(linuxAndJsMain)
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib-js"))
|
||||
}
|
||||
}
|
||||
|
||||
js().compilations["test"].defaultSourceSet {
|
||||
dependsOn(jvmAndJsTest)
|
||||
dependsOn(linuxAndJsTest)
|
||||
dependencies {
|
||||
implementation(kotlin("test-js"))
|
||||
}
|
||||
}
|
||||
|
||||
linuxX64().compilations["main"].defaultSourceSet {
|
||||
dependsOn(linuxAndJsMain)
|
||||
}
|
||||
|
||||
linuxX64().compilations["test"].defaultSourceSet {
|
||||
dependsOn(linuxAndJsTest)
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
kotlin.mpp.enableGranularSourceSetsMetadata=true
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven("https://dl.bintray.com/kotlin/kotlin-dev")
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.name = "my-app"
|
||||
|
||||
enableFeaturePreview("GRADLE_METADATA")
|
||||
Reference in New Issue
Block a user