From 11cefc52a779c070941d8b0f1ca77a06eb685607 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 24 Jul 2023 11:15:53 +0200 Subject: [PATCH] [Gradle] Introduce ResourcesIT test suite This suite will check how resources are handled in the plugin. ^KT-60459 In Progress --- .../jetbrains/kotlin/gradle/ResourcesIT.kt | 68 +++++++++++++++++++ .../kotlin/gradle/SimpleKotlinGradleIT.kt | 50 -------------- 2 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ResourcesIT.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ResourcesIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ResourcesIT.kt new file mode 100644 index 00000000000..bfeb8da8770 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ResourcesIT.kt @@ -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") + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt index 47991e2b604..127bb21a4f2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt @@ -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() - } - } - } - } - } }