Convert KotlinProjectIT to new test dsl
^KT-45745 In Progress
This commit is contained in:
+311
-247
@@ -5,267 +5,331 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.model
|
package org.jetbrains.kotlin.gradle.model
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.BaseGradleIT
|
import org.gradle.api.logging.configuration.WarningMode
|
||||||
import org.jetbrains.kotlin.gradle.util.AGPVersion
|
import org.gradle.util.GradleVersion
|
||||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
import org.jetbrains.kotlin.gradle.testbase.*
|
||||||
import org.junit.Test
|
import org.junit.jupiter.api.DisplayName
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
import kotlin.test.assertFalse
|
import kotlin.test.assertFalse
|
||||||
import kotlin.test.assertNotEquals
|
import kotlin.test.assertNotEquals
|
||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
class KotlinProjectIT : BaseGradleIT() {
|
@DisplayName("Kotlin plugin model")
|
||||||
override fun defaultBuildOptions(): BuildOptions {
|
@OtherGradlePluginTests
|
||||||
return super.defaultBuildOptions().copy(
|
class KotlinProjectIT : KGPBaseTest() {
|
||||||
androidGradlePluginVersion = AGPVersion.v3_4_1,
|
override val defaultBuildOptions = super.defaultBuildOptions.copy(
|
||||||
androidHome = KtTestUtil.findAndroidSdk()
|
androidVersion = TestVersions.AGP.AGP_34,
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@DisplayName("Valid model is available in Kotlin only project")
|
||||||
fun testKotlinProject() {
|
@GradleTest
|
||||||
val project = Project("kotlinProject")
|
fun testKotlinProject(gradleVersion: GradleVersion) {
|
||||||
val kotlinProject = project.getModels(KotlinProject::class.java).getModel(":")!!
|
project("kotlinProject", gradleVersion) {
|
||||||
|
getModels<KotlinProject> {
|
||||||
|
with(getModel(":")!!) {
|
||||||
|
assertBasics(
|
||||||
|
"kotlinProject",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||||
|
"DEFAULT"
|
||||||
|
)
|
||||||
|
assertTrue(expectedByDependencies.isEmpty())
|
||||||
|
|
||||||
kotlinProject.assertBasics(
|
assertEquals(2, sourceSets.size)
|
||||||
"kotlinProject",
|
val mainSourceSet = sourceSets.single { it.name == "main" }
|
||||||
defaultBuildOptions().kotlinVersion,
|
val testSourceSet = sourceSets.single { it.name == "test" }
|
||||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
|
||||||
"DEFAULT"
|
|
||||||
)
|
|
||||||
assertTrue(kotlinProject.expectedByDependencies.isEmpty())
|
|
||||||
|
|
||||||
assertEquals(2, kotlinProject.sourceSets.size)
|
mainSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
||||||
val mainSourceSet = kotlinProject.sourceSets.find { it.name == "main" }!!
|
testSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
||||||
val testSourceSet = kotlinProject.sourceSets.find { it.name == "test" }!!
|
|
||||||
|
|
||||||
mainSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
assertEquals(2, mainSourceSet.sourceDirectories.size)
|
||||||
testSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
assertTrue(
|
||||||
|
mainSourceSet.sourceDirectories.contains(
|
||||||
|
projectPath.resolve("src/main/kotlin").toFile()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assertTrue(
|
||||||
|
mainSourceSet.sourceDirectories.contains(
|
||||||
|
projectPath.resolve("src/main/java").toFile()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assertEquals(1, mainSourceSet.resourcesDirectories.size)
|
||||||
|
assertTrue(
|
||||||
|
mainSourceSet.resourcesDirectories.contains(
|
||||||
|
projectPath.resolve("src/main/resources").toFile()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assertEquals(
|
||||||
|
projectPath.resolve("build/classes/kotlin/main").toFile(),
|
||||||
|
mainSourceSet.classesOutputDirectory
|
||||||
|
)
|
||||||
|
assertEquals(
|
||||||
|
projectPath.resolve("build/resources/main").toFile(),
|
||||||
|
mainSourceSet.resourcesOutputDirectory
|
||||||
|
)
|
||||||
|
assertTrue(mainSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("guava") })
|
||||||
|
assertFalse(mainSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("testng") })
|
||||||
|
|
||||||
assertEquals(2, mainSourceSet.sourceDirectories.size)
|
assertEquals(2, testSourceSet.sourceDirectories.size)
|
||||||
assertTrue(mainSourceSet.sourceDirectories.contains(project.projectDir.resolve("src/main/kotlin")))
|
assertTrue(testSourceSet.sourceDirectories.contains(projectPath.resolve("src/test/kotlin").toFile()))
|
||||||
assertTrue(mainSourceSet.sourceDirectories.contains(project.projectDir.resolve("src/main/java")))
|
assertTrue(testSourceSet.sourceDirectories.contains(projectPath.resolve("src/test/java").toFile()))
|
||||||
assertEquals(1, mainSourceSet.resourcesDirectories.size)
|
assertEquals(1, testSourceSet.resourcesDirectories.size)
|
||||||
assertTrue(mainSourceSet.resourcesDirectories.contains(project.projectDir.resolve("src/main/resources")))
|
assertTrue(testSourceSet.resourcesDirectories.contains(projectPath.resolve("src/test/resources").toFile()))
|
||||||
assertEquals(project.projectDir.resolve("build/classes/kotlin/main"), mainSourceSet.classesOutputDirectory)
|
assertEquals(projectPath.resolve("build/classes/kotlin/test").toFile(), testSourceSet.classesOutputDirectory)
|
||||||
assertEquals(project.projectDir.resolve("build/resources/main"), mainSourceSet.resourcesOutputDirectory)
|
assertEquals(projectPath.resolve("build/resources/test").toFile(), testSourceSet.resourcesOutputDirectory)
|
||||||
assertTrue(mainSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("guava") })
|
assertTrue(testSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("guava") })
|
||||||
assertFalse(mainSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("testng") })
|
assertTrue(testSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("testng") })
|
||||||
|
}
|
||||||
assertEquals(2, testSourceSet.sourceDirectories.size)
|
}
|
||||||
assertTrue(testSourceSet.sourceDirectories.contains(project.projectDir.resolve("src/test/kotlin")))
|
|
||||||
assertTrue(testSourceSet.sourceDirectories.contains(project.projectDir.resolve("src/test/java")))
|
|
||||||
assertEquals(1, testSourceSet.resourcesDirectories.size)
|
|
||||||
assertTrue(testSourceSet.resourcesDirectories.contains(project.projectDir.resolve("src/test/resources")))
|
|
||||||
assertEquals(project.projectDir.resolve("build/classes/kotlin/test"), testSourceSet.classesOutputDirectory)
|
|
||||||
assertEquals(project.projectDir.resolve("build/resources/test"), testSourceSet.resourcesOutputDirectory)
|
|
||||||
assertTrue(testSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("guava") })
|
|
||||||
assertTrue(testSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("testng") })
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testKotlinJavaProject() {
|
|
||||||
val project = Project("kotlinJavaProject")
|
|
||||||
val kotlinProject = project.getModels(KotlinProject::class.java).getModel(":")!!
|
|
||||||
|
|
||||||
kotlinProject.assertBasics(
|
|
||||||
"kotlinJavaProject",
|
|
||||||
defaultBuildOptions().kotlinVersion,
|
|
||||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
|
||||||
"DEFAULT"
|
|
||||||
)
|
|
||||||
|
|
||||||
assertEquals(3, kotlinProject.sourceSets.size)
|
|
||||||
val mainSourceSet = kotlinProject.sourceSets.find { it.name == "main" }!!
|
|
||||||
val deploySourceSet = kotlinProject.sourceSets.find { it.name == "deploy" }!!
|
|
||||||
val testSourceSet = kotlinProject.sourceSets.find { it.name == "test" }!!
|
|
||||||
|
|
||||||
mainSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
|
||||||
deploySourceSet.assertBasics("deploy", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
|
||||||
testSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testMultiplatformProject() {
|
|
||||||
val project = Project("multiplatformProject")
|
|
||||||
val models = project.getModels(KotlinProject::class.java)
|
|
||||||
|
|
||||||
val libKotlinProject = models.getModel(":lib")!!
|
|
||||||
val libJsKotlinProject = models.getModel(":libJs")!!
|
|
||||||
val libJvmKotlinProject = models.getModel(":libJvm")!!
|
|
||||||
|
|
||||||
libKotlinProject.assertBasics("lib", defaultBuildOptions().kotlinVersion, KotlinProject.ProjectType.PLATFORM_COMMON, "DEFAULT")
|
|
||||||
libJsKotlinProject.assertBasics("libJs", defaultBuildOptions().kotlinVersion, KotlinProject.ProjectType.PLATFORM_JS, "DEFAULT")
|
|
||||||
libJvmKotlinProject.assertBasics("libJvm", defaultBuildOptions().kotlinVersion, KotlinProject.ProjectType.PLATFORM_JVM, "DEFAULT")
|
|
||||||
|
|
||||||
assertEquals(1, libJsKotlinProject.expectedByDependencies.size)
|
|
||||||
assertTrue(libJsKotlinProject.expectedByDependencies.contains(":lib"))
|
|
||||||
|
|
||||||
assertEquals(1, libJvmKotlinProject.expectedByDependencies.size)
|
|
||||||
assertTrue(libJvmKotlinProject.expectedByDependencies.contains(":lib"))
|
|
||||||
|
|
||||||
|
|
||||||
assertEquals(2, libJsKotlinProject.sourceSets.size)
|
|
||||||
val mainJsSourceSet = libJsKotlinProject.sourceSets.find { it.name == "main" }!!
|
|
||||||
val testJsSourceSet = libJsKotlinProject.sourceSets.find { it.name == "test" }!!
|
|
||||||
|
|
||||||
mainJsSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
|
||||||
testJsSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
|
||||||
|
|
||||||
assertEquals(1, mainJsSourceSet.sourceDirectories.size)
|
|
||||||
assertTrue(mainJsSourceSet.sourceDirectories.contains(project.projectDir.resolve("libJs/src/main/kotlin")))
|
|
||||||
assertEquals(1, mainJsSourceSet.resourcesDirectories.size)
|
|
||||||
assertTrue(mainJsSourceSet.resourcesDirectories.contains(project.projectDir.resolve("libJs/src/main/resources")))
|
|
||||||
assertEquals(project.projectDir.resolve("libJs/build/classes/kotlin/main"), mainJsSourceSet.classesOutputDirectory)
|
|
||||||
assertEquals(project.projectDir.resolve("libJs/build/resources/main"), mainJsSourceSet.resourcesOutputDirectory)
|
|
||||||
|
|
||||||
assertEquals(1, testJsSourceSet.sourceDirectories.size)
|
|
||||||
assertTrue(testJsSourceSet.sourceDirectories.contains(project.projectDir.resolve("libJs/src/test/kotlin")))
|
|
||||||
assertEquals(1, testJsSourceSet.resourcesDirectories.size)
|
|
||||||
assertTrue(testJsSourceSet.resourcesDirectories.contains(project.projectDir.resolve("libJs/src/test/resources")))
|
|
||||||
assertEquals(project.projectDir.resolve("libJs/build/classes/kotlin/test"), testJsSourceSet.classesOutputDirectory)
|
|
||||||
assertEquals(project.projectDir.resolve("libJs/build/resources/test"), testJsSourceSet.resourcesOutputDirectory)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testAndroidProject() {
|
|
||||||
val project = Project("AndroidExtensionsProject")
|
|
||||||
val kotlinProject = project.getModels(KotlinProject::class.java).getModel(":app")!!
|
|
||||||
|
|
||||||
kotlinProject.assertBasics(
|
|
||||||
"app",
|
|
||||||
defaultBuildOptions().kotlinVersion,
|
|
||||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
|
||||||
"DEFAULT"
|
|
||||||
)
|
|
||||||
|
|
||||||
assertTrue(kotlinProject.expectedByDependencies.isEmpty())
|
|
||||||
assertEquals(5, kotlinProject.sourceSets.size)
|
|
||||||
|
|
||||||
val sourceSets = kotlinProject.sourceSets.sortedBy { it.name }
|
|
||||||
|
|
||||||
fun SourceSet.verifySourceSet(
|
|
||||||
name: String, type: SourceSet.SourceSetType, friends: List<String>, sources: List<String>, resources: List<String>,
|
|
||||||
classesOutputDir: String, resourcesOutputDir: String
|
|
||||||
) {
|
|
||||||
assertEquals(name, name)
|
|
||||||
assertEquals(type, this.type)
|
|
||||||
|
|
||||||
assertEquals(friends.size, friendSourceSets.size)
|
|
||||||
assertEquals(friends, friendSourceSets)
|
|
||||||
|
|
||||||
assertEquals(sources.size, sourceDirectories.size)
|
|
||||||
assertEquals(sources.map { project.projectDir.resolve(it) }, sourceDirectories)
|
|
||||||
|
|
||||||
assertEquals(resources.size, resourcesDirectories.size)
|
|
||||||
assertEquals(resources.map { project.projectDir.resolve(it) }, resourcesDirectories)
|
|
||||||
|
|
||||||
assertEquals(project.projectDir.resolve(classesOutputDir), classesOutputDirectory)
|
|
||||||
assertEquals(project.projectDir.resolve(resourcesOutputDir), resourcesOutputDirectory)
|
|
||||||
|
|
||||||
assertNotEquals(0, compilerArguments.currentArguments.size)
|
|
||||||
assertNotEquals(0, compilerArguments.defaultArguments.size)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets[0].verifySourceSet(
|
|
||||||
"debug",
|
|
||||||
SourceSet.SourceSetType.PRODUCTION,
|
|
||||||
listOf(),
|
|
||||||
listOf(
|
|
||||||
"app/src/debug/kotlin",
|
|
||||||
"app/src/debug/java",
|
|
||||||
"app/src/main/kotlin",
|
|
||||||
"app/src/main/java"
|
|
||||||
),
|
|
||||||
listOf(
|
|
||||||
"app/src/debug/resources",
|
|
||||||
"app/src/main/resources"
|
|
||||||
),
|
|
||||||
"app/build/tmp/kotlin-classes/debug", "app/build/processedResources/debug"
|
|
||||||
)
|
|
||||||
sourceSets[1].verifySourceSet(
|
|
||||||
"debugAndroidTest",
|
|
||||||
SourceSet.SourceSetType.TEST,
|
|
||||||
listOf("debug"),
|
|
||||||
listOf(
|
|
||||||
"app/src/debugAndroidTest/kotlin",
|
|
||||||
"app/src/androidTest/kotlin",
|
|
||||||
"app/src/androidTest/java",
|
|
||||||
"app/src/androidTestDebug/kotlin",
|
|
||||||
"app/src/androidTestDebug/java"
|
|
||||||
),
|
|
||||||
listOf(
|
|
||||||
"app/src/debugAndroidTest/resources",
|
|
||||||
"app/src/androidTest/resources",
|
|
||||||
"app/src/androidTestDebug/resources"
|
|
||||||
),
|
|
||||||
"app/build/tmp/kotlin-classes/debugAndroidTest", "app/build/processedResources/debugAndroidTest"
|
|
||||||
)
|
|
||||||
sourceSets[2].verifySourceSet(
|
|
||||||
"debugUnitTest",
|
|
||||||
SourceSet.SourceSetType.TEST,
|
|
||||||
listOf("debug"),
|
|
||||||
listOf(
|
|
||||||
"app/src/debugUnitTest/kotlin",
|
|
||||||
"app/src/test/kotlin",
|
|
||||||
"app/src/test/java",
|
|
||||||
"app/src/testDebug/kotlin",
|
|
||||||
"app/src/testDebug/java"
|
|
||||||
),
|
|
||||||
listOf(
|
|
||||||
"app/src/debugUnitTest/resources",
|
|
||||||
"app/src/test/resources",
|
|
||||||
"app/src/testDebug/resources"
|
|
||||||
),
|
|
||||||
"app/build/tmp/kotlin-classes/debugUnitTest", "app/build/processedResources/debugUnitTest"
|
|
||||||
)
|
|
||||||
sourceSets[3].verifySourceSet(
|
|
||||||
"release",
|
|
||||||
SourceSet.SourceSetType.PRODUCTION,
|
|
||||||
listOf(),
|
|
||||||
listOf(
|
|
||||||
"app/src/release/kotlin",
|
|
||||||
"app/src/release/java",
|
|
||||||
"app/src/main/kotlin",
|
|
||||||
"app/src/main/java"
|
|
||||||
),
|
|
||||||
listOf(
|
|
||||||
"app/src/release/resources",
|
|
||||||
"app/src/main/resources"
|
|
||||||
),
|
|
||||||
"app/build/tmp/kotlin-classes/release", "app/build/processedResources/release"
|
|
||||||
)
|
|
||||||
sourceSets[4].verifySourceSet(
|
|
||||||
"releaseUnitTest",
|
|
||||||
SourceSet.SourceSetType.TEST,
|
|
||||||
listOf("release"),
|
|
||||||
listOf(
|
|
||||||
"app/src/releaseUnitTest/kotlin",
|
|
||||||
"app/src/test/kotlin",
|
|
||||||
"app/src/test/java",
|
|
||||||
"app/src/testRelease/kotlin",
|
|
||||||
"app/src/testRelease/java"
|
|
||||||
),
|
|
||||||
listOf(
|
|
||||||
"app/src/releaseUnitTest/resources",
|
|
||||||
"app/src/test/resources",
|
|
||||||
"app/src/testRelease/resources"
|
|
||||||
),
|
|
||||||
"app/build/tmp/kotlin-classes/releaseUnitTest", "app/build/processedResources/releaseUnitTest"
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@DisplayName("Valid model in mixed Kotlin-Java project")
|
||||||
fun testCoroutinesProjectDSL() {
|
@GradleTest
|
||||||
val project = Project("coroutinesProjectDSL")
|
fun testKotlinJavaProject(gradleVersion: GradleVersion) {
|
||||||
val kotlinProject = project.getModels(KotlinProject::class.java).getModel(":")!!
|
project("kotlinJavaProject", gradleVersion) {
|
||||||
|
getModels<KotlinProject> {
|
||||||
|
with(getModel(":")!!) {
|
||||||
|
assertBasics(
|
||||||
|
"kotlinJavaProject",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||||
|
"DEFAULT"
|
||||||
|
)
|
||||||
|
|
||||||
kotlinProject.assertBasics(
|
assertEquals(3, sourceSets.size)
|
||||||
"coroutinesProjectDSL",
|
val mainSourceSet = sourceSets.single { it.name == "main" }
|
||||||
defaultBuildOptions().kotlinVersion,
|
val deploySourceSet = sourceSets.single { it.name == "deploy" }
|
||||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
val testSourceSet = sourceSets.single { it.name == "test" }
|
||||||
"ENABLE"
|
|
||||||
)
|
mainSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
||||||
|
deploySourceSet.assertBasics("deploy", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
||||||
|
testSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Valid model in multiplatform project")
|
||||||
|
@GradleTest
|
||||||
|
fun testMultiplatformProject(gradleVersion: GradleVersion) {
|
||||||
|
project("multiplatformProject", gradleVersion) {
|
||||||
|
getModels<KotlinProject> {
|
||||||
|
val libKotlinProject = getModel(":lib")!!
|
||||||
|
val libJsKotlinProject = getModel(":libJs")!!
|
||||||
|
val libJvmKotlinProject = getModel(":libJvm")!!
|
||||||
|
|
||||||
|
libKotlinProject.assertBasics(
|
||||||
|
"lib",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_COMMON,
|
||||||
|
"DEFAULT"
|
||||||
|
)
|
||||||
|
libJsKotlinProject.assertBasics(
|
||||||
|
"libJs",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_JS,
|
||||||
|
"DEFAULT"
|
||||||
|
)
|
||||||
|
libJvmKotlinProject.assertBasics(
|
||||||
|
"libJvm",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||||
|
"DEFAULT"
|
||||||
|
)
|
||||||
|
|
||||||
|
assertEquals(1, libJsKotlinProject.expectedByDependencies.size)
|
||||||
|
assertTrue(libJsKotlinProject.expectedByDependencies.contains(":lib"))
|
||||||
|
|
||||||
|
assertEquals(1, libJvmKotlinProject.expectedByDependencies.size)
|
||||||
|
assertTrue(libJvmKotlinProject.expectedByDependencies.contains(":lib"))
|
||||||
|
|
||||||
|
|
||||||
|
assertEquals(2, libJsKotlinProject.sourceSets.size)
|
||||||
|
val mainJsSourceSet = libJsKotlinProject.sourceSets.single { it.name == "main" }
|
||||||
|
val testJsSourceSet = libJsKotlinProject.sourceSets.single { it.name == "test" }
|
||||||
|
|
||||||
|
mainJsSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
||||||
|
testJsSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
||||||
|
|
||||||
|
assertEquals(1, mainJsSourceSet.sourceDirectories.size)
|
||||||
|
assertTrue(mainJsSourceSet.sourceDirectories.contains(projectPath.resolve("libJs/src/main/kotlin").toFile()))
|
||||||
|
assertEquals(1, mainJsSourceSet.resourcesDirectories.size)
|
||||||
|
assertTrue(mainJsSourceSet.resourcesDirectories.contains(projectPath.resolve("libJs/src/main/resources").toFile()))
|
||||||
|
assertEquals(projectPath.resolve("libJs/build/classes/kotlin/main").toFile(), mainJsSourceSet.classesOutputDirectory)
|
||||||
|
assertEquals(projectPath.resolve("libJs/build/resources/main").toFile(), mainJsSourceSet.resourcesOutputDirectory)
|
||||||
|
|
||||||
|
assertEquals(1, testJsSourceSet.sourceDirectories.size)
|
||||||
|
assertTrue(testJsSourceSet.sourceDirectories.contains(projectPath.resolve("libJs/src/test/kotlin").toFile()))
|
||||||
|
assertEquals(1, testJsSourceSet.resourcesDirectories.size)
|
||||||
|
assertTrue(testJsSourceSet.resourcesDirectories.contains(projectPath.resolve("libJs/src/test/resources").toFile()))
|
||||||
|
assertEquals(projectPath.resolve("libJs/build/classes/kotlin/test").toFile(), testJsSourceSet.classesOutputDirectory)
|
||||||
|
assertEquals(projectPath.resolve("libJs/build/resources/test").toFile(), testJsSourceSet.resourcesOutputDirectory)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Kotlin-android project model is valid")
|
||||||
|
@GradleTest
|
||||||
|
fun testAndroidProject(gradleVersion: GradleVersion) {
|
||||||
|
project(
|
||||||
|
"AndroidExtensionsProject",
|
||||||
|
gradleVersion,
|
||||||
|
buildOptions = defaultBuildOptions.copy(warningMode = WarningMode.Summary)
|
||||||
|
) {
|
||||||
|
getModels<KotlinProject> {
|
||||||
|
with(getModel(":app")!!) {
|
||||||
|
assertBasics(
|
||||||
|
"app",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||||
|
"DEFAULT"
|
||||||
|
)
|
||||||
|
|
||||||
|
assertTrue(expectedByDependencies.isEmpty())
|
||||||
|
assertEquals(5, sourceSets.size)
|
||||||
|
|
||||||
|
val sourceSets = sourceSets.sortedBy { it.name }
|
||||||
|
|
||||||
|
sourceSets[0].verifySourceSet(
|
||||||
|
this@project,
|
||||||
|
"debug",
|
||||||
|
SourceSet.SourceSetType.PRODUCTION,
|
||||||
|
listOf(),
|
||||||
|
listOf(
|
||||||
|
"app/src/debug/kotlin",
|
||||||
|
"app/src/debug/java",
|
||||||
|
"app/src/main/kotlin",
|
||||||
|
"app/src/main/java"
|
||||||
|
),
|
||||||
|
listOf(
|
||||||
|
"app/src/debug/resources",
|
||||||
|
"app/src/main/resources"
|
||||||
|
),
|
||||||
|
"app/build/tmp/kotlin-classes/debug", "app/build/processedResources/debug"
|
||||||
|
)
|
||||||
|
sourceSets[1].verifySourceSet(
|
||||||
|
this@project,
|
||||||
|
"debugAndroidTest",
|
||||||
|
SourceSet.SourceSetType.TEST,
|
||||||
|
listOf("debug"),
|
||||||
|
listOf(
|
||||||
|
"app/src/debugAndroidTest/kotlin",
|
||||||
|
"app/src/androidTest/kotlin",
|
||||||
|
"app/src/androidTest/java",
|
||||||
|
"app/src/androidTestDebug/kotlin",
|
||||||
|
"app/src/androidTestDebug/java"
|
||||||
|
),
|
||||||
|
listOf(
|
||||||
|
"app/src/debugAndroidTest/resources",
|
||||||
|
"app/src/androidTest/resources",
|
||||||
|
"app/src/androidTestDebug/resources"
|
||||||
|
),
|
||||||
|
"app/build/tmp/kotlin-classes/debugAndroidTest", "app/build/processedResources/debugAndroidTest"
|
||||||
|
)
|
||||||
|
sourceSets[2].verifySourceSet(
|
||||||
|
this@project,
|
||||||
|
"debugUnitTest",
|
||||||
|
SourceSet.SourceSetType.TEST,
|
||||||
|
listOf("debug"),
|
||||||
|
listOf(
|
||||||
|
"app/src/debugUnitTest/kotlin",
|
||||||
|
"app/src/test/kotlin",
|
||||||
|
"app/src/test/java",
|
||||||
|
"app/src/testDebug/kotlin",
|
||||||
|
"app/src/testDebug/java"
|
||||||
|
),
|
||||||
|
listOf(
|
||||||
|
"app/src/debugUnitTest/resources",
|
||||||
|
"app/src/test/resources",
|
||||||
|
"app/src/testDebug/resources"
|
||||||
|
),
|
||||||
|
"app/build/tmp/kotlin-classes/debugUnitTest", "app/build/processedResources/debugUnitTest"
|
||||||
|
)
|
||||||
|
sourceSets[3].verifySourceSet(
|
||||||
|
this@project,
|
||||||
|
"release",
|
||||||
|
SourceSet.SourceSetType.PRODUCTION,
|
||||||
|
listOf(),
|
||||||
|
listOf(
|
||||||
|
"app/src/release/kotlin",
|
||||||
|
"app/src/release/java",
|
||||||
|
"app/src/main/kotlin",
|
||||||
|
"app/src/main/java"
|
||||||
|
),
|
||||||
|
listOf(
|
||||||
|
"app/src/release/resources",
|
||||||
|
"app/src/main/resources"
|
||||||
|
),
|
||||||
|
"app/build/tmp/kotlin-classes/release", "app/build/processedResources/release"
|
||||||
|
)
|
||||||
|
sourceSets[4].verifySourceSet(
|
||||||
|
this@project,
|
||||||
|
"releaseUnitTest",
|
||||||
|
SourceSet.SourceSetType.TEST,
|
||||||
|
listOf("release"),
|
||||||
|
listOf(
|
||||||
|
"app/src/releaseUnitTest/kotlin",
|
||||||
|
"app/src/test/kotlin",
|
||||||
|
"app/src/test/java",
|
||||||
|
"app/src/testRelease/kotlin",
|
||||||
|
"app/src/testRelease/java"
|
||||||
|
),
|
||||||
|
listOf(
|
||||||
|
"app/src/releaseUnitTest/resources",
|
||||||
|
"app/src/test/resources",
|
||||||
|
"app/src/testRelease/resources"
|
||||||
|
),
|
||||||
|
"app/build/tmp/kotlin-classes/releaseUnitTest", "app/build/processedResources/releaseUnitTest"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun SourceSet.verifySourceSet(
|
||||||
|
testProject: TestProject,
|
||||||
|
name: String,
|
||||||
|
type: SourceSet.SourceSetType,
|
||||||
|
friends: List<String>,
|
||||||
|
sources: List<String>,
|
||||||
|
resources: List<String>,
|
||||||
|
classesOutputDir: String,
|
||||||
|
resourcesOutputDir: String
|
||||||
|
) {
|
||||||
|
assertEquals(name, name)
|
||||||
|
assertEquals(type, this.type)
|
||||||
|
|
||||||
|
assertEquals(friends.size, friendSourceSets.size)
|
||||||
|
assertEquals(friends, friendSourceSets)
|
||||||
|
|
||||||
|
assertEquals(sources.size, sourceDirectories.size)
|
||||||
|
assertEquals(sources.map { testProject.projectPath.resolve(it).toFile() }, sourceDirectories)
|
||||||
|
|
||||||
|
assertEquals(resources.size, resourcesDirectories.size)
|
||||||
|
assertEquals(resources.map { testProject.projectPath.resolve(it).toFile() }, resourcesDirectories)
|
||||||
|
|
||||||
|
assertEquals(testProject.projectPath.resolve(classesOutputDir).toFile(), classesOutputDirectory)
|
||||||
|
assertEquals(testProject.projectPath.resolve(resourcesOutputDir).toFile(), resourcesOutputDirectory)
|
||||||
|
|
||||||
|
assertNotEquals(0, compilerArguments.currentArguments.size)
|
||||||
|
assertNotEquals(0, compilerArguments.defaultArguments.size)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@DisplayName("Project with coroutines dsl enabled has valid model")
|
||||||
|
@GradleTest
|
||||||
|
fun testCoroutinesProjectDSL(gradleVersion: GradleVersion) {
|
||||||
|
project("coroutinesProjectDSL", gradleVersion) {
|
||||||
|
getModels<KotlinProject> {
|
||||||
|
getModel(":")!!.assertBasics(
|
||||||
|
"coroutinesProjectDSL",
|
||||||
|
defaultBuildOptions.kotlinVersion,
|
||||||
|
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||||
|
"ENABLE"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
Reference in New Issue
Block a user