[Wasm/WASI] Implement Wasm WASI box test for K2
Fix #KT-64449
This commit is contained in:
committed by
Space Team
parent
a5dd71ac93
commit
4a49261f8c
@@ -1,6 +1,8 @@
|
|||||||
// MODULE: main
|
// MODULE: main
|
||||||
// FILE: main.kt
|
// FILE: main.kt
|
||||||
|
|
||||||
|
import kotlin.wasm.WasmExport
|
||||||
|
|
||||||
var onExportedFunctionExitCounter = 0
|
var onExportedFunctionExitCounter = 0
|
||||||
|
|
||||||
@WasmExport()
|
@WasmExport()
|
||||||
|
|||||||
-2
@@ -175,7 +175,5 @@ abstract class WasmEnvironmentConfigurator(testServices: TestServices) : Environ
|
|||||||
configuration.put(JSConfigurationKeys.SOURCE_MAP_EMBED_SOURCES, sourceMapSourceEmbedding)
|
configuration.put(JSConfigurationKeys.SOURCE_MAP_EMBED_SOURCES, sourceMapSourceEmbedding)
|
||||||
|
|
||||||
configuration.put(JSConfigurationKeys.WASM_USE_TRAPS_INSTEAD_OF_EXCEPTIONS, DISABLE_WASM_EXCEPTION_HANDLING in registeredDirectives)
|
configuration.put(JSConfigurationKeys.WASM_USE_TRAPS_INSTEAD_OF_EXCEPTIONS, DISABLE_WASM_EXCEPTION_HANDLING in registeredDirectives)
|
||||||
|
|
||||||
configuration.put(JSConfigurationKeys.WASM_TARGET, WasmTarget.JS)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,19 +60,23 @@ fun main(args: Array<String>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testGroup("wasm/wasm.tests/tests-gen", "compiler/testData", testRunnerMethodName = "runTest0") {
|
testGroup("wasm/wasm.tests/tests-gen", "compiler/testData", testRunnerMethodName = "runTest0") {
|
||||||
testClass<AbstractFirWasmCodegenBoxTest> {
|
testClass<AbstractFirWasmJsCodegenBoxTest> {
|
||||||
model("codegen/box", pattern = jsTranslatorTestPattern, excludeDirs = jvmOnlyBoxTests)
|
model("codegen/box", pattern = jsTranslatorTestPattern, excludeDirs = jvmOnlyBoxTests)
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractFirWasmCodegenBoxInlineTest> {
|
testClass<AbstractFirWasmJsCodegenBoxInlineTest> {
|
||||||
model("codegen/boxInline")
|
model("codegen/boxInline")
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractFirWasmCodegenWasmJsInteropTest> {
|
testClass<AbstractFirWasmJsCodegenInteropTest> {
|
||||||
model("codegen/boxWasmJsInterop")
|
model("codegen/boxWasmJsInterop")
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractFirWasmSteppingTest> {
|
testClass<AbstractFirWasmWasiCodegenBoxTest> {
|
||||||
|
model("codegen/boxWasmWasi")
|
||||||
|
}
|
||||||
|
|
||||||
|
testClass<AbstractFirWasmJsSteppingTest> {
|
||||||
model("debug/stepping")
|
model("debug/stepping")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,15 +18,17 @@ import org.jetbrains.kotlin.test.frontend.fir.*
|
|||||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
|
||||||
import org.jetbrains.kotlin.test.model.*
|
import org.jetbrains.kotlin.test.model.*
|
||||||
import org.jetbrains.kotlin.test.runners.codegen.commonFirHandlersForCodegenTest
|
import org.jetbrains.kotlin.test.runners.codegen.commonFirHandlersForCodegenTest
|
||||||
|
import org.jetbrains.kotlin.test.services.AdditionalSourceProvider
|
||||||
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.configuration.WasmEnvironmentConfiguratorJs
|
import org.jetbrains.kotlin.test.services.configuration.WasmEnvironmentConfiguratorJs
|
||||||
|
import org.jetbrains.kotlin.test.services.configuration.WasmEnvironmentConfiguratorWasi
|
||||||
import org.jetbrains.kotlin.wasm.test.converters.FirWasmKlibBackendFacade
|
import org.jetbrains.kotlin.wasm.test.converters.FirWasmKlibBackendFacade
|
||||||
import org.jetbrains.kotlin.wasm.test.converters.WasmBackendFacade
|
import org.jetbrains.kotlin.wasm.test.converters.WasmBackendFacade
|
||||||
|
import org.jetbrains.kotlin.wasm.test.handlers.WasiBoxRunner
|
||||||
import org.jetbrains.kotlin.wasm.test.handlers.WasmBoxRunner
|
import org.jetbrains.kotlin.wasm.test.handlers.WasmBoxRunner
|
||||||
import org.jetbrains.kotlin.wasm.test.handlers.WasmDebugRunner
|
import org.jetbrains.kotlin.wasm.test.handlers.WasmDebugRunner
|
||||||
|
|
||||||
|
abstract class AbstractFirWasmTest(
|
||||||
open class AbstractFirWasmTest(
|
|
||||||
pathToTestDir: String,
|
pathToTestDir: String,
|
||||||
testGroupOutputDirPrefix: String,
|
testGroupOutputDirPrefix: String,
|
||||||
) : AbstractWasmBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput, BinaryArtifacts.KLib>(
|
) : AbstractWasmBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput, BinaryArtifacts.KLib>(
|
||||||
@@ -44,12 +46,6 @@ open class AbstractFirWasmTest(
|
|||||||
override val afterBackendFacade: Constructor<AbstractTestFacade<BinaryArtifacts.KLib, BinaryArtifacts.Wasm>>
|
override val afterBackendFacade: Constructor<AbstractTestFacade<BinaryArtifacts.KLib, BinaryArtifacts.Wasm>>
|
||||||
get() = ::WasmBackendFacade
|
get() = ::WasmBackendFacade
|
||||||
|
|
||||||
override val wasmBoxTestRunner: Constructor<AnalysisHandler<BinaryArtifacts.Wasm>>
|
|
||||||
get() = ::WasmBoxRunner
|
|
||||||
|
|
||||||
override val wasmEnvironmentConfigurator: Constructor<EnvironmentConfigurator>
|
|
||||||
get() = ::WasmEnvironmentConfiguratorJs
|
|
||||||
|
|
||||||
override fun configure(builder: TestConfigurationBuilder) {
|
override fun configure(builder: TestConfigurationBuilder) {
|
||||||
super.configure(builder)
|
super.configure(builder)
|
||||||
with(builder) {
|
with(builder) {
|
||||||
@@ -71,7 +67,19 @@ open class AbstractFirWasmTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class AbstractFirWasmCodegenBoxTest : AbstractFirWasmTest(
|
open class AbstractFirWasmJsTest(
|
||||||
|
pathToTestDir: String,
|
||||||
|
testGroupOutputDirPrefix: String,
|
||||||
|
) : AbstractFirWasmTest(pathToTestDir, testGroupOutputDirPrefix) {
|
||||||
|
override val wasmBoxTestRunner: Constructor<AnalysisHandler<BinaryArtifacts.Wasm>>
|
||||||
|
get() = ::WasmBoxRunner
|
||||||
|
|
||||||
|
override val wasmEnvironmentConfigurator: Constructor<EnvironmentConfigurator>
|
||||||
|
get() = ::WasmEnvironmentConfiguratorJs
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
open class AbstractFirWasmJsCodegenBoxTest : AbstractFirWasmJsTest(
|
||||||
pathToTestDir = "compiler/testData/codegen/box/",
|
pathToTestDir = "compiler/testData/codegen/box/",
|
||||||
testGroupOutputDirPrefix = "codegen/firBox/"
|
testGroupOutputDirPrefix = "codegen/firBox/"
|
||||||
) {
|
) {
|
||||||
@@ -87,25 +95,25 @@ open class AbstractFirWasmCodegenBoxTest : AbstractFirWasmTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class AbstractFirWasmCodegenBoxInlineTest : AbstractFirWasmTest(
|
open class AbstractFirWasmJsCodegenBoxInlineTest : AbstractFirWasmJsTest(
|
||||||
"compiler/testData/codegen/boxInline/",
|
"compiler/testData/codegen/boxInline/",
|
||||||
"codegen/firBoxInline/"
|
"codegen/firBoxInline/"
|
||||||
)
|
)
|
||||||
|
|
||||||
open class AbstractFirWasmCodegenWasmJsInteropTest : AbstractFirWasmTest(
|
open class AbstractFirWasmJsCodegenInteropTest : AbstractFirWasmJsTest(
|
||||||
"compiler/testData/codegen/wasmJsInterop",
|
"compiler/testData/codegen/wasmJsInterop",
|
||||||
"codegen/firWasmJsInterop"
|
"codegen/firWasmJsInterop"
|
||||||
)
|
)
|
||||||
|
|
||||||
open class AbstractFirWasmJsTranslatorTest : AbstractFirWasmTest(
|
open class AbstractFirWasmJsTranslatorTest : AbstractFirWasmJsTest(
|
||||||
"js/js.translator/testData/box/",
|
"js/js.translator/testData/box/",
|
||||||
"js.translator/firBox"
|
"js.translator/firBox"
|
||||||
)
|
)
|
||||||
open class AbstractFirWasmSteppingTest : AbstractFirWasmTest(
|
|
||||||
|
open class AbstractFirWasmJsSteppingTest : AbstractFirWasmJsTest(
|
||||||
"compiler/testData/debug/stepping/",
|
"compiler/testData/debug/stepping/",
|
||||||
"debug/stepping/"
|
"debug/stepping/"
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val wasmBoxTestRunner: Constructor<AnalysisHandler<BinaryArtifacts.Wasm>>
|
override val wasmBoxTestRunner: Constructor<AnalysisHandler<BinaryArtifacts.Wasm>>
|
||||||
get() = ::WasmDebugRunner
|
get() = ::WasmDebugRunner
|
||||||
|
|
||||||
@@ -116,3 +124,33 @@ open class AbstractFirWasmSteppingTest : AbstractFirWasmTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open class AbstractFirWasmWasiTest(
|
||||||
|
pathToTestDir: String,
|
||||||
|
testGroupOutputDirPrefix: String,
|
||||||
|
) : AbstractFirWasmTest(pathToTestDir, testGroupOutputDirPrefix) {
|
||||||
|
override val wasmBoxTestRunner: Constructor<AnalysisHandler<BinaryArtifacts.Wasm>>
|
||||||
|
get() = ::WasiBoxRunner
|
||||||
|
|
||||||
|
override val wasmEnvironmentConfigurator: Constructor<EnvironmentConfigurator>
|
||||||
|
get() = ::WasmEnvironmentConfiguratorWasi
|
||||||
|
|
||||||
|
override val additionalSourceProvider: Constructor<AdditionalSourceProvider>?
|
||||||
|
get() = ::WasmWasiBoxTestHelperSourceProvider
|
||||||
|
}
|
||||||
|
|
||||||
|
open class AbstractFirWasmWasiCodegenBoxTest : AbstractFirWasmWasiTest(
|
||||||
|
pathToTestDir = "compiler/testData/codegen/box/",
|
||||||
|
testGroupOutputDirPrefix = "codegen/firWasiBox/"
|
||||||
|
) {
|
||||||
|
override fun configure(builder: TestConfigurationBuilder) {
|
||||||
|
super.configure(builder)
|
||||||
|
builder.configureFirHandlersStep {
|
||||||
|
commonFirHandlersForCodegenTest()
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.useAfterAnalysisCheckers(
|
||||||
|
::FirMetaInfoDiffSuppressor
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user