From 94a94a557d40c06ac6cfb154aaea8c56bbb190ce Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Mon, 31 May 2021 07:57:29 +0300 Subject: [PATCH] [Gradle, JS] Add test for KT-47045 --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) 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 b5b8c02cffe..3871fa3b7e1 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 @@ -21,6 +21,7 @@ import java.io.File import java.io.FileFilter import java.util.zip.ZipFile import kotlin.test.assertEquals +import kotlin.test.assertFalse import kotlin.test.assertTrue class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) { @@ -742,6 +743,27 @@ abstract class AbstractKotlin2JsGradlePluginIT(val irBackend: Boolean) : BaseGra } } + @Test + fun testNoUnintendedDevDependencies() = with(Project("kotlin-js-browser-project")) { + setupWorkingDir() + gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) + gradleSettingsScript().modify(::transformBuildScriptWithPluginsDsl) + + build("browserProductionWebpack") { + assertSuccessful() + + val appPackageJson = getSubprojectPackageJson(projectName = "kotlin-js-browser", subProject = "app") + val libPackageJson = getSubprojectPackageJson(projectName = "kotlin-js-browser", subProject = "lib") + + assertTrue("${appPackageJson.name} should contain css-loader") { + "css-loader" in appPackageJson.devDependencies + } + assertFalse("${libPackageJson.name} shouldn't contain css-loader") { + "css-loader" in libPackageJson.devDependencies + } + } + } + @Test fun testUpdatingPackageJsonOnDependenciesClash() = with(Project("kotlin-js-dependencies-clash")) { setupWorkingDir() @@ -760,15 +782,8 @@ abstract class AbstractKotlin2JsGradlePluginIT(val irBackend: Boolean) : BaseGra build("packageJson", "rootPackageJson", "kotlinNpmInstall") { assertSuccessful() - fun getPackageJson(subProject: String) = - fileInWorkingDir("build/js/packages/kotlin-js-dependencies-clash-$subProject") - .resolve(NpmProject.PACKAGE_JSON) - .let { - Gson().fromJson(it.readText(), PackageJson::class.java) - } - - val basePackageJson = getPackageJson("base") - val libPackageJson = getPackageJson("lib") + val basePackageJson = getSubprojectPackageJson("base") + val libPackageJson = getSubprojectPackageJson("lib") val dependency = "kotlinx-coroutines-core" assertFileVersion(basePackageJson, dependency) @@ -846,4 +861,11 @@ abstract class AbstractKotlin2JsGradlePluginIT(val irBackend: Boolean) : BaseGra } } } + + private fun CompiledProject.getSubprojectPackageJson(subProject: String, projectName: String? = null) = + fileInWorkingDir("build/js/packages/${projectName ?: project.projectName}-$subProject") + .resolve(NpmProject.PACKAGE_JSON) + .let { + Gson().fromJson(it.readText(), PackageJson::class.java) + } }