[Gradle] Introduce ResourcesIT test suite

This suite will check how resources are handled in the plugin.

^KT-60459 In Progress
This commit is contained in:
Yahor Berdnikau
2023-07-24 11:15:53 +02:00
committed by Space Team
parent 3518aa5898
commit 11cefc52a7
2 changed files with 68 additions and 50 deletions
@@ -0,0 +1,68 @@
/*
* Copyright 2010-2023 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.
*/
package org.jetbrains.kotlin.gradle
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
import java.util.zip.ZipFile
import kotlin.io.path.*
@DisplayName("Handles resources correctly")
class ResourcesIT : KGPBaseTest() {
@JvmGradlePluginTests
@DisplayName("KT-36904: Adding resources to Kotlin source set should work")
@GradleTest
internal fun addResourcesKotlinSourceSet(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) {
val mainResDir = projectPath.resolve("src/main/resources").apply { createDirectories() }
val mainResFile = mainResDir.resolve("main.txt").apply { writeText("Yay, Kotlin!") }
val additionalResDir = projectPath.resolve("additionalRes").apply { createDirectory() }
val additionalResFile = additionalResDir.resolve("test.txt").apply { writeText("Kotlin!") }
buildGradle.appendText(
//language=groovy
"""
|
|kotlin {
| sourceSets.main.resources.srcDir("additionalRes")
|}
""".trimMargin()
)
build("jar") {
assertFileInProjectExists("build/libs/simpleProject.jar")
ZipFile(projectPath.resolve("build/libs/simpleProject.jar").toFile()).use { jar ->
assert(jar.entries().asSequence().count { it.name == mainResFile.name } == 1) {
"The jar should contain one entry `${mainResFile.name}` with no duplicates\n" +
jar.entries().asSequence().map { it.name }.joinToString()
}
assert(jar.entries().asSequence().count { it.name == additionalResFile.name } == 1) {
"The jar should contain one entry `${additionalResFile.name}` with no duplicates\n" +
jar.entries().asSequence().map { it.name }.joinToString()
}
}
}
}
}
@JvmGradlePluginTests
@DisplayName("KT-53402: ignore non project source changes")
@GradleTest
fun ignoreNonProjectSourceChanges(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) {
val resources = projectPath.resolve("src/main/resources").createDirectories()
val resourceKts = resources.resolve("resource.kts").createFile()
resourceKts.appendText("lkdfjgkjs invalid something")
build("assemble")
resourceKts.appendText("kajhgfkh invalid something")
build("assemble")
}
}
}
@@ -256,19 +256,6 @@ class SimpleKotlinGradleIT : KGPBaseTest() {
}
}
@DisplayName("KT-53402: ignore non project source changes")
@GradleTest
fun ignoreNonProjectSourceChanges(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) {
val resources = projectPath.resolve("src/main/resources").createDirectories()
val resourceKts = resources.resolve("resource.kts").createFile()
resourceKts.appendText("lkdfjgkjs invalid something")
build("assemble")
resourceKts.appendText("kajhgfkh invalid something")
build("assemble")
}
}
@DisplayName("Changing compile task destination directory does not break test compilation")
@GradleTest
internal fun customDestinationDir(gradleVersion: GradleVersion) {
@@ -318,41 +305,4 @@ class SimpleKotlinGradleIT : KGPBaseTest() {
}
}
}
@DisplayName("KT-36904: Adding resources to Kotlin source set should work")
@GradleTest
internal fun addResourcesKotlinSourceSet(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) {
val mainResDir = projectPath.resolve("src/main/resources").apply { createDirectories() }
val mainResFile = mainResDir.resolve("main.txt").apply { writeText("Yay, Kotlin!") }
val additionalResDir = projectPath.resolve("additionalRes").apply { createDirectory() }
val additionalResFile = additionalResDir.resolve("test.txt").apply { writeText("Kotlin!") }
buildGradle.appendText(
//language=groovy
"""
|
|kotlin {
| sourceSets.main.resources.srcDir("additionalRes")
|}
""".trimMargin()
)
build("jar") {
assertFileInProjectExists("build/libs/simpleProject.jar")
ZipFile(projectPath.resolve("build/libs/simpleProject.jar").toFile()).use { jar ->
assert(jar.entries().asSequence().count { it.name == mainResFile.name } == 1) {
"The jar should contain one entry `${mainResFile.name}` with no duplicates\n" +
jar.entries().asSequence().map { it.name }.joinToString()
}
assert(jar.entries().asSequence().count { it.name == additionalResFile.name } == 1) {
"The jar should contain one entry `${additionalResFile.name}` with no duplicates\n" +
jar.entries().asSequence().map { it.name }.joinToString()
}
}
}
}
}
}