From d69266de507edc2bc9a30787540d7a2b8fdcdf52 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 30 Jan 2020 17:16:35 +0300 Subject: [PATCH] [Gradle, JS] Fix parallel tasks test --- .../kotlin/gradle/NewMultiplatformIT.kt | 68 +++++++++++++++---- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 376a8365e9b..74787135575 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -67,17 +67,35 @@ class NewMultiplatformIT : BaseGradleIT() { @Test fun testLibAndApp() = doTestLibAndApp( "sample-lib", - "sample-app" + "sample-app", + JsMode.LEGACY + ) + + @Test + fun testLibAndAppJsIr() = doTestLibAndApp( + "sample-lib", + "sample-app", + JsMode.IR ) @Test fun testLibAndAppWithGradleKotlinDsl() = doTestLibAndApp( "sample-lib-gradle-kotlin-dsl", - "sample-app-gradle-kotlin-dsl" + "sample-app-gradle-kotlin-dsl", + JsMode.LEGACY + ) + + @Test + fun testLibAndAppWithGradleKotlinDslJsIr() = doTestLibAndApp( + "sample-lib-gradle-kotlin-dsl", + "sample-app-gradle-kotlin-dsl", + JsMode.IR ) private fun doTestLibAndApp( - libProjectName: String, appProjectName: String + libProjectName: String, + appProjectName: String, + jsMode: JsMode ) { val libProject = transformProjectWithPluginsDsl(libProjectName, directoryPrefix = "new-mpp-lib-and-app") val appProject = transformProjectWithPluginsDsl(appProjectName, directoryPrefix = "new-mpp-lib-and-app") @@ -87,13 +105,17 @@ class NewMultiplatformIT : BaseGradleIT() { listOf("Jvm6", "NodeJs", "Metadata", "Wasm32", nativeHostTargetName.capitalize()).map { ":compileKotlin$it" } with(libProject) { - build("publish") { + build( + "publish", + options = defaultBuildOptions().copy(jsMode = jsMode) + ) { assertSuccessful() assertTasksExecuted(*compileTasksNames.toTypedArray(), ":jvm6Jar", ":nodeJsJar", ":metadataJar") val groupDir = projectDir.resolve("repo/com/example") val jvmJarName = "sample-lib-jvm6/1.0/sample-lib-jvm6-1.0.jar" - val jsJarName = "sample-lib-nodejs/1.0/sample-lib-nodejs-1.0.jar" + val jsExtension = if (jsMode == JsMode.LEGACY) "jar" else "klib" + val jsJarName = "sample-lib-nodejs/1.0/sample-lib-nodejs-1.0.$jsExtension" val metadataJarName = "sample-lib-metadata/1.0/sample-lib-metadata-1.0.jar" val wasmKlibName = "sample-lib-wasm32/1.0/sample-lib-wasm32-1.0.klib" val nativeKlibName = "sample-lib-$nativeHostTargetName/1.0/sample-lib-$nativeHostTargetName-1.0.klib" @@ -121,12 +143,19 @@ class NewMultiplatformIT : BaseGradleIT() { Assert.assertTrue("com/example/lib/CommonKt.class" in jvmJarEntries) Assert.assertTrue("com/example/lib/MainKt.class" in jvmJarEntries) - val jsJar = ZipFile(groupDir.resolve(jsJarName)) - val compiledJs = jsJar.getInputStream(jsJar.getEntry("sample-lib.js")).reader().readText() - Assert.assertTrue("function id(" in compiledJs) - Assert.assertTrue("function idUsage(" in compiledJs) - Assert.assertTrue("function expectedFun(" in compiledJs) - Assert.assertTrue("function main(" in compiledJs) + when (jsMode) { + JsMode.LEGACY -> { + val jsJar = ZipFile(groupDir.resolve(jsJarName)) + val compiledJs = jsJar.getInputStream(jsJar.getEntry("sample-lib.js")).reader().readText() + Assert.assertTrue("function id(" in compiledJs) + Assert.assertTrue("function idUsage(" in compiledJs) + Assert.assertTrue("function expectedFun(" in compiledJs) + Assert.assertTrue("function main(" in compiledJs) + } + JsMode.IR -> { + groupDir.resolve(jsJarName).exists() + } + } val metadataJarEntries = ZipFile(groupDir.resolve(metadataJarName)).entries().asSequence().map { it.name }.toSet() Assert.assertTrue("com/example/lib/CommonKt.kotlin_metadata" in metadataJarEntries) @@ -171,9 +200,11 @@ class NewMultiplatformIT : BaseGradleIT() { Assert.assertTrue(resolve("com/example/app/AKt.kotlin_metadata").exists()) } - projectDir.resolve(targetClassesDir("nodeJs")).resolve("sample-app.js").readText().run { - Assert.assertTrue(contains("console.info")) - Assert.assertTrue(contains("function nodeJsMain(")) + if (jsMode == JsMode.LEGACY) { + projectDir.resolve(targetClassesDir("nodeJs")).resolve("sample-app.js").readText().run { + Assert.assertTrue(contains("console.info")) + Assert.assertTrue(contains("function nodeJsMain(")) + } } projectDir.resolve(targetClassesDir("wasm32")).run { @@ -209,11 +240,18 @@ class NewMultiplatformIT : BaseGradleIT() { it.replace(Regex("""\.version\(.*\)"""), "") } - build("clean", "assemble", "--rerun-tasks") { + build( + "clean", + "assemble", + "--rerun-tasks", + options = defaultBuildOptions().copy(jsMode = jsMode) + ) { checkAppBuild() } } + if (jsMode != JsMode.LEGACY) return + with(oldStyleAppProject) { setupWorkingDir() gradleBuildScript().appendText("\nallprojects { repositories { maven { url '$libLocalRepoUri' } } }")