[K/JS] test: add @file:JsExport tests for each @JsExport test + auto-generate TypeScript export tests.
This commit is contained in:
@@ -156,6 +156,41 @@ val unzipJsShell by task<Copy> {
|
||||
val testDataDir = project(":js:js.translator").projectDir.resolve("testData")
|
||||
val typescriptTestsDir = testDataDir.resolve("typescript-export")
|
||||
|
||||
val generateJsExportOnFileTestFilesForTS by task<Copy> {
|
||||
val exportFileDirPostfix = "-in-exported-file"
|
||||
|
||||
from(typescriptTestsDir) {
|
||||
include("**/*.kt")
|
||||
include("**/*.ts")
|
||||
include("**/tsconfig.json")
|
||||
exclude("selective-export/*")
|
||||
exclude("implicit-export/*")
|
||||
exclude("inheritance/*")
|
||||
exclude("strict-implicit-export/*")
|
||||
exclude("*$exportFileDirPostfix")
|
||||
|
||||
eachFile {
|
||||
path = "${relativePath.parent}$exportFileDirPostfix/$name"
|
||||
|
||||
var isFirstLine = true
|
||||
filter {
|
||||
when {
|
||||
isFirstLine && name.endsWith(".kt") -> "/** This file is generated by {@link :js:js.test:generateJsExportOnFileTestFilesForTS} task. DO NOT MODIFY MANUALLY */\n\n$it"
|
||||
.also { isFirstLine = false }
|
||||
|
||||
it.contains("// FILE") -> "$it\n\n@file:JsExport"
|
||||
else -> it.replace("@JsExport", "")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
into(typescriptTestsDir)
|
||||
}
|
||||
|
||||
|
||||
val installTsDependencies = task<NpmTask>("installTsDependencies") {
|
||||
workingDir.set(testDataDir)
|
||||
args.set(listOf("install"))
|
||||
@@ -314,6 +349,7 @@ testsJar {}
|
||||
|
||||
val generateTests by generator("org.jetbrains.kotlin.generators.tests.GenerateJsTestsKt") {
|
||||
dependsOn(":compiler:generateTestData")
|
||||
dependsOn(generateJsExportOnFileTestFilesForTS)
|
||||
}
|
||||
|
||||
val prepareMochaTestData by tasks.registering(Copy::class) {
|
||||
|
||||
Reference in New Issue
Block a user