From 256764f0126572156e1b086274c84e462a72854d Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 21 Dec 2022 11:34:05 +0000 Subject: [PATCH] [Gradle, JS] Add test with packaged moduleName [Gradle, JS] WA for moduleName starting with @ ^KT-53288 fixed --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 11 +++++++++++ .../build.gradle.kts | 17 +++++++++++++++++ .../src/commonMain/kotlin/foo.kt | 1 + .../src/jsMain/kotlin/foo.kt | 1 + .../gradle/targets/js/ir/KotlinJsIrLink.kt | 7 +++++++ 5 files changed, 37 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/commonMain/kotlin/foo.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/jsMain/kotlin/foo.kt 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 5987b1fd371..fdb24077d89 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 @@ -388,6 +388,17 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) { } } } + + @DisplayName("Kotlin/JS project with module name starting with package") + @GradleTest + fun testKotlinJsPackageModuleName(gradleVersion: GradleVersion) { + project("kotlin-js-package-module-name", gradleVersion) { + build("assemble") { + assertFileInProjectExists("build/distributions/kotlin-js-package-module-name.js") + assertFileInProjectExists("build/js/packages/@foo/bar/kotlin/@foo/bar.js") + } + } + } } @JsGradlePluginTests diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/build.gradle.kts new file mode 100644 index 00000000000..2b25108e63f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenCentral() + mavenLocal() +} + +kotlin { + js { + moduleName = "@foo/bar" + browser { + } + binaries.executable() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/commonMain/kotlin/foo.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/commonMain/kotlin/foo.kt new file mode 100644 index 00000000000..f5ed19d2be4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/commonMain/kotlin/foo.kt @@ -0,0 +1 @@ +expect fun foo(): Int \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/jsMain/kotlin/foo.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/jsMain/kotlin/foo.kt new file mode 100644 index 00000000000..37409afcf88 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-package-module-name/src/jsMain/kotlin/foo.kt @@ -0,0 +1 @@ +actual fun foo(): Int = 1 \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index 3985fa7e674..99961715833 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -104,6 +104,13 @@ abstract class KotlinJsIrLink @Inject constructor( KotlinBuildStatsService.applyIfInitialised { it.report(BooleanMetrics.JS_IR_INCREMENTAL, incrementalJsIr) val newArgs = K2JSCompilerArguments() + // moduleName can start with @ for group of NPM packages + // but args parsing @ as start of argfile + // so WA we provide moduleName as one parameter + if (args.moduleName != null) { + args.freeArgs += "-ir-output-name=${args.moduleName}" + args.moduleName = null + } parseCommandLineArguments(ArgumentUtils.convertArgumentsToStringList(args), newArgs) it.report( StringMetrics.JS_OUTPUT_GRANULARITY,