From 7a79de6d16b231f5a0c7f798f1bfa08cccd9ec79 Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Sun, 19 Mar 2023 22:53:05 +0000 Subject: [PATCH] [K/JS] Move JS IR box tests setup into separated function --- buildSrc/src/main/kotlin/setupIrJsBoxTests.kt | 24 +++++++++++++ buildSrc/src/main/kotlin/setupV8.kt | 32 +++++++++++++++++ js/js.tests/build.gradle.kts | 24 ++----------- .../atomicfu-compiler/build.gradle.kts | 34 ++++--------------- .../kotlinx-serialization/build.gradle.kts | 16 ++------- wasm/wasm.tests/build.gradle.kts | 15 +------- 6 files changed, 69 insertions(+), 76 deletions(-) create mode 100644 buildSrc/src/main/kotlin/setupIrJsBoxTests.kt create mode 100644 buildSrc/src/main/kotlin/setupV8.kt diff --git a/buildSrc/src/main/kotlin/setupIrJsBoxTests.kt b/buildSrc/src/main/kotlin/setupIrJsBoxTests.kt new file mode 100644 index 00000000000..507546c9284 --- /dev/null +++ b/buildSrc/src/main/kotlin/setupIrJsBoxTests.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2023 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. + */ +import org.gradle.api.tasks.testing.Test + +fun Test.useJsIrBoxTests( + version: Any, + buildDir: String = "", + fullStdLib: String = "libraries/stdlib/js-ir/build/classes/kotlin/js/main", + reducedStdlibPath: String = "libraries/stdlib/js-ir-minimal-for-test/build/classes/kotlin/js/main", + kotlinJsTestPath: String = "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main" +) { + setupV8() + dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") + dependsOn(":kotlin-test:kotlin-test-js-ir:compileKotlinJs") + dependsOn(":kotlin-stdlib-js-ir-minimal-for-test:compileKotlinJs") + + systemProperty("kotlin.js.test.root.out.dir", buildDir) + systemProperty("kotlin.js.full.stdlib.path", fullStdLib) + systemProperty("kotlin.js.reduced.stdlib.path", reducedStdlibPath) + systemProperty("kotlin.js.kotlin.test.path", kotlinJsTestPath) + systemProperty("kotlin.js.stdlib.klib.path", "libraries/stdlib/js-ir/build/libs/kotlin-stdlib-js-ir-js-$version.klib") +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/setupV8.kt b/buildSrc/src/main/kotlin/setupV8.kt new file mode 100644 index 00000000000..b3d67c53e1b --- /dev/null +++ b/buildSrc/src/main/kotlin/setupV8.kt @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2023 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. + */ +import org.gradle.api.Project +import org.gradle.api.tasks.testing.Test +import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootExtension +import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin + +private object V8Utils { + lateinit var d8Plugin: D8RootExtension + + fun useD8Plugin(project: Project) { + d8Plugin = D8RootPlugin.apply(project.rootProject) + d8Plugin.version = project.v8Version + } +} + +fun Project.useD8Plugin() { + V8Utils.useD8Plugin(this) +} + +fun Test.setupV8() { + dependsOn(V8Utils.d8Plugin.setupTaskProvider) + val v8ExecutablePath = project.provider { + V8Utils.d8Plugin.requireConfigured().executablePath.absolutePath + } + doFirst { + systemProperty("javascript.engine.path.V8", v8ExecutablePath.get()) + } +} + diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts index 44bcd87fbd9..4c7d6e9aa67 100644 --- a/js/js.tests/build.gradle.kts +++ b/js/js.tests/build.gradle.kts @@ -1,7 +1,6 @@ import com.github.gradle.node.npm.task.NpmTask import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages -import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin import org.jetbrains.kotlin.ideaExt.idea import org.apache.tools.ant.filters.FixCrLfFilter import java.util.Properties @@ -85,6 +84,7 @@ dependencies { val generationRoot = projectDir.resolve("tests-gen") +useD8Plugin() optInToExperimentalCompilerApi() sourceSets { @@ -207,21 +207,9 @@ fun Test.setupNodeJs() { ) } -val d8Plugin = D8RootPlugin.apply(rootProject) -d8Plugin.version = v8Version - -fun Test.setupV8() { - dependsOn(d8Plugin.setupTaskProvider) - val v8ExecutablePath = project.provider { - d8Plugin.requireConfigured().executablePath.absolutePath - } - doFirst { - systemProperty("javascript.engine.path.V8", v8ExecutablePath.get()) - } -} - fun Test.setUpJsBoxTests(jsEnabled: Boolean, jsIrEnabled: Boolean, firEnabled: Boolean, es6Enabled: Boolean) { setupV8() + if (jsIrEnabled) { setupNodeJs() dependsOn(npmInstall) @@ -446,17 +434,11 @@ val runMocha by tasks.registering { } projectTest("invalidationTest", jUnitMode = JUnitMode.JUnit4) { - setupV8() workingDir = rootDir + useJsIrBoxTests(version = version, buildDir = "$buildDir/") include("org/jetbrains/kotlin/incremental/*") - dependsOn(":dist") - dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") - - systemProperty("kotlin.js.stdlib.klib.path", "libraries/stdlib/js-ir/build/libs/kotlin-stdlib-js-ir-js-$version.klib") - systemProperty("kotlin.js.test.root.out.dir", "$buildDir/") - forwardProperties() } diff --git a/plugins/atomicfu/atomicfu-compiler/build.gradle.kts b/plugins/atomicfu/atomicfu-compiler/build.gradle.kts index de00acb2cb2..480fc876c2c 100644 --- a/plugins/atomicfu/atomicfu-compiler/build.gradle.kts +++ b/plugins/atomicfu/atomicfu-compiler/build.gradle.kts @@ -1,7 +1,6 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages -import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin description = "Atomicfu Compiler Plugin" @@ -105,43 +104,24 @@ runtimeJar() sourcesJar() javadocJar() testsJar() +useD8Plugin() projectTest(jUnitMode = JUnitMode.JUnit5) { useJUnitPlatform() + useJsIrBoxTests(version = version, buildDir = "$buildDir/") + workingDir = rootDir + + dependsOn(":dist") dependsOn(atomicfuJsIrRuntimeForTests) + val localAtomicfuJsIrRuntimeForTests: FileCollection = atomicfuJsIrRuntimeForTests val localAtomicfuJsClasspath: FileCollection = atomicfuJsClasspath val localAtomicfuJvmClasspath: FileCollection = atomicfuJvmClasspath + doFirst { systemProperty("atomicfuJsIrRuntimeForTests.classpath", localAtomicfuJsIrRuntimeForTests.asPath) systemProperty("atomicfuJs.classpath", localAtomicfuJsClasspath.asPath) systemProperty("atomicfuJvm.classpath", localAtomicfuJvmClasspath.asPath) } - setUpJsIrBoxTests() -} - -val d8Plugin = D8RootPlugin.apply(rootProject) -d8Plugin.version = v8Version - -fun Test.setupV8() { - dependsOn(d8Plugin.setupTaskProvider) - val v8ExecutablePath = d8Plugin.requireConfigured().executablePath.absolutePath - doFirst { - systemProperty("javascript.engine.path.V8", v8ExecutablePath) - } -} - -fun Test.setUpJsIrBoxTests() { - setupV8() - - dependsOn(":dist") - dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") - systemProperty("kotlin.js.full.stdlib.path", "libraries/stdlib/js-ir/build/classes/kotlin/js/main") - dependsOn(":kotlin-stdlib-js-ir-minimal-for-test:compileKotlinJs") - systemProperty("kotlin.js.reduced.stdlib.path", "libraries/stdlib/js-ir-minimal-for-test/build/classes/kotlin/js/main") - dependsOn(":kotlin-test:kotlin-test-js-ir:compileKotlinJs") - systemProperty("kotlin.js.kotlin.test.path", "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main") - systemProperty("kotlin.js.kotlin.test.path", "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main") - systemProperty("kotlin.js.test.root.out.dir", "$buildDir/") } diff --git a/plugins/kotlinx-serialization/build.gradle.kts b/plugins/kotlinx-serialization/build.gradle.kts index 298cd4f1044..83c7756c828 100644 --- a/plugins/kotlinx-serialization/build.gradle.kts +++ b/plugins/kotlinx-serialization/build.gradle.kts @@ -1,6 +1,5 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute -import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin description = "Kotlin Serialization Compiler Plugin" @@ -9,9 +8,6 @@ plugins { id("jps-compatible") } -val d8Plugin = D8RootPlugin.apply(rootProject) -d8Plugin.version = v8Version - val jsonJsIrRuntimeForTests: Configuration by configurations.creating { attributes { attribute(KotlinPlatformType.attribute, KotlinPlatformType.js) @@ -80,6 +76,7 @@ runtimeJar() sourcesJar() javadocJar() testsJar() +useD8Plugin() projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) { workingDir = rootDir @@ -90,22 +87,13 @@ projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) { val generateTests by generator("org.jetbrains.kotlinx.serialization.TestGeneratorKt") fun Test.setUpJsIrBoxTests() { - dependsOn(d8Plugin.setupTaskProvider) - dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") - dependsOn(":kotlin-test:kotlin-test-js-ir:compileKotlinJs") + useJsIrBoxTests(version = version, buildDir = "$buildDir/") val localJsCoreRuntimeForTests: FileCollection = coreJsIrRuntimeForTests val localJsJsonRuntimeForTests: FileCollection = jsonJsIrRuntimeForTests - val v8ExecutablePath = d8Plugin.requireConfigured().executablePath.absolutePath doFirst { - systemProperty("javascript.engine.path.V8", v8ExecutablePath) systemProperty("serialization.core.path", localJsCoreRuntimeForTests.asPath) systemProperty("serialization.json.path", localJsJsonRuntimeForTests.asPath) } - - systemProperty("kotlin.js.test.root.out.dir", "$buildDir/") - systemProperty("kotlin.js.full.stdlib.path", "libraries/stdlib/js-ir/build/classes/kotlin/js/main") - systemProperty("kotlin.js.reduced.stdlib.path", "libraries/stdlib/js-ir-minimal-for-test/build/classes/kotlin/js/main") - systemProperty("kotlin.js.kotlin.test.path", "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main") } diff --git a/wasm/wasm.tests/build.gradle.kts b/wasm/wasm.tests/build.gradle.kts index f2a4fe46edf..b78b8d0bdd3 100644 --- a/wasm/wasm.tests/build.gradle.kts +++ b/wasm/wasm.tests/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin import org.gradle.internal.os.OperatingSystem import de.undercouch.gradle.tasks.download.Download import java.util.* @@ -18,6 +17,7 @@ dependencies { val generationRoot = projectDir.resolve("tests-gen") +useD8Plugin() optInToExperimentalCompilerApi() sourceSets { @@ -28,19 +28,6 @@ sourceSets { } } -val d8Plugin = D8RootPlugin.apply(rootProject) -d8Plugin.version = v8Version - -fun Test.setupV8() { - dependsOn(d8Plugin.setupTaskProvider) - val v8ExecutablePath = project.provider { - d8Plugin.requireConfigured().executablePath.absolutePath - } - doFirst { - systemProperty("javascript.engine.path.V8", v8ExecutablePath.get()) - } -} - fun Test.setupWasmStdlib() { dependsOn(":kotlin-stdlib-wasm:compileKotlinWasm") systemProperty("kotlin.wasm.stdlib.path", "libraries/stdlib/wasm/build/classes/kotlin/wasm/main")