Migrate KotlinJsLibraryGradlePluginIT tests to new dsl

^KT-45745 In Progress
This commit is contained in:
Yahor Berdnikau
2022-02-22 18:59:19 +01:00
parent 637d45c539
commit d0ee0d8c38
4 changed files with 50 additions and 63 deletions
@@ -5,86 +5,73 @@
package org.jetbrains.kotlin.gradle package org.jetbrains.kotlin.gradle
import org.gradle.api.logging.LogLevel import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.Test import org.junit.jupiter.api.DisplayName
import java.util.zip.ZipFile import java.util.zip.ZipFile
import kotlin.test.assertNotNull import kotlin.test.assertNotNull
class KotlinJsIrLibraryGradlePluginIT : BaseGradleIT() { // TODO: This suite is failing with deprecation error on Gradle <7.0 versions
// TODO: This suite is failing with deprecation error on Gradle <7.0 versions // Should be fixed via planned fixes in Kotlin/JS plugin: https://youtrack.jetbrains.com/issue/KFC-252
// Should be fixed via planned fixes in Kotlin/JS plugin: https://youtrack.jetbrains.com/issue/KFC-252 @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0)
override val defaultGradleVersion: GradleVersionRequired @DisplayName("Kotlin/JS IR library")
get() = GradleVersionRequired.AtLeast("7.0") @JsGradlePluginTests
class KotlinJsIrLibraryGradlePluginIT : KGPBaseTest() {
override fun defaultBuildOptions(): BuildOptions = override val defaultBuildOptions = super.defaultBuildOptions.copy(
super.defaultBuildOptions().copy( jsOptions = BuildOptions.JsOptions(
jsIrBackend = true, useIrBackend = true,
jsCompilerType = KotlinJsCompilerType.IR jsCompilerType = KotlinJsCompilerType.IR
) )
)
@Test @DisplayName("simple binary library")
fun testSimpleJsBinaryLibrary() { @GradleTest
val project = Project("simple-js-library") fun testSimpleJsBinaryLibrary(gradleVersion: GradleVersion) {
project("simple-js-library", gradleVersion) {
project.setupWorkingDir() build("build") {
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) assertFileInProjectExists("build/productionLibrary/js-library.js")
project.build("build") { assertFileInProjectExists("build/productionLibrary/package.json")
assertSuccessful() assertFileInProjectExists("build/productionLibrary/main.js")
}
assertFileExists("build/productionLibrary/js-library.js")
assertFileExists("build/productionLibrary/package.json")
assertFileExists("build/productionLibrary/main.js")
} }
} }
@Test @DisplayName("binary library and executable")
fun testJsBinaryLibraryAndExecutable() { @GradleTest
val project = Project("js-library-with-executable") fun testJsBinaryLibraryAndExecutable(gradleVersion: GradleVersion) {
project("js-library-with-executable", gradleVersion) {
project.setupWorkingDir() build("build") {
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) assertFileInProjectExists("build/productionLibrary/js-library.js")
project.build("build") { assertFileInProjectExists("build/productionLibrary/package.json")
assertSuccessful() assertFileInProjectExists("build/productionLibrary/main.js")
}
assertFileExists("build/productionLibrary/js-library.js")
assertFileExists("build/productionLibrary/package.json")
assertFileExists("build/productionLibrary/main.js")
} }
} }
@Test @DisplayName("binary library and executable both for browser and nodejs")
fun testJsBinaryLibraryAndExecutableForBrowserAndNodejs() { @GradleTest
val project = Project("js-library-with-executable-browser-nodejs") fun testJsBinaryLibraryAndExecutableForBrowserAndNodejs(gradleVersion: GradleVersion) {
project("js-library-with-executable-browser-nodejs", gradleVersion) {
build("build") {
assertFileInProjectExists("build/productionLibrary/js-library.js")
assertFileInProjectExists("build/productionLibrary/package.json")
assertFileInProjectExists("build/productionLibrary/main.js")
project.setupWorkingDir() assertFileInProjectExists("build/distributions/js-library.js")
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) }
project.build("build") {
assertSuccessful()
assertFileExists("build/productionLibrary/js-library.js")
assertFileExists("build/productionLibrary/package.json")
assertFileExists("build/productionLibrary/main.js")
assertFileExists("build/distributions/js-library.js")
} }
} }
@Test @DisplayName("publish sources jar task should also include dukat outputs")
fun testPublishSourcesJarTaskShouldAlsoIncludeDukatTaskOutputs() { @GradleTest
with( fun testPublishSourcesJarTaskShouldAlsoIncludeDukatTaskOutputs(gradleVersion: GradleVersion) {
Project( project("js-library-ir", gradleVersion) {
"js-library-ir",
minLogLevel = LogLevel.INFO
)
) {
setupWorkingDir()
build("sourcesJar") { build("sourcesJar") {
assertSuccessful()
val sourcesJarFilePath = "build/libs/js-library-ir-kotlin-sources.jar" val sourcesJarFilePath = "build/libs/js-library-ir-kotlin-sources.jar"
assertFileExists(sourcesJarFilePath) assertFileInProjectExists(sourcesJarFilePath)
ZipFile(projectDir.resolve(sourcesJarFilePath)).use { ZipFile(projectPath.resolve(sourcesJarFilePath).toFile()).use {
assertNotNull(it.getEntry("jsMain/index.module_decamelize.kt")) assertNotNull(it.getEntry("jsMain/index.module_decamelize.kt"))
} }
} }
@@ -1,5 +1,5 @@
plugins { plugins {
kotlin("js") version "<pluginMarkerVersion>" kotlin("js")
} }
group = "com.example" group = "com.example"
@@ -1,5 +1,5 @@
plugins { plugins {
kotlin("js") version "<pluginMarkerVersion>" kotlin("js")
} }
group = "com.example" group = "com.example"
@@ -1,5 +1,5 @@
plugins { plugins {
kotlin("js") version "<pluginMarkerVersion>" kotlin("js")
} }
group = "com.example" group = "com.example"