From 4149b91c0d0e3b2c50adec2d5b88a9af15db38a6 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Tue, 30 Nov 2021 06:45:04 +0300 Subject: [PATCH] [Gradle, JS] Move KJS configuration cache tests into separate test suite This way we make it utilize test execution workers more effectively #KT-45745 In Progress --- .../kotlin/gradle/JsConfigurationCacheIT.kt | 96 +++++++++++++++++++ .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 63 ------------ .../build.gradle.kts | 2 +- 3 files changed, 97 insertions(+), 64 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JsConfigurationCacheIT.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JsConfigurationCacheIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JsConfigurationCacheIT.kt new file mode 100644 index 00000000000..be75df63314 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JsConfigurationCacheIT.kt @@ -0,0 +1,96 @@ +/* + * Copyright 2010-2021 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.api.logging.configuration.WarningMode +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType +import org.jetbrains.kotlin.gradle.testbase.* +import org.junit.jupiter.api.DisplayName + +abstract class AbstractJsConfigurationCacheIT(protected val irBackend: Boolean) : KGPBaseTest() { + private val defaultJsOptions = BuildOptions.JsOptions( + useIrBackend = irBackend, + jsCompilerType = if (irBackend) KotlinJsCompilerType.IR else KotlinJsCompilerType.LEGACY, + ) + + final override val defaultBuildOptions = + super.defaultBuildOptions.copy( + jsOptions = defaultJsOptions, + warningMode = WarningMode.Summary, + configurationCache = true, + configurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL + ) + + @DisplayName("configuration cache is working for kotlin2js plugin") + @GradleTest + fun testKotlin2JsCompilation(gradleVersion: GradleVersion) { + project("instantExecutionToJs", gradleVersion) { + assertSimpleConfigurationCacheScenarioWorks( + "assemble", + buildOptions = defaultBuildOptions, + executedTaskNames = listOf(":compileKotlinJs") + ) + } + } + + @DisplayName("configuration cache is working for kotlin/js browser project") + @GradleTest + fun testBrowserDistribution(gradleVersion: GradleVersion) { + project("kotlin-js-browser-project", gradleVersion) { + buildGradleKts.modify(::transformBuildScriptWithPluginsDsl) + + assertSimpleConfigurationCacheScenarioWorks( + ":app:build", + buildOptions = defaultBuildOptions, + executedTaskNames = listOf( + ":app:packageJson", + ":app:publicPackageJson", + ":app:compileKotlinJs", + if (irBackend) ":app:compileProductionExecutableKotlinJs" else ":app:processDceKotlinJs", + ":app:browserProductionWebpack", + ) + ) + } + } + + @DisplayName("configuration cache is working for kotlin/js node project") + @GradleTest + fun testNodeJs(gradleVersion: GradleVersion) { + project("kotlin-js-nodejs-project", gradleVersion) { + assertSimpleConfigurationCacheScenarioWorks( + ":build", + buildOptions = defaultBuildOptions, + executedTaskNames = listOf( + ":packageJson", + ":publicPackageJson", + ":rootPackageJson", + ":kotlinNpmInstall", + ":compileKotlinJs", + ":nodeTest", + ) + if (irBackend) listOf(":compileProductionExecutableKotlinJs") else emptyList() + ) + } + } + + @DisplayName("KT-48241: configuration cache works with test dependencies") + @GradleTest + fun testTestDependencies(gradleVersion: GradleVersion) { + project("kotlin-js-project-with-test-dependencies", gradleVersion, forceOutput = true) { + assertSimpleConfigurationCacheScenarioWorks( + "assemble", + buildOptions = defaultBuildOptions, + executedTaskNames = listOf(":kotlinNpmInstall") + ) + } + } +} + +@JsGradlePluginTests +class JsConfigurationCacheIT : AbstractJsConfigurationCacheIT(irBackend = false) + +@JsGradlePluginTests +class JsIrConfigurationCacheIT : AbstractJsConfigurationCacheIT(irBackend = true) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index d198e292a7b..924b649b55c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -1015,57 +1015,6 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean) } } - @DisplayName("configuration cache is working for kotlin2js plugin") - @GradleTest - fun testConfigurationCache(gradleVersion: GradleVersion) { - project("instantExecutionToJs", gradleVersion) { - assertSimpleConfigurationCacheScenarioWorks( - "assemble", - buildOptions = defaultBuildOptions.withConfigurationCache, - executedTaskNames = listOf(":compileKotlinJs") - ) - } - } - - @DisplayName("configuration cache is working for kotlin/js browser project") - @GradleTest - fun testConfigurationCacheBrowser(gradleVersion: GradleVersion) { - project("kotlin-js-browser-project", gradleVersion) { - buildGradleKts.modify(::transformBuildScriptWithPluginsDsl) - - assertSimpleConfigurationCacheScenarioWorks( - ":app:build", - buildOptions = defaultBuildOptions.withConfigurationCache, - executedTaskNames = listOf( - ":app:packageJson", - ":app:publicPackageJson", - ":app:compileKotlinJs", - if (irBackend) ":app:compileProductionExecutableKotlinJs" else ":app:processDceKotlinJs", - ":app:browserProductionWebpack", - ) - ) - } - } - - @DisplayName("configuration cache is working for kotlin/js node project") - @GradleTest - fun testConfigurationCacheNode(gradleVersion: GradleVersion) { - project("kotlin-js-nodejs-project", gradleVersion) { - assertSimpleConfigurationCacheScenarioWorks( - ":build", - buildOptions = defaultBuildOptions.withConfigurationCache, - executedTaskNames = listOf( - ":packageJson", - ":publicPackageJson", - ":rootPackageJson", - ":kotlinNpmInstall", - ":compileKotlinJs", - ":nodeTest", - ) + if (irBackend) listOf(":compileProductionExecutableKotlinJs") else emptyList() - ) - } - } - private fun TestProject.getSubprojectPackageJson(subProject: String, projectName: String? = null) = projectPath.resolve("build/js/packages/${projectName ?: projectName}-$subProject") .resolve(NpmProject.PACKAGE_JSON) @@ -1135,16 +1084,4 @@ class GeneralKotlin2JsGradlePluginIT : KGPBaseTest() { } } } - - @DisplayName("KT-48241: configuration cache works with test dependencies") - @GradleTest - fun testConfigurationCacheJsWithTestDependencies(gradleVersion: GradleVersion) { - project("kotlin-js-project-with-test-dependencies", gradleVersion) { - assertSimpleConfigurationCacheScenarioWorks( - "assemble", - buildOptions = defaultBuildOptions.withConfigurationCache, - executedTaskNames = listOf(":kotlinNpmInstall") - ) - } - } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-project-with-test-dependencies/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-project-with-test-dependencies/build.gradle.kts index 774614c3378..aa3ff735a66 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-project-with-test-dependencies/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-project-with-test-dependencies/build.gradle.kts @@ -11,7 +11,7 @@ repositories { } kotlin { - js(IR) { + js { nodejs { } }