[JS IR] Unmute all fir invalidation tests

This commit is contained in:
Alexander Korepanov
2023-04-26 13:13:53 +02:00
committed by Space Team
parent 9da9c95105
commit 2aea5822b2
14 changed files with 125 additions and 10 deletions
@@ -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<String, ModuleInfo>()
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)
}
@@ -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(
@@ -0,0 +1 @@
const val FOO = 1
@@ -0,0 +1,3 @@
private const val BAR = 2
const val FOO = 1 + BAR
@@ -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
@@ -0,0 +1,6 @@
STEP 0:
dependencies: lib1
added file: l2.kt
STEP 1..3:
dependencies: lib1
modified ir: l2.kt
@@ -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
@@ -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"
}
@@ -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
@@ -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
@@ -0,0 +1,5 @@
MODULES: lib1, lib2, main
STEP 0..3:
libs: lib1, lib2, main
dirty js: lib1, lib2, main
@@ -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
@@ -1,4 +1,8 @@
@kotlin.ExperimentalStdlibApi
fun testEnumEntries(stepId: Int): Boolean {
when (stepId) {
0, 1, 2, 3 -> return true
else -> return false
}
return true
}
@@ -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