[Wasm] Add box tests for kotlin.test
This commit is contained in:
committed by
TeamCityServer
parent
14eee7c539
commit
dcdc7e4633
@@ -346,5 +346,8 @@ projectTest("wasmTest", true) {
|
|||||||
dependsOn(":kotlin-stdlib-wasm:compileKotlinJs")
|
dependsOn(":kotlin-stdlib-wasm:compileKotlinJs")
|
||||||
systemProperty("kotlin.wasm.stdlib.path", "libraries/stdlib/wasm/build/classes/kotlin/js/main")
|
systemProperty("kotlin.wasm.stdlib.path", "libraries/stdlib/wasm/build/classes/kotlin/js/main")
|
||||||
|
|
||||||
|
dependsOn(":kotlin-test:kotlin-test-wasm:compileKotlinJs")
|
||||||
|
systemProperty("kotlin.wasm.kotlin.test.path", "libraries/kotlin.test/wasm/build/classes/kotlin/js/main")
|
||||||
|
|
||||||
setUpBoxTests()
|
setUpBoxTests()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.js.test.ir.semantics.*
|
|||||||
import org.jetbrains.kotlin.js.test.semantics.*
|
import org.jetbrains.kotlin.js.test.semantics.*
|
||||||
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractIrCodegenBoxWasmTest
|
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractIrCodegenBoxWasmTest
|
||||||
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractIrCodegenWasmJsInteropWasmTest
|
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractIrCodegenWasmJsInteropWasmTest
|
||||||
|
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractKotlinTestBoxWasmTest
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
@@ -31,6 +32,10 @@ fun main(args: Array<String>) {
|
|||||||
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS)
|
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testClass<AbstractKotlinTestBoxWasmTest> {
|
||||||
|
model("box/kotlin.test/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM)
|
||||||
|
}
|
||||||
|
|
||||||
testClass<AbstractIrBoxJsTest> {
|
testClass<AbstractIrBoxJsTest> {
|
||||||
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS_IR)
|
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS_IR)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.*
|
||||||
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.ir.backend.js.loadKlib
|
import org.jetbrains.kotlin.ir.backend.js.loadKlib
|
||||||
import org.jetbrains.kotlin.ir.backend.js.prepareAnalyzedSourceModule
|
import org.jetbrains.kotlin.ir.backend.js.prepareAnalyzedSourceModule
|
||||||
import org.jetbrains.kotlin.ir.backend.js.utils.sanitizeName
|
import org.jetbrains.kotlin.ir.backend.js.utils.sanitizeName
|
||||||
@@ -35,9 +36,6 @@ import org.jetbrains.kotlin.test.util.KtTestUtil
|
|||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
private val wasmRuntimeKlib =
|
|
||||||
loadKlib(System.getProperty("kotlin.wasm.stdlib.path"))
|
|
||||||
|
|
||||||
abstract class BasicWasmBoxTest(
|
abstract class BasicWasmBoxTest(
|
||||||
private val pathToTestDir: String,
|
private val pathToTestDir: String,
|
||||||
testGroupOutputDirPrefix: String,
|
testGroupOutputDirPrefix: String,
|
||||||
@@ -47,6 +45,13 @@ abstract class BasicWasmBoxTest(
|
|||||||
|
|
||||||
private val spiderMonkey by lazy { SpiderMonkeyEngine() }
|
private val spiderMonkey by lazy { SpiderMonkeyEngine() }
|
||||||
|
|
||||||
|
private val COMMON_FILES_NAME = "_common"
|
||||||
|
|
||||||
|
@Suppress("UNUSED_PARAMETER")
|
||||||
|
fun doTestWithCoroutinesPackageReplacement(filePath: String, coroutinesPackage: String) {
|
||||||
|
TODO("TestWithCoroutinesPackageReplacement are not supported")
|
||||||
|
}
|
||||||
|
|
||||||
fun doTest(filePath: String) {
|
fun doTest(filePath: String) {
|
||||||
val file = File(filePath)
|
val file = File(filePath)
|
||||||
|
|
||||||
@@ -81,7 +86,12 @@ abstract class BasicWasmBoxTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val psiFiles = createPsiFiles(kotlinFiles.map { File(it).canonicalPath }.sorted())
|
val localCommonFile = file.parent + "/" + COMMON_FILES_NAME + "." + KotlinFileType.EXTENSION
|
||||||
|
val localCommonFiles = if (File(localCommonFile).exists()) listOf(localCommonFile) else emptyList()
|
||||||
|
|
||||||
|
val allSourceFiles = kotlinFiles + localCommonFiles
|
||||||
|
|
||||||
|
val psiFiles = createPsiFiles(allSourceFiles.map { File(it).canonicalPath }.sorted())
|
||||||
val config = createConfig(languageVersionSettings)
|
val config = createConfig(languageVersionSettings)
|
||||||
translateFiles(
|
translateFiles(
|
||||||
file,
|
file,
|
||||||
@@ -159,7 +169,7 @@ abstract class BasicWasmBoxTest(
|
|||||||
filesToCompile,
|
filesToCompile,
|
||||||
config.configuration,
|
config.configuration,
|
||||||
// TODO: Bypass the resolver fow wasm.
|
// TODO: Bypass the resolver fow wasm.
|
||||||
listOf(System.getProperty("kotlin.wasm.stdlib.path")!!),
|
listOf(System.getProperty("kotlin.wasm.stdlib.path")!!, System.getProperty("kotlin.wasm.kotlin.test.path")!!),
|
||||||
emptyList(),
|
emptyList(),
|
||||||
AnalyzerWithCompilerReport(config.configuration)
|
AnalyzerWithCompilerReport(config.configuration)
|
||||||
)
|
)
|
||||||
|
|||||||
+5
@@ -16,3 +16,8 @@ abstract class AbstractIrCodegenWasmJsInteropWasmTest : BasicWasmBoxTest(
|
|||||||
"compiler/testData/codegen/wasmJsInterop",
|
"compiler/testData/codegen/wasmJsInterop",
|
||||||
"codegen/wasmJsInteropJs"
|
"codegen/wasmJsInteropJs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
abstract class AbstractKotlinTestBoxWasmTest : BasicWasmBoxTest(
|
||||||
|
"js/js.translator/testData/box/kotlin.test",
|
||||||
|
"codegen/wasmBoxKotlinTest"
|
||||||
|
)
|
||||||
|
|||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.jetbrains.kotlin.js.test.wasm.semantics;
|
||||||
|
|
||||||
|
import com.intellij.testFramework.TestDataPath;
|
||||||
|
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
|
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend;
|
||||||
|
import org.jetbrains.kotlin.test.TestMetadata;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("js/js.translator/testData/box/kotlin.test")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public class KotlinTestBoxWasmTestGenerated extends AbstractKotlinTestBoxWasmTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest0(this::doTest, TargetBackend.WASM, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInKotlin_test() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/kotlin.test"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeAfter.kt")
|
||||||
|
public void testBeforeAfter() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/beforeAfter.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ignore.kt")
|
||||||
|
public void testIgnore() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/ignore.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("illegalParameters.kt")
|
||||||
|
public void testIllegalParameters() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/illegalParameters.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("incremental.kt")
|
||||||
|
public void testIncremental() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/incremental.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("inherited.kt")
|
||||||
|
public void testInherited() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/inherited.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mpp.kt")
|
||||||
|
public void testMpp() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/mpp.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("nested.kt")
|
||||||
|
public void testNested() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/nested.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("returnTestResult.kt")
|
||||||
|
public void testReturnTestResult() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/returnTestResult.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("simple.kt")
|
||||||
|
public void testSimple() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/kotlin.test/simple.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-3
@@ -23,7 +23,7 @@ private val underscore = kotlin.test.setAdapter(object : FrameworkAdapter {
|
|||||||
sortingContext.suite(name, ignored) { suiteFn() }
|
sortingContext.suite(name, ignored) { suiteFn() }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun test(name: String, ignored: Boolean, testFn: () -> dynamic) {
|
override fun test(name: String, ignored: Boolean, testFn: () -> Any?) {
|
||||||
sortingContext.test(name, ignored) { returned(testFn()) }
|
sortingContext.test(name, ignored) { returned(testFn()) }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -42,7 +42,7 @@ interface TestBodyContext {
|
|||||||
|
|
||||||
fun caught(msg: String)
|
fun caught(msg: String)
|
||||||
|
|
||||||
fun returned(msg: dynamic)
|
fun returned(msg: Any?)
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class Entity(val name: String,
|
private sealed class Entity(val name: String,
|
||||||
@@ -126,7 +126,7 @@ private class LoggingContext : SuiteContext, TestBodyContext{
|
|||||||
record("caught(\"$msg\")")
|
record("caught(\"$msg\")")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun returned(msg: dynamic) = indent {
|
override fun returned(msg: Any?) = indent {
|
||||||
if (msg is String) record("returned(\"$msg\")")
|
if (msg is String) record("returned(\"$msg\")")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user