From b585d7c39212ca59227739e02e4358ef1ac6bdd7 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 1 Jun 2023 15:46:46 +0200 Subject: [PATCH] [Gradle, JS] Add test with nested composite build --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 35 ++++++++++++++++- .../js-composite-build/build.gradle.kts | 2 +- .../js-composite-build/lib/build.gradle.kts | 33 +--------------- .../lib/lib-2/build.gradle.kts | 39 +++++++++++++++++++ .../{ => lib-2}/src/main/kotlin/Singleton.kt | 0 .../js-composite-build/lib/settings.gradle | 3 +- 6 files changed, 75 insertions(+), 37 deletions(-) create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/lib-2/build.gradle.kts rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/{ => lib-2}/src/main/kotlin/Singleton.kt (100%) 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 03d7dd3bf1d..1d4ccbf5ba6 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 @@ -144,10 +144,10 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) { ?: error("Not found package $moduleName in $rootModulePath") build("build") { - val libDecamelizeVersion = moduleVersion("build/js/node_modules/lib2", "decamelize") + val libDecamelizeVersion = moduleVersion("build/js/node_modules/lib-lib-2", "decamelize") assertEquals("1.1.1", libDecamelizeVersion) - val libAsyncVersion = moduleVersion("build/js/node_modules/lib2", "async") + val libAsyncVersion = moduleVersion("build/js/node_modules/lib-lib-2", "async") assertEquals("2.6.2", libAsyncVersion) val appNodeFetchVersion = moduleVersion("build/js/node_modules/js-composite-build", "node-fetch") @@ -156,6 +156,37 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) { } } + @DisplayName("js composite build works with yarn.lock persistence") + @GradleTest + @GradleTestVersions(minVersion = G_7_6) + fun testJsCompositeBuildWithUpgradeYarnLock(gradleVersion: GradleVersion) { + project("js-composite-build", gradleVersion) { + buildGradleKts.modify(::transformBuildScriptWithPluginsDsl) + + subProject("lib").apply { + buildGradleKts.modify(::transformBuildScriptWithPluginsDsl) + } + + subProject("base").apply { + buildGradleKts.modify(::transformBuildScriptWithPluginsDsl) + } + + build("kotlinUpgradeYarnLock") { + assertTasksExecuted(":base:publicPackageJson") + assertTasksExecuted(":lib:lib-2:publicPackageJson") + assertTasksExecuted(":kotlinNpmInstall") + assertTasksExecuted(":kotlinUpgradeYarnLock") + } + + build(":nodeTest") { + assertTasksUpToDate(":base:publicPackageJson") + assertTasksUpToDate(":lib:lib-2:publicPackageJson") + assertTasksUpToDate(":kotlinNpmInstall") + assertTasksExecuted(":kotlinStoreYarnLock") + } + } + } + @GradleTest fun testJsIrIncrementalInParallel(gradleVersion: GradleVersion) { project("kotlin-js-browser-project", gradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/build.gradle.kts index 722401d43e0..3bf05bf27c9 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/build.gradle.kts @@ -40,7 +40,7 @@ rootProject.tasks dependencies { implementation(kotlin("stdlib-js")) - implementation("com.example:lib2") + implementation("com.example:lib-2") implementation(npm("node-fetch", "3.2.8")) testImplementation(kotlin("test-js")) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts index d72d76d6213..e3c993f713f 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts @@ -1,39 +1,8 @@ -group = "com.example" - plugins { - kotlin("js") version "" + kotlin("js") version "" apply false } repositories { mavenLocal() mavenCentral() -} - -kotlin.js { - nodejs() - browser() -} - -tasks.named("browserTest") { - enabled = false -} - -rootProject.tasks - .withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask::class.java) - .named("kotlinNpmInstall") - .configure { - args.addAll( - listOf( - "--network-concurrency", - "1", - "--mutex", - "network" - ) - ) - } - -dependencies { - implementation(kotlin("stdlib-js")) - implementation("com.example:base2") - implementation(npm("async", "2.6.2")) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/lib-2/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/lib-2/build.gradle.kts new file mode 100755 index 00000000000..b3cc2cc5898 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/lib-2/build.gradle.kts @@ -0,0 +1,39 @@ +plugins { + kotlin("js") +} + +group = "com.example" + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin.js { + nodejs() + browser() +} + +tasks.named("browserTest") { + enabled = false +} + +rootProject.tasks + .withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask::class.java) + .named("kotlinNpmInstall") + .configure { + args.addAll( + listOf( + "--network-concurrency", + "1", + "--mutex", + "network" + ) + ) + } + +dependencies { + implementation(kotlin("stdlib-js")) + implementation("com.example:base2") + implementation(npm("async", "2.6.2")) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/src/main/kotlin/Singleton.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/lib-2/src/main/kotlin/Singleton.kt similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/src/main/kotlin/Singleton.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/lib-2/src/main/kotlin/Singleton.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle index f5f2457644f..ba8a21cebbe 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle @@ -13,5 +13,4 @@ pluginManagement { } includeBuild("../base") - -rootProject.name = "lib2" \ No newline at end of file +include("lib-2") \ No newline at end of file