[Wasm] Add kotlin-test-wasm library
This commit is contained in:
committed by
TeamCityServer
parent
6ba65065ee
commit
14eee7c539
Generated
-10
@@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="RunConfigurationProducerService">
|
|
||||||
<option name="ignoredProducers">
|
|
||||||
<set>
|
|
||||||
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
|
|
||||||
</set>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -55,6 +55,24 @@ val jsRuntimeVariant by configurations.creating {
|
|||||||
extendsFrom(jsApiVariant)
|
extendsFrom(jsApiVariant)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val wasmApiVariant by configurations.creating {
|
||||||
|
isCanBeConsumed = true
|
||||||
|
isCanBeResolved = false
|
||||||
|
attributes {
|
||||||
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val wasmRuntimeVariant by configurations.creating {
|
||||||
|
isCanBeConsumed = true
|
||||||
|
isCanBeResolved = false
|
||||||
|
attributes {
|
||||||
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
||||||
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||||
|
}
|
||||||
|
extendsFrom(wasmApiVariant)
|
||||||
|
}
|
||||||
|
|
||||||
val nativeApiVariant by configurations.creating {
|
val nativeApiVariant by configurations.creating {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = false
|
||||||
@@ -76,6 +94,7 @@ val commonVariant by configurations.creating {
|
|||||||
dependencies {
|
dependencies {
|
||||||
jvmApi(project(":kotlin-stdlib"))
|
jvmApi(project(":kotlin-stdlib"))
|
||||||
jsApiVariant("$group:kotlin-test-js:$version")
|
jsApiVariant("$group:kotlin-test-js:$version")
|
||||||
|
wasmApiVariant("$group:kotlin-test-wasm:$version")
|
||||||
commonVariant("$group:kotlin-test-common:$version")
|
commonVariant("$group:kotlin-test-common:$version")
|
||||||
commonVariant("$group:kotlin-test-annotations-common:$version")
|
commonVariant("$group:kotlin-test-annotations-common:$version")
|
||||||
}
|
}
|
||||||
@@ -114,6 +133,8 @@ val rootComponent = componentFactory.adhoc("root").apply {
|
|||||||
}
|
}
|
||||||
addVariantsFromConfiguration(jsApiVariant) { mapToOptional() }
|
addVariantsFromConfiguration(jsApiVariant) { mapToOptional() }
|
||||||
addVariantsFromConfiguration(jsRuntimeVariant) { mapToOptional() }
|
addVariantsFromConfiguration(jsRuntimeVariant) { mapToOptional() }
|
||||||
|
addVariantsFromConfiguration(wasmApiVariant) { mapToOptional() }
|
||||||
|
addVariantsFromConfiguration(wasmRuntimeVariant) { mapToOptional() }
|
||||||
addVariantsFromConfiguration(nativeApiVariant) { mapToOptional() }
|
addVariantsFromConfiguration(nativeApiVariant) { mapToOptional() }
|
||||||
addVariantsFromConfiguration(commonVariant) { mapToOptional() }
|
addVariantsFromConfiguration(commonVariant) { mapToOptional() }
|
||||||
}
|
}
|
||||||
@@ -236,6 +257,38 @@ val jsComponent = componentFactory.adhoc("js").apply {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val (wasmApi, wasmRuntime) = listOf("api", "runtime").map { usage ->
|
||||||
|
configurations.create("wasm${usage.capitalize()}") {
|
||||||
|
isCanBeConsumed = true
|
||||||
|
isCanBeResolved = false
|
||||||
|
attributes {
|
||||||
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
||||||
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wasmRuntime.extendsFrom(wasmApi)
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
wasmApi(project(":kotlin-stdlib-wasm"))
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
val wasmJar = tasks.getByPath(":kotlin-test:kotlin-test-wasm:jsJar")
|
||||||
|
add(wasmApi.name, wasmJar)
|
||||||
|
add(wasmRuntime.name, wasmJar)
|
||||||
|
}
|
||||||
|
|
||||||
|
val wasmComponent = componentFactory.adhoc("wasm").apply {
|
||||||
|
addVariantsFromConfiguration(wasmApi) {
|
||||||
|
mapToMavenScope("compile")
|
||||||
|
}
|
||||||
|
addVariantsFromConfiguration(wasmRuntime) {
|
||||||
|
mapToMavenScope("runtime")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
val commonMetadata by configurations.creating {
|
val commonMetadata by configurations.creating {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = false
|
||||||
@@ -306,6 +359,12 @@ publishing {
|
|||||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-js:sourcesJar") as Jar)
|
artifact(tasks.getByPath(":kotlin-test:kotlin-test-js:sourcesJar") as Jar)
|
||||||
configureKotlinPomAttributes(project, "Kotlin Test for JS")
|
configureKotlinPomAttributes(project, "Kotlin Test for JS")
|
||||||
}
|
}
|
||||||
|
create("wasm", MavenPublication::class) {
|
||||||
|
artifactId = "kotlin-test-wasm"
|
||||||
|
from(wasmComponent)
|
||||||
|
// TODO: artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm:jsSourcesJar"))
|
||||||
|
configureKotlinPomAttributes(project, "Kotlin Test for WASM")
|
||||||
|
}
|
||||||
create("common", MavenPublication::class) {
|
create("common", MavenPublication::class) {
|
||||||
artifactId = "kotlin-test-common"
|
artifactId = "kotlin-test-common"
|
||||||
from(commonMetadataComponent)
|
from(commonMetadataComponent)
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.jetbrains.kotlin.gradle.dsl.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("multiplatform")
|
||||||
|
}
|
||||||
|
|
||||||
|
val commonMainSources by task<Sync> {
|
||||||
|
from(
|
||||||
|
"$rootDir/libraries/kotlin.test/common/src",
|
||||||
|
"$rootDir/libraries/kotlin.test/annotations-common/src"
|
||||||
|
)
|
||||||
|
into("$buildDir/commonMainSources")
|
||||||
|
}
|
||||||
|
|
||||||
|
//val commonTestSources by task<Sync> {
|
||||||
|
// from("$rootDir/libraries/kotlin.test/common/src/test/kotlin")
|
||||||
|
// into("$buildDir/commonTestSources")
|
||||||
|
//}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
js(IR) {
|
||||||
|
nodejs()
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
val commonMain by getting {
|
||||||
|
dependencies {
|
||||||
|
api(project(":kotlin-stdlib-wasm"))
|
||||||
|
}
|
||||||
|
kotlin.srcDir(commonMainSources.get().destinationDir)
|
||||||
|
}
|
||||||
|
// val commonTest by getting {
|
||||||
|
// kotlin.srcDir(commonTestSources.get().destinationDir)
|
||||||
|
// }
|
||||||
|
val jsMain by getting {
|
||||||
|
dependencies {
|
||||||
|
api(project(":kotlin-stdlib-wasm"))
|
||||||
|
}
|
||||||
|
kotlin.srcDir("$rootDir/libraries/kotlin.test/wasm/src")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType<KotlinCompile<*>>().configureEach {
|
||||||
|
kotlinOptions.freeCompilerArgs += listOf(
|
||||||
|
"-Xallow-kotlin-package",
|
||||||
|
"-opt-in=kotlin.ExperimentalMultiplatform",
|
||||||
|
"-opt-in=kotlin.contracts.ExperimentalContracts"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("compileKotlinJs") {
|
||||||
|
(this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin-test"
|
||||||
|
dependsOn(commonMainSources)
|
||||||
|
}
|
||||||
|
|
||||||
|
//tasks.named("compileTestKotlinJs") {
|
||||||
|
// dependsOn(commonTestSources)
|
||||||
|
//}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kotlin.test
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a function as a test.
|
||||||
|
*/
|
||||||
|
@Target(AnnotationTarget.FUNCTION)
|
||||||
|
public actual annotation class Test
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a test or a suite as ignored.
|
||||||
|
*/
|
||||||
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
|
||||||
|
public actual annotation class Ignore
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a function to be invoked before each test.
|
||||||
|
*/
|
||||||
|
@Target(AnnotationTarget.FUNCTION)
|
||||||
|
public actual annotation class BeforeTest
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a function to be invoked after each test.
|
||||||
|
*/
|
||||||
|
@Target(AnnotationTarget.FUNCTION)
|
||||||
|
public actual annotation class AfterTest
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kotlin.test
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A fallback adapter for the case when no framework is detected.
|
||||||
|
*/
|
||||||
|
internal open class BareAdapter : FrameworkAdapter {
|
||||||
|
|
||||||
|
override fun suite(name: String, ignored: Boolean, suiteFn: () -> Unit) {
|
||||||
|
if (!ignored) {
|
||||||
|
suiteFn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun test(name: String, ignored: Boolean, testFn: () -> Any?) {
|
||||||
|
if (!ignored) {
|
||||||
|
testFn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kotlin.test
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the result of an assertion execution.
|
||||||
|
*/
|
||||||
|
public interface AssertionResult {
|
||||||
|
val result: Boolean
|
||||||
|
val expected: Any?
|
||||||
|
val actual: Any?
|
||||||
|
val lazyMessage: () -> String?
|
||||||
|
}
|
||||||
|
|
||||||
|
internal var assertHook: (AssertionResult) -> Unit = { _ -> }
|
||||||
|
|
||||||
|
internal object DefaultWasmAsserter : Asserter {
|
||||||
|
private var e: Any? = null
|
||||||
|
private var a: Any? = null
|
||||||
|
|
||||||
|
override fun assertEquals(message: String?, expected: Any?, actual: Any?) {
|
||||||
|
e = expected
|
||||||
|
a = actual
|
||||||
|
super.assertEquals(message, expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertNotEquals(message: String?, illegal: Any?, actual: Any?) {
|
||||||
|
e = illegal
|
||||||
|
a = actual
|
||||||
|
super.assertNotEquals(message, illegal, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertSame(message: String?, expected: Any?, actual: Any?) {
|
||||||
|
e = expected
|
||||||
|
a = actual
|
||||||
|
super.assertSame(message, expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertNotSame(message: String?, illegal: Any?, actual: Any?) {
|
||||||
|
e = illegal
|
||||||
|
a = actual
|
||||||
|
super.assertNotSame(message, illegal, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertNull(message: String?, actual: Any?) {
|
||||||
|
a = actual
|
||||||
|
super.assertNull(message, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertNotNull(message: String?, actual: Any?) {
|
||||||
|
a = actual
|
||||||
|
super.assertNotNull(message, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertTrue(lazyMessage: () -> String?, actual: Boolean) {
|
||||||
|
if (!actual) {
|
||||||
|
failWithMessage(lazyMessage, null)
|
||||||
|
} else {
|
||||||
|
invokeHook(true, lazyMessage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun assertTrue(message: String?, actual: Boolean) {
|
||||||
|
assertTrue({ message }, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun fail(message: String?): Nothing {
|
||||||
|
fail(message, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
@SinceKotlin("1.4")
|
||||||
|
override fun fail(message: String?, cause: Throwable?): Nothing {
|
||||||
|
failWithMessage({ message }, cause)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inline fun failWithMessage(lazyMessage: () -> String?, cause: Throwable?): Nothing {
|
||||||
|
val message = lazyMessage()
|
||||||
|
invokeHook(false) { message }
|
||||||
|
throw AssertionErrorWithCause(message, cause)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun invokeHook(result: Boolean, lazyMessage: () -> String?) {
|
||||||
|
try {
|
||||||
|
assertHook(object : AssertionResult {
|
||||||
|
override val result: Boolean = result
|
||||||
|
override val expected: Any? = e
|
||||||
|
override val actual: Any? = a
|
||||||
|
override val lazyMessage: () -> String? = lazyMessage
|
||||||
|
})
|
||||||
|
} finally {
|
||||||
|
e = null
|
||||||
|
a = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kotlin.test
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serves as a bridge to a testing framework.
|
||||||
|
*
|
||||||
|
* The tests structure is defined using internal functions suite and test, which delegate to corresponding functions of a [FrameworkAdapter].
|
||||||
|
* Sample test layout:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* suite('a suite', false, function() {
|
||||||
|
* suite('a subsuite', false, function() {
|
||||||
|
* test('a test', false, function() {...});
|
||||||
|
* test('an ignored/pending test', true, function() {...});
|
||||||
|
* });
|
||||||
|
* suite('an ignored/pending test', true, function() {...});
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface FrameworkAdapter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Declares a test suite.
|
||||||
|
*
|
||||||
|
* @param name the name of the test suite, e.g. a class name
|
||||||
|
* @param ignored whether the test suite is ignored, e.g. marked with [Ignore] annotation
|
||||||
|
* @param suiteFn defines nested suites by calling [kotlin.test.suite] and tests by calling [kotlin.test.test]
|
||||||
|
*/
|
||||||
|
fun suite(name: String, ignored: Boolean, suiteFn: () -> Unit)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Declares a test.
|
||||||
|
*
|
||||||
|
* @param name the test name.
|
||||||
|
* @param ignored whether the test is ignored
|
||||||
|
* @param testFn contains test body invocation
|
||||||
|
*/
|
||||||
|
fun test(name: String, ignored: Boolean, testFn: () -> Any?)
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kotlin.test
|
||||||
|
|
||||||
|
import kotlin.js.JsExport
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides current framework adapter with a provided instance of [FrameworkAdapter]. Use in order to support custom test frameworks.
|
||||||
|
*
|
||||||
|
* If this function is not called, the test framework will be detected automatically.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
internal fun setAdapter(adapter: FrameworkAdapter) {
|
||||||
|
currentAdapter = adapter
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The functions below are used by the compiler to describe the tests structure, e.g.
|
||||||
|
*
|
||||||
|
* suite('a suite', false, function() {
|
||||||
|
* suite('a subsuite', false, function() {
|
||||||
|
* test('a test', false, function() {...});
|
||||||
|
* test('an ignored/pending test', true, function() {...});
|
||||||
|
* });
|
||||||
|
* suite('an ignored/pending test', true, function() {...});
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
|
||||||
|
internal fun suite(name: String, ignored: Boolean, suiteFn: () -> Unit) {
|
||||||
|
currentAdapter.suite(name, ignored, suiteFn)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun test(name: String, ignored: Boolean, testFn: () -> Any?) {
|
||||||
|
currentAdapter.test(name, ignored, testFn)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal var currentAdapter: FrameworkAdapter = BareAdapter()
|
||||||
|
|
||||||
|
// This is called from the js-launcher alongside wasm start function
|
||||||
|
@JsExport
|
||||||
|
internal fun startUnitTests() {
|
||||||
|
// This will be filled with the corresponding code during lowering
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kotlin.test
|
||||||
|
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes the given [block] of test code and _doesn't_ execute it.
|
||||||
|
*
|
||||||
|
* This keeps the code under test referenced, but doesn't actually test it until it is implemented.
|
||||||
|
*/
|
||||||
|
actual fun todo(block: () -> Unit) {
|
||||||
|
println("TODO at " + block)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Platform-specific construction of AssertionError with cause */
|
||||||
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
|
internal actual inline fun AssertionErrorWithCause(message: String?, cause: Throwable?): AssertionError =
|
||||||
|
AssertionError(message, cause)
|
||||||
|
|
||||||
|
|
||||||
|
@PublishedApi
|
||||||
|
internal actual fun <T : Throwable> checkResultIsFailure(exceptionClass: KClass<T>, message: String?, blockResult: Result<Unit>): T {
|
||||||
|
blockResult.fold(
|
||||||
|
onSuccess = {
|
||||||
|
asserter.fail(messagePrefix(message) + "Expected an exception of $exceptionClass to be thrown, but was completed successfully.")
|
||||||
|
},
|
||||||
|
onFailure = { e ->
|
||||||
|
if (exceptionClass.isInstance(e)) {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
return e as T
|
||||||
|
}
|
||||||
|
asserter.fail(messagePrefix(message) + "Expected an exception of $exceptionClass to be thrown, but was $e", e)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides the JS implementation of asserter
|
||||||
|
*/
|
||||||
|
internal actual fun lookupAsserter(): Asserter = DefaultWasmAsserter
|
||||||
@@ -66,7 +66,7 @@ public actual open class ClassCastException actual constructor(message: String?)
|
|||||||
actual constructor() : this(null)
|
actual constructor() : this(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
public actual open class AssertionError private constructor(message: String?, cause: Throwable?) : Error(message, cause) {
|
public actual open class AssertionError constructor(message: String?, cause: Throwable?) : Error(message, cause) {
|
||||||
actual constructor() : this(null)
|
actual constructor() : this(null)
|
||||||
constructor(message: String?) : this(message, null)
|
constructor(message: String?) : this(message, null)
|
||||||
actual constructor(message: Any?) : this(message.toString(), message as? Throwable)
|
actual constructor(message: Any?) : this(message.toString(), message as? Throwable)
|
||||||
|
|||||||
+3
-1
@@ -500,7 +500,8 @@ if (buildProperties.inJpsBuildIdeaSync) {
|
|||||||
":kotlin-test",
|
":kotlin-test",
|
||||||
":kotlin-test:kotlin-test-js",
|
":kotlin-test:kotlin-test-js",
|
||||||
":kotlin-test:kotlin-test-js-ir",
|
":kotlin-test:kotlin-test-js-ir",
|
||||||
":kotlin-test:kotlin-test-js:kotlin-test-js-it"
|
":kotlin-test:kotlin-test-js:kotlin-test-js-it",
|
||||||
|
":kotlin-test:kotlin-test-wasm"
|
||||||
|
|
||||||
project(':kotlin-stdlib-common').projectDir = "$rootDir/libraries/stdlib/common" as File
|
project(':kotlin-stdlib-common').projectDir = "$rootDir/libraries/stdlib/common" as File
|
||||||
project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File
|
project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File
|
||||||
@@ -520,6 +521,7 @@ if (buildProperties.inJpsBuildIdeaSync) {
|
|||||||
project(':kotlin-test:kotlin-test-js').projectDir = "$rootDir/libraries/kotlin.test/js" as File
|
project(':kotlin-test:kotlin-test-js').projectDir = "$rootDir/libraries/kotlin.test/js" as File
|
||||||
project(':kotlin-test:kotlin-test-js-ir').projectDir = "$rootDir/libraries/kotlin.test/js-ir" as File
|
project(':kotlin-test:kotlin-test-js-ir').projectDir = "$rootDir/libraries/kotlin.test/js-ir" as File
|
||||||
project(':kotlin-test:kotlin-test-js:kotlin-test-js-it').projectDir = "$rootDir/libraries/kotlin.test/js/it" as File
|
project(':kotlin-test:kotlin-test-js:kotlin-test-js-it').projectDir = "$rootDir/libraries/kotlin.test/js/it" as File
|
||||||
|
project(':kotlin-test:kotlin-test-wasm').projectDir = "$rootDir/libraries/kotlin.test/wasm" as File
|
||||||
}
|
}
|
||||||
include ":compiler:android-tests"
|
include ":compiler:android-tests"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user