[K/Wasm] Generate .d.ts tests for K/Wasm in the same way as we do for K/JS ^KT-65778 Fixed

This commit is contained in:
Artem Kobzar
2024-03-05 15:33:56 +00:00
committed by Space Team
parent c2023142f5
commit 8d4948c3ee
310 changed files with 1643 additions and 1370 deletions
@@ -113,5 +113,15 @@ fun main(args: Array<String>) {
model("debug/stepping")
}
}
testGroup("wasm/wasm.tests/tests-gen", "js/js.translator/testData", testRunnerMethodName = "runTest0") {
testClass<AbstractFirWasmTypeScriptExportTest> {
model("typescript-export/wasm/")
}
testClass<AbstractK1WasmTypeScriptExportTest> {
model("typescript-export/wasm/")
}
}
}
}
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
import org.jetbrains.kotlin.test.model.*
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.WasmEnvironmentConfiguratorJs
import org.jetbrains.kotlin.wasm.test.converters.FirWasmKlibBackendFacade
import org.jetbrains.kotlin.wasm.test.converters.WasmBackendFacade
@@ -81,4 +82,28 @@ open class AbstractK1WasmSteppingTest : AbstractK1WasmTest(
+WasmEnvironmentConfigurationDirectives.GENERATE_SOURCE_MAP
}
}
}
}
open class AbstractK1WasmTypeScriptExportTest : AbstractK1WasmTest(
"${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/typescript-export/wasm/",
"typescript-export/"
) {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.defaultDirectives {
+WasmEnvironmentConfigurationDirectives.CHECK_TYPESCRIPT_DECLARATIONS
}
}
}
open class AbstractFirWasmTypeScriptExportTest : AbstractK1WasmTest(
"${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/typescript-export/wasm/",
"typescript-export/"
) {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.defaultDirectives {
+WasmEnvironmentConfigurationDirectives.CHECK_TYPESCRIPT_DECLARATIONS
}
}
}
@@ -56,6 +56,14 @@ abstract class AbstractWasmArtifactsCollector(testServices: TestServices) : Wasm
mjsFiles += AdditionalFile(it.name, it.readText())
}
originalFile.parentFile.resolve(originalFile.nameWithoutExtension + "__main${JavaScript.DOT_EXTENSION}")
.takeIf { it.exists() }
?.let {
entryMjs = it.name
mjsFiles += AdditionalFile(it.name, it.readText())
}
return JsArtifacts(entryMjs, jsFiles, mjsFiles)
}
@@ -21,8 +21,9 @@ class WasmDtsHandler(testServices: TestServices) : WasmBinaryArtifactHandler(tes
val globalDirectives = testServices.moduleStructure.allDirectives
if (WasmEnvironmentConfigurationDirectives.CHECK_TYPESCRIPT_DECLARATIONS !in globalDirectives) return
val referenceDtsFile = module.files.first().originalFile.withReplacedExtensionOrNull(".kt", ".d.ts")
?: error("Can't find reference .d.ts file")
val referenceDtsFile = module.files.first().originalFile.parentFile
.resolve("index.d.mts")
.run { takeIf { it.exists() } ?: error("'${path}' doesn't exist") }
val generatedDts = info.compilerResult.dts
?: error("Can't find generated .d.ts file")