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
|
||||
|
||||
import org.jetbrains.kotlin.gradle.BaseGradleIT
|
||||
import org.jetbrains.kotlin.gradle.util.AGPVersion
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
||||
import org.junit.Test
|
||||
import org.gradle.api.logging.configuration.WarningMode
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.testbase.*
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertNotEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class KotlinProjectIT : BaseGradleIT() {
|
||||
override fun defaultBuildOptions(): BuildOptions {
|
||||
return super.defaultBuildOptions().copy(
|
||||
androidGradlePluginVersion = AGPVersion.v3_4_1,
|
||||
androidHome = KtTestUtil.findAndroidSdk()
|
||||
)
|
||||
}
|
||||
@DisplayName("Kotlin plugin model")
|
||||
@OtherGradlePluginTests
|
||||
class KotlinProjectIT : KGPBaseTest() {
|
||||
override val defaultBuildOptions = super.defaultBuildOptions.copy(
|
||||
androidVersion = TestVersions.AGP.AGP_34,
|
||||
)
|
||||
|
||||
@Test
|
||||
fun testKotlinProject() {
|
||||
val project = Project("kotlinProject")
|
||||
val kotlinProject = project.getModels(KotlinProject::class.java).getModel(":")!!
|
||||
@DisplayName("Valid model is available in Kotlin only project")
|
||||
@GradleTest
|
||||
fun testKotlinProject(gradleVersion: GradleVersion) {
|
||||
project("kotlinProject", gradleVersion) {
|
||||
getModels<KotlinProject> {
|
||||
with(getModel(":")!!) {
|
||||
assertBasics(
|
||||
"kotlinProject",
|
||||
defaultBuildOptions.kotlinVersion,
|
||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||
"DEFAULT"
|
||||
)
|
||||
assertTrue(expectedByDependencies.isEmpty())
|
||||
|
||||
kotlinProject.assertBasics(
|
||||
"kotlinProject",
|
||||
defaultBuildOptions().kotlinVersion,
|
||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||
"DEFAULT"
|
||||
)
|
||||
assertTrue(kotlinProject.expectedByDependencies.isEmpty())
|
||||
assertEquals(2, sourceSets.size)
|
||||
val mainSourceSet = sourceSets.single { it.name == "main" }
|
||||
val testSourceSet = sourceSets.single { it.name == "test" }
|
||||
|
||||
assertEquals(2, kotlinProject.sourceSets.size)
|
||||
val mainSourceSet = kotlinProject.sourceSets.find { it.name == "main" }!!
|
||||
val testSourceSet = kotlinProject.sourceSets.find { it.name == "test" }!!
|
||||
mainSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
||||
testSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
||||
|
||||
mainSourceSet.assertBasics("main", SourceSet.SourceSetType.PRODUCTION, emptySet())
|
||||
testSourceSet.assertBasics("test", SourceSet.SourceSetType.TEST, listOf("main"))
|
||||
assertEquals(2, mainSourceSet.sourceDirectories.size)
|
||||
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)
|
||||
assertTrue(mainSourceSet.sourceDirectories.contains(project.projectDir.resolve("src/main/kotlin")))
|
||||
assertTrue(mainSourceSet.sourceDirectories.contains(project.projectDir.resolve("src/main/java")))
|
||||
assertEquals(1, mainSourceSet.resourcesDirectories.size)
|
||||
assertTrue(mainSourceSet.resourcesDirectories.contains(project.projectDir.resolve("src/main/resources")))
|
||||
assertEquals(project.projectDir.resolve("build/classes/kotlin/main"), mainSourceSet.classesOutputDirectory)
|
||||
assertEquals(project.projectDir.resolve("build/resources/main"), mainSourceSet.resourcesOutputDirectory)
|
||||
assertTrue(mainSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("guava") })
|
||||
assertFalse(mainSourceSet.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)
|
||||
assertEquals(2, testSourceSet.sourceDirectories.size)
|
||||
assertTrue(testSourceSet.sourceDirectories.contains(projectPath.resolve("src/test/kotlin").toFile()))
|
||||
assertTrue(testSourceSet.sourceDirectories.contains(projectPath.resolve("src/test/java").toFile()))
|
||||
assertEquals(1, testSourceSet.resourcesDirectories.size)
|
||||
assertTrue(testSourceSet.resourcesDirectories.contains(projectPath.resolve("src/test/resources").toFile()))
|
||||
assertEquals(projectPath.resolve("build/classes/kotlin/test").toFile(), testSourceSet.classesOutputDirectory)
|
||||
assertEquals(projectPath.resolve("build/resources/test").toFile(), testSourceSet.resourcesOutputDirectory)
|
||||
assertTrue(testSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("guava") })
|
||||
assertTrue(testSourceSet.compilerArguments.compileClasspath.any { it.absolutePath.contains("testng") })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
fun testCoroutinesProjectDSL() {
|
||||
val project = Project("coroutinesProjectDSL")
|
||||
val kotlinProject = project.getModels(KotlinProject::class.java).getModel(":")!!
|
||||
@DisplayName("Valid model in mixed Kotlin-Java project")
|
||||
@GradleTest
|
||||
fun testKotlinJavaProject(gradleVersion: GradleVersion) {
|
||||
project("kotlinJavaProject", gradleVersion) {
|
||||
getModels<KotlinProject> {
|
||||
with(getModel(":")!!) {
|
||||
assertBasics(
|
||||
"kotlinJavaProject",
|
||||
defaultBuildOptions.kotlinVersion,
|
||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||
"DEFAULT"
|
||||
)
|
||||
|
||||
kotlinProject.assertBasics(
|
||||
"coroutinesProjectDSL",
|
||||
defaultBuildOptions().kotlinVersion,
|
||||
KotlinProject.ProjectType.PLATFORM_JVM,
|
||||
"ENABLE"
|
||||
)
|
||||
assertEquals(3, sourceSets.size)
|
||||
val mainSourceSet = sourceSets.single { it.name == "main" }
|
||||
val deploySourceSet = sourceSets.single { it.name == "deploy" }
|
||||
val testSourceSet = sourceSets.single { 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"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@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 {
|
||||
|
||||
Reference in New Issue
Block a user