From d2b64cd481780018a969732e6a2aae4303c8b974 Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Wed, 14 Jun 2023 09:26:18 +0000 Subject: [PATCH] [K/JS] Generate .js files from .ts if they were not created, because of the `incremental` flag in tsconfig The incremental option will prevent creating file if there is an incremental cache from TS compiler even if the file doesn't exist. The situation could happen if `./gradlew clean` was executed (js file will be removed and ts incremental cache - not) Merge-request: KT-MR-10229 Merged-by: Artem Kobzar --- js/js.tests/build.gradle.kts | 26 ++++++++++++++----- .../typescript-export/common.tsconfig.json | 1 - 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts index 050f4b6fc93..47b1ce364b8 100644 --- a/js/js.tests/build.gradle.kts +++ b/js/js.tests/build.gradle.kts @@ -109,8 +109,10 @@ val testDataDir = project(":js:js.translator").projectDir.resolve("testData") val typescriptTestsDir = testDataDir.resolve("typescript-export") val installTsDependencies = task("installTsDependencies") { + val packageLockFile = testDataDir.resolve("package-lock.json") inputs.file(testDataDir.resolve("package.json")) - outputs.file(testDataDir.resolve("package-lock.json")) + outputs.file(packageLockFile) + outputs.upToDateWhen { packageLockFile.exists() } workingDir.set(testDataDir) args.set(listOf("install")) @@ -172,17 +174,26 @@ fun generateJsExportOnFileTestFor(dir: String): Task = task("generate-js-e } fun generateTypeScriptTestFor(dir: String): Task = task("generate-ts-for-$dir") { - val baseDir = fileTree(typescriptTestsDir.resolve(dir)) + val baseDir = typescriptTestsDir.resolve(dir) + val mainTsFile = fileTree(baseDir).files.find { it.name.endsWith("__main.ts") } ?: return@task + val mainJsFile = baseDir.resolve("${mainTsFile.nameWithoutExtension}.js") workingDir.set(testDataDir) - inputs.files(baseDir.include("*.ts")) - outputs.files(baseDir.include("*.js")) + + inputs.file(mainTsFile) + outputs.file(mainJsFile) + outputs.upToDateWhen { mainJsFile.exists() } + args.set(listOf("run", "generateTypeScriptTests", "--", "./typescript-export/$dir/tsconfig.json")) } val generateTypeScriptTests by parallel( beforeAll = installTsDependencies, - tasksToRun = typescriptTestsDir.listFiles { it: File -> it.isDirectory } + tasksToRun = typescriptTestsDir.listFiles { it: File -> + it.isDirectory && + !it.path.endsWith("module-systems") && + !it.path.endsWith("module-systems-in-exported-file") + } .map { generateTypeScriptTestFor(it.name) } ) @@ -409,8 +420,11 @@ val prepareNpmTestData by task { } val npmInstall by tasks.getting(NpmTask::class) { + val packageLockFile = testDataDir.resolve("package-lock.json") + inputs.file(nodeDir.resolve("package.json")) - outputs.file(testDataDir.resolve("package-lock.json")) + outputs.file(packageLockFile) + outputs.upToDateWhen { packageLockFile.exists() } workingDir.set(nodeDir) dependsOn(prepareNpmTestData) diff --git a/js/js.translator/testData/typescript-export/common.tsconfig.json b/js/js.translator/testData/typescript-export/common.tsconfig.json index 1da85620cc0..7a6773bd2f4 100644 --- a/js/js.translator/testData/typescript-export/common.tsconfig.json +++ b/js/js.translator/testData/typescript-export/common.tsconfig.json @@ -2,7 +2,6 @@ "compilerOptions": { "target": "es5", "strict": true, - "incremental": true, "newLine": "lf" } } \ No newline at end of file