From 2aea5822b25eb8ac05d6e6c3b5d47a1a218640a5 Mon Sep 17 00:00:00 2001 From: Alexander Korepanov Date: Wed, 26 Apr 2023 13:13:53 +0200 Subject: [PATCH] [JS IR] Unmute all fir invalidation tests --- .../incremental/AbstractInvalidationTest.kt | 12 +++++-- .../FirAbstractInvalidationTest.kt | 15 +++++--- .../invalidation/constVals/lib1/l1.2.kt | 1 + .../invalidation/constVals/lib1/l1.3.kt | 3 ++ .../invalidation/constVals/lib1/module.info | 8 +++++ .../constVals/lib2/module.fir.info | 6 ++++ .../invalidation/constVals/lib2/module.info | 6 ++++ .../invalidation/constVals/main/m.kt | 18 +++++++--- .../constVals/main/module.fir.info | 12 +++++++ .../invalidation/constVals/main/module.info | 5 +++ .../invalidation/constVals/project.fir.info | 5 +++ .../invalidation/constVals/project.info | 6 ++++ .../enum/main/testEnumEntries.0.kt | 4 +++ .../lib1/module.fir.info | 34 +++++++++++++++++++ 14 files changed, 125 insertions(+), 10 deletions(-) create mode 100644 js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.2.kt create mode 100644 js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.3.kt create mode 100644 js/js.translator/testData/incremental/invalidation/constVals/lib2/module.fir.info create mode 100644 js/js.translator/testData/incremental/invalidation/constVals/main/module.fir.info create mode 100644 js/js.translator/testData/incremental/invalidation/constVals/project.fir.info create mode 100644 js/js.translator/testData/incremental/invalidation/jsCodeWithConstString/lib1/module.fir.info diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt index 3e9efbd36a0..b8aa02f57f9 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt @@ -62,6 +62,14 @@ abstract class AbstractInvalidationTest(private val targetBackend: TargetBackend private const val SOURCE_MAPPING_URL_PREFIX = "//# sourceMappingURL=" } + open fun getModuleInfoFile(directory: File): File { + return directory.resolve(MODULE_INFO_FILE) + } + + open fun getProjectInfoFile(directory: File): File { + return directory.resolve(PROJECT_INFO_FILE) + } + private val zipAccessor = ZipFileSystemCacheableAccessor(2) protected val environment = KotlinCoreEnvironment.createForParallelTests(TestDisposable(), CompilerConfiguration(), EnvironmentConfigFiles.JS_CONFIG_FILES) @@ -85,7 +93,7 @@ abstract class AbstractInvalidationTest(private val targetBackend: TargetBackend protected fun runTest(@TestDataFile testPath: String) { val testDirectory = File(testPath) val testName = testDirectory.name - val projectInfoFile = File(testDirectory, PROJECT_INFO_FILE) + val projectInfoFile = getProjectInfoFile(testDirectory) val projectInfo = parseProjectInfo(testName, projectInfoFile) if (isIgnoredTest(projectInfo)) { @@ -95,7 +103,7 @@ abstract class AbstractInvalidationTest(private val targetBackend: TargetBackend val modulesInfos = mutableMapOf() for (module in projectInfo.modules) { val moduleDirectory = File(testDirectory, module) - val moduleInfo = File(moduleDirectory, MODULE_INFO_FILE) + val moduleInfo = getModuleInfoFile(moduleDirectory) modulesInfos[module] = parseModuleInfo(module, moduleInfo) } diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/FirAbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/FirAbstractInvalidationTest.kt index eed473c7b01..3e6cc892084 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/FirAbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/FirAbstractInvalidationTest.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.cli.js.klib.serializeFirKlib import org.jetbrains.kotlin.cli.js.klib.transformFirToIr import org.jetbrains.kotlin.codegen.ProjectInfo import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.ir.backend.js.MainModule import org.jetbrains.kotlin.ir.backend.js.ModulesStructure @@ -28,10 +27,18 @@ abstract class FirAbstractInvalidationTest( targetBackend: TargetBackend, workingDirPath: String ) : AbstractInvalidationTest(targetBackend, workingDirPath) { - private val mutedTests = setOf("constVals", "enum", "jsCodeWithConstString") + private fun getFirInfoFile(defaultInfoFile: File): File { + val firInfoFileName = "${defaultInfoFile.nameWithoutExtension}.fir.${defaultInfoFile.extension}" + val firInfoFile = defaultInfoFile.parentFile.resolve(firInfoFileName) + return firInfoFile.takeIf { it.exists() } ?: defaultInfoFile + } - override fun isIgnoredTest(projectInfo: ProjectInfo): Boolean { - return super.isIgnoredTest(projectInfo) || projectInfo.name in mutedTests + override fun getModuleInfoFile(directory: File): File { + return getFirInfoFile(super.getModuleInfoFile(directory)) + } + + override fun getProjectInfoFile(directory: File): File { + return getFirInfoFile(super.getProjectInfoFile(directory)) } override fun buildKlib( diff --git a/js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.2.kt b/js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.2.kt new file mode 100644 index 00000000000..630a3c48bb9 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.2.kt @@ -0,0 +1 @@ +const val FOO = 1 diff --git a/js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.3.kt b/js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.3.kt new file mode 100644 index 00000000000..ad022b34a11 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/constVals/lib1/l1.3.kt @@ -0,0 +1,3 @@ +private const val BAR = 2 + +const val FOO = 1 + BAR diff --git a/js/js.translator/testData/incremental/invalidation/constVals/lib1/module.info b/js/js.translator/testData/incremental/invalidation/constVals/lib1/module.info index b00df4e0597..41f12c33ce1 100644 --- a/js/js.translator/testData/incremental/invalidation/constVals/lib1/module.info +++ b/js/js.translator/testData/incremental/invalidation/constVals/lib1/module.info @@ -4,3 +4,11 @@ STEP 1: modifications: U : l1.1.kt -> l1.kt modified ir: l1.kt +STEP 2: + modifications: + U : l1.2.kt -> l1.kt + modified ir: l1.kt +STEP 3: + modifications: + U : l1.3.kt -> l1.kt + modified ir: l1.kt diff --git a/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.fir.info b/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.fir.info new file mode 100644 index 00000000000..ffcfa284d8d --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.fir.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: lib1 + added file: l2.kt +STEP 1..3: + dependencies: lib1 + modified ir: l2.kt diff --git a/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.info b/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.info index e3581e75e4a..72ca3da6d4c 100644 --- a/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.info +++ b/js/js.translator/testData/incremental/invalidation/constVals/lib2/module.info @@ -4,3 +4,9 @@ STEP 0: STEP 1: dependencies: lib1 updated imports: l2.kt +STEP 2: + dependencies: lib1 + modified ir: l2.kt +STEP 3: + dependencies: lib1 + updated imports: l2.kt diff --git a/js/js.translator/testData/incremental/invalidation/constVals/main/m.kt b/js/js.translator/testData/incremental/invalidation/constVals/main/m.kt index 80750527285..f23dc7de326 100644 --- a/js/js.translator/testData/incremental/invalidation/constVals/main/m.kt +++ b/js/js.translator/testData/incremental/invalidation/constVals/main/m.kt @@ -1,12 +1,22 @@ fun box(stepId: Int): String { + val q: Any = qux() + val b: Any = bar() when (stepId) { 0 -> { - if (qux() != "FOO") return "Fail qux" - if (bar() != "FOO") return "Fail bar" + if (q != "FOO") return "Fail qux" + if (b != "FOO") return "Fail bar" } 1 -> { - if (qux() != "BAR") return "Fail qux" - if (bar() != "BAR") return "Fail bar" + if (q != "BAR") return "Fail qux" + if (b != "BAR") return "Fail bar" + } + 2 -> { + if (q != 1) return "Fail qux" + if (b != 1) return "Fail bar" + } + 3 -> { + if (q != 3) return "Fail qux" + if (b != 3) return "Fail bar" } else -> return "Unknown" } diff --git a/js/js.translator/testData/incremental/invalidation/constVals/main/module.fir.info b/js/js.translator/testData/incremental/invalidation/constVals/main/module.fir.info new file mode 100644 index 00000000000..97de44f5c94 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/constVals/main/module.fir.info @@ -0,0 +1,12 @@ +STEP 0: + dependencies: lib1, lib2 + added file: m.kt +STEP 1: + dependencies: lib1, lib2 + updated imports: m.kt +STEP 2: + dependencies: lib1, lib2 + modified ir: m.kt +STEP 3: + dependencies: lib1, lib2 + updated imports: m.kt diff --git a/js/js.translator/testData/incremental/invalidation/constVals/main/module.info b/js/js.translator/testData/incremental/invalidation/constVals/main/module.info index 406ec8bd244..d5d8f7eb364 100644 --- a/js/js.translator/testData/incremental/invalidation/constVals/main/module.info +++ b/js/js.translator/testData/incremental/invalidation/constVals/main/module.info @@ -3,3 +3,8 @@ STEP 0: added file: m.kt STEP 1: dependencies: lib1, lib2 +STEP 2: + dependencies: lib1, lib2 + modified ir: m.kt +STEP 3: + dependencies: lib1, lib2 diff --git a/js/js.translator/testData/incremental/invalidation/constVals/project.fir.info b/js/js.translator/testData/incremental/invalidation/constVals/project.fir.info new file mode 100644 index 00000000000..2b72f8c741f --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/constVals/project.fir.info @@ -0,0 +1,5 @@ +MODULES: lib1, lib2, main + +STEP 0..3: + libs: lib1, lib2, main + dirty js: lib1, lib2, main diff --git a/js/js.translator/testData/incremental/invalidation/constVals/project.info b/js/js.translator/testData/incremental/invalidation/constVals/project.info index f1968258cbd..872df0ac75d 100644 --- a/js/js.translator/testData/incremental/invalidation/constVals/project.info +++ b/js/js.translator/testData/incremental/invalidation/constVals/project.info @@ -6,3 +6,9 @@ STEP 0: STEP 1: libs: lib1, lib2, main dirty js: lib1, lib2 +STEP 2: + libs: lib1, lib2, main + dirty js: lib1, lib2, main +STEP 3: + libs: lib1, lib2, main + dirty js: lib1, lib2 diff --git a/js/js.translator/testData/incremental/invalidation/enum/main/testEnumEntries.0.kt b/js/js.translator/testData/incremental/invalidation/enum/main/testEnumEntries.0.kt index d2c34c1c2cf..15c2069bc9d 100644 --- a/js/js.translator/testData/incremental/invalidation/enum/main/testEnumEntries.0.kt +++ b/js/js.translator/testData/incremental/invalidation/enum/main/testEnumEntries.0.kt @@ -1,4 +1,8 @@ @kotlin.ExperimentalStdlibApi fun testEnumEntries(stepId: Int): Boolean { + when (stepId) { + 0, 1, 2, 3 -> return true + else -> return false + } return true } diff --git a/js/js.translator/testData/incremental/invalidation/jsCodeWithConstString/lib1/module.fir.info b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstString/lib1/module.fir.info new file mode 100644 index 00000000000..0e2dbbc8b88 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/jsCodeWithConstString/lib1/module.fir.info @@ -0,0 +1,34 @@ +STEP 0: + modifications: + U : l1.0.kt -> l1.kt + U : js.0.kt -> js.kt + U : test.0.kt -> test.kt + added file: l1.kt, js.kt, test.kt +STEP 1: + modifications: + U : js.1.kt -> js.kt + modified ir: js.kt +STEP 2: + modifications: + U : js.2.kt -> js.kt + modified ir: js.kt +STEP 3: + modifications: + U : l1.3.kt -> l1.kt + modified ir: l1.kt, js.kt +STEP 4: + modifications: + U : test.4.kt -> test.kt + modified ir: test.kt +STEP 5: + modifications: + U : l1.5.kt -> l1.kt + modified ir: l1.kt, js.kt +STEP 6: + modifications: + U : js.6.kt -> js.kt + modified ir: js.kt +STEP 7: + modifications: + U : l1.7.kt -> l1.kt + modified ir: l1.kt, js.kt