Add tests for variant-aware dependency resolution between projects
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
import org.jetbrains.kotlin.gradle.util.modify
|
||||
import org.jetbrains.kotlin.gradle.util.testResolveAllConfigurations
|
||||
import org.junit.Test
|
||||
|
||||
class VariantAwareDependenciesIT : BaseGradleIT() {
|
||||
private val gradleVersion = GradleVersionRequired.AtLeast("4.8")
|
||||
|
||||
@Test
|
||||
fun testJvmKtAppResolvesMppLib() {
|
||||
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
||||
val innerProject = Project("simpleProject")
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript(innerProject.projectName).appendText("\ndependencies { compile rootProject }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testJsKtAppResolvesMppLib() {
|
||||
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
||||
val innerProject = Project("kotlin2JsInternalTest")
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript(innerProject.projectName).appendText("\nrepositories { jcenter() }; dependencies { compile rootProject }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMppLibResolvesJvmKtApp() {
|
||||
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
||||
val innerProject = Project("simpleProject")
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript().appendText("\ndependencies { jvm6MainImplementation project(':${innerProject.projectName}') }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMppLibResolvesJsKtApp() {
|
||||
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
||||
val innerProject = Project("kotlin2JsInternalTest")
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript().appendText("\ndependencies { nodeJsMainImplementation project(':${innerProject.projectName}') }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNonKotlinJvmAppResolvesMppLib() {
|
||||
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
||||
val innerProject = Project("simpleProject").apply {
|
||||
setupWorkingDir()
|
||||
gradleBuildScript().modify { it.replace("apply plugin: \"kotlin\"", "") }
|
||||
}
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript(innerProject.projectName).appendText("\ndependencies { compile rootProject }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testJvmKtAppResolvesJvmKtApp() {
|
||||
val outerProject = Project("simpleProject", gradleVersion)
|
||||
val innerProject = Project("jvmTarget") // cannot use simpleApp again, should be another project
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript(innerProject.projectName).appendText("\ndependencies { compile rootProject }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testJsKtAppResolvesJsKtApp() {
|
||||
val outerProject = Project("kotlin2JsInternalTest", gradleVersion)
|
||||
val innerProject = Project("kotlin2JsNoOutputFileProject")
|
||||
|
||||
with(outerProject) {
|
||||
embedProject(innerProject)
|
||||
gradleBuildScript(innerProject.projectName).appendText("\ndependencies { compile rootProject }")
|
||||
|
||||
testResolveAllConfigurations(innerProject.projectName)
|
||||
}
|
||||
}
|
||||
|
||||
private fun Project.embedProject(other: Project) {
|
||||
setupWorkingDir()
|
||||
other.setupWorkingDir()
|
||||
other.projectDir.copyRecursively(projectDir.resolve(other.projectName))
|
||||
projectDir.resolve("settings.gradle").appendText("\ninclude '${other.projectName}'")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user