Kotlinp: add "test can be unmuted" error to K2 tests

This commit is contained in:
Alexander Udalov
2023-06-21 19:37:11 +02:00
committed by Space Team
parent 3366366361
commit 1be0fcb53a
3 changed files with 26 additions and 7 deletions
@@ -12,7 +12,7 @@ abstract class AbstractKotlinpTest : TestCaseWithTmpdir() {
abstract fun useK2(): Boolean
protected fun doTest(fileName: String) {
compileAndPrintAllFiles(
compareAllFiles(
File(fileName),
testRootDisposable,
tmpdir,
@@ -25,7 +25,7 @@ class KotlinpCompilerTestDataTest(private val file: File) {
val disposable = TestDisposable()
try {
compileAndPrintAllFiles(file, disposable, tmpdir, compareWithTxt = false, readWriteAndCompare = true, useK2 = false)
compareAllFiles(file, disposable, tmpdir, compareWithTxt = false, readWriteAndCompare = true, useK2 = false)
} finally {
Disposer.dispose(disposable)
}
@@ -14,7 +14,8 @@ import org.jetbrains.kotlin.checkers.setupLanguageVersionSettingsForCompilerTest
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.codegen.GenerationUtils
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest
import org.jetbrains.kotlin.kotlinp.Kotlinp
import org.jetbrains.kotlin.kotlinp.KotlinpSettings
@@ -26,18 +27,36 @@ import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
import kotlin.test.fail
fun compileAndPrintAllFiles(
private const val IGNORE_K2_DIRECTIVE = "// IGNORE K2"
fun compareAllFiles(
file: File,
disposable: Disposable,
tmpdir: File,
compareWithTxt: Boolean,
readWriteAndCompare: Boolean,
useK2: Boolean
useK2: Boolean,
) {
if (useK2 && InTextDirectivesUtils.findStringWithPrefixes(file.readText(), "// IGNORE K2") != null) {
return
val isMutedForK2 = useK2 && InTextDirectivesUtils.findStringWithPrefixes(file.readText(), IGNORE_K2_DIRECTIVE) != null
try {
compileAndPrintAllFiles(file, disposable, tmpdir, compareWithTxt, readWriteAndCompare, useK2)
} catch (e: Throwable) {
if (isMutedForK2) return
throw e
}
if (isMutedForK2) {
throw AssertionError("Looks like this test can be unmuted. Remove the \"$IGNORE_K2_DIRECTIVE\" directive.")
}
}
private fun compileAndPrintAllFiles(
file: File,
disposable: Disposable,
tmpdir: File,
compareWithTxt: Boolean,
readWriteAndCompare: Boolean,
useK2: Boolean,
) {
val main = StringBuilder()
val afterVisitors = StringBuilder()
val afterNodes = StringBuilder()