From fde7fc695184d93dde004bf7daa274402c2527e5 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 21 Sep 2020 19:50:10 +0200 Subject: [PATCH] JVM IR: use correct file for final test output check in debugger tests Before this change, a test with incorrect .ir.out could pass if the test execution result was equivalent to the main .out file, which was a bit confusing. --- .../debugger/test/KotlinDescriptorTestCase.kt | 15 +++++++++------ .../debugger/test/util/KotlinOutputChecker.kt | 12 +++--------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt index 2e25f4e3a6b..4198b178c5b 100644 --- a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt +++ b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt @@ -9,8 +9,6 @@ import com.intellij.debugger.impl.DescriptorTestCase import com.intellij.debugger.impl.OutputChecker import com.intellij.execution.configurations.JavaParameters import com.intellij.execution.process.ProcessOutputTypes -import com.intellij.jarRepository.JarRepositoryManager -import com.intellij.jarRepository.RemoteRepositoryDescription import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.ModifiableRootModel import com.intellij.openapi.roots.ModuleRootManager @@ -23,7 +21,6 @@ import com.intellij.openapi.vfs.VfsUtil import com.intellij.psi.PsiFile import com.intellij.testFramework.EdtTestUtil import com.intellij.xdebugger.XDebugSession -import org.jetbrains.idea.maven.aether.ArtifactKind import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches @@ -38,7 +35,6 @@ import org.jetbrains.kotlin.test.KotlinBaseTest.TestFile import org.jetbrains.kotlin.test.testFramework.runWriteAction import org.junit.ComparisonFailure import java.io.File -import org.jetbrains.jps.model.library.JpsMavenRepositoryLibraryDescriptor as JpsMavenRepositoryLibraryDescriptor internal const val KOTLIN_LIBRARY_NAME = "KotlinLibrary" internal const val TEST_LIBRARY_NAME = "TestLibrary" @@ -153,7 +149,7 @@ abstract class KotlinDescriptorTestCase : DescriptorTestCase() { abstract fun doMultiFileTest(files: TestFiles, preferences: DebuggerPreferences) override fun initOutputChecker(): OutputChecker { - return KotlinOutputChecker(getTestDirectoryPath(), testAppPath, appOutputPath, useIrBackend()) + return KotlinOutputChecker(getTestDirectoryPath(), testAppPath, appOutputPath, useIrBackend(), getExpectedOutputFile()) } override fun setUpModule() { @@ -220,9 +216,16 @@ abstract class KotlinDescriptorTestCase : DescriptorTestCase() { try { super.checkTestOutput() } catch (e: ComparisonFailure) { - KotlinTestUtils.assertEqualsToFile(File(getTestDirectoryPath(), getTestName(true) + ".out"), e.actual) + KotlinTestUtils.assertEqualsToFile(getExpectedOutputFile(), e.actual) } + } + private fun getExpectedOutputFile(): File { + if (useIrBackend()) { + val irOut = File(getTestDirectoryPath(), getTestName(true) + ".ir.out") + if (irOut.exists()) return irOut + } + return File(getTestDirectoryPath(), getTestName(true) + ".out") } override fun getData(dataId: String): Any? { diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/util/KotlinOutputChecker.kt b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/util/KotlinOutputChecker.kt index 9388c7f8ed8..3b1e152514f 100644 --- a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/util/KotlinOutputChecker.kt +++ b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/util/KotlinOutputChecker.kt @@ -24,7 +24,8 @@ internal class KotlinOutputChecker( private val testDir: String, appPath: String, outputPath: String, - private val useIrBackend: Boolean + private val useIrBackend: Boolean, + private val expectedOutputFile: File, ) : OutputChecker(appPath, outputPath) { companion object { @JvmStatic @@ -58,14 +59,7 @@ internal class KotlinOutputChecker( val actual = preprocessBuffer(buildOutputString()) val outDir = File(testDir) - var outFile = File(outDir, "$myTestName.out") - - if (useIrBackend) { - val irBackendOutFile = File(outDir, "$myTestName.ir.out") - if (irBackendOutFile.exists()) { - outFile = irBackendOutFile - } - } + var outFile = expectedOutputFile if (!outFile.exists()) { if (SystemInfo.isWindows) {