[Wasm] Support main function
This commit is contained in:
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.js.test.ir.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.AbstractIrCodegenWasmJsInteropWasmTest
|
||||
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractKotlinTestBoxWasmTest
|
||||
import org.jetbrains.kotlin.js.test.wasm.semantics.AbstractJsTranslatorWasmTest
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
@@ -32,14 +32,15 @@ fun main(args: Array<String>) {
|
||||
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS)
|
||||
}
|
||||
|
||||
testClass<AbstractKotlinTestBoxWasmTest> {
|
||||
model("box/kotlin.test/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM)
|
||||
}
|
||||
|
||||
testClass<AbstractIrBoxJsTest> {
|
||||
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS_IR)
|
||||
}
|
||||
|
||||
testClass<AbstractJsTranslatorWasmTest> {
|
||||
model("box/main", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM)
|
||||
model("box/kotlin.test/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM)
|
||||
}
|
||||
|
||||
testClass<AbstractIrBoxJsES6Test> {
|
||||
model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS_IR_ES6)
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ abstract class BasicBoxTest(
|
||||
|
||||
|
||||
val actualMainCallParameters = if (CALL_MAIN_PATTERN.matcher(fileContent).find())
|
||||
MainCallParameters.mainWithArguments(listOf("testArg"))
|
||||
MainCallParameters.mainWithArguments(listOf())
|
||||
else
|
||||
mainCallParameters
|
||||
|
||||
|
||||
@@ -189,9 +189,10 @@ abstract class BasicWasmBoxTest(
|
||||
const wasmBinary = read(String.raw`${outputWasmFile.absoluteFile}`, 'binary');
|
||||
const wasmModule = new WebAssembly.Module(wasmBinary);
|
||||
wasmInstance = new WebAssembly.Instance(wasmModule, { runtime, js_code });
|
||||
|
||||
const ${sanitizeName(config.moduleId)} = wasmInstance.exports;
|
||||
wasmInstance.exports.__init();
|
||||
|
||||
const ${sanitizeName(config.moduleId)} = wasmInstance.exports;
|
||||
|
||||
wasmInstance.exports.startUnitTests?.();
|
||||
|
||||
const actualResult = importStringFromWasm(wasmInstance.exports.$testFunction());
|
||||
@@ -212,7 +213,9 @@ abstract class BasicWasmBoxTest(
|
||||
const response = await fetch("index.wasm");
|
||||
const wasmBinary = await response.arrayBuffer();
|
||||
wasmInstance = (await WebAssembly.instantiate(wasmBinary, { runtime, js_code })).instance;
|
||||
|
||||
wasmInstance.exports.__init();
|
||||
wasmInstance.exports.startUnitTests?.();
|
||||
|
||||
const actualResult = importStringFromWasm(wasmInstance.exports.box());
|
||||
if (actualResult !== "OK")
|
||||
throw `Wrong box result '${'$'}{actualResult}'; Expected "OK"`;
|
||||
|
||||
+4
-4
@@ -17,7 +17,7 @@ abstract class AbstractIrCodegenWasmJsInteropWasmTest : BasicWasmBoxTest(
|
||||
"codegen/wasmJsInteropJs"
|
||||
)
|
||||
|
||||
abstract class AbstractKotlinTestBoxWasmTest : BasicWasmBoxTest(
|
||||
"js/js.translator/testData/box/kotlin.test",
|
||||
"codegen/wasmBoxKotlinTest"
|
||||
)
|
||||
abstract class AbstractJsTranslatorWasmTest : BasicWasmBoxTest(
|
||||
TEST_DATA_DIR_PATH + "box/",
|
||||
"js.translator/wasmBox"
|
||||
)
|
||||
Reference in New Issue
Block a user