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.
This commit is contained in:
+9
-6
@@ -9,8 +9,6 @@ import com.intellij.debugger.impl.DescriptorTestCase
|
|||||||
import com.intellij.debugger.impl.OutputChecker
|
import com.intellij.debugger.impl.OutputChecker
|
||||||
import com.intellij.execution.configurations.JavaParameters
|
import com.intellij.execution.configurations.JavaParameters
|
||||||
import com.intellij.execution.process.ProcessOutputTypes
|
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.LibraryOrderEntry
|
||||||
import com.intellij.openapi.roots.ModifiableRootModel
|
import com.intellij.openapi.roots.ModifiableRootModel
|
||||||
import com.intellij.openapi.roots.ModuleRootManager
|
import com.intellij.openapi.roots.ModuleRootManager
|
||||||
@@ -23,7 +21,6 @@ import com.intellij.openapi.vfs.VfsUtil
|
|||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.testFramework.EdtTestUtil
|
import com.intellij.testFramework.EdtTestUtil
|
||||||
import com.intellij.xdebugger.XDebugSession
|
import com.intellij.xdebugger.XDebugSession
|
||||||
import org.jetbrains.idea.maven.aether.ArtifactKind
|
|
||||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches
|
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.jetbrains.kotlin.test.testFramework.runWriteAction
|
||||||
import org.junit.ComparisonFailure
|
import org.junit.ComparisonFailure
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import org.jetbrains.jps.model.library.JpsMavenRepositoryLibraryDescriptor as JpsMavenRepositoryLibraryDescriptor
|
|
||||||
|
|
||||||
internal const val KOTLIN_LIBRARY_NAME = "KotlinLibrary"
|
internal const val KOTLIN_LIBRARY_NAME = "KotlinLibrary"
|
||||||
internal const val TEST_LIBRARY_NAME = "TestLibrary"
|
internal const val TEST_LIBRARY_NAME = "TestLibrary"
|
||||||
@@ -153,7 +149,7 @@ abstract class KotlinDescriptorTestCase : DescriptorTestCase() {
|
|||||||
abstract fun doMultiFileTest(files: TestFiles, preferences: DebuggerPreferences)
|
abstract fun doMultiFileTest(files: TestFiles, preferences: DebuggerPreferences)
|
||||||
|
|
||||||
override fun initOutputChecker(): OutputChecker {
|
override fun initOutputChecker(): OutputChecker {
|
||||||
return KotlinOutputChecker(getTestDirectoryPath(), testAppPath, appOutputPath, useIrBackend())
|
return KotlinOutputChecker(getTestDirectoryPath(), testAppPath, appOutputPath, useIrBackend(), getExpectedOutputFile())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setUpModule() {
|
override fun setUpModule() {
|
||||||
@@ -220,9 +216,16 @@ abstract class KotlinDescriptorTestCase : DescriptorTestCase() {
|
|||||||
try {
|
try {
|
||||||
super.checkTestOutput()
|
super.checkTestOutput()
|
||||||
} catch (e: ComparisonFailure) {
|
} 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? {
|
override fun getData(dataId: String): Any? {
|
||||||
|
|||||||
+3
-9
@@ -24,7 +24,8 @@ internal class KotlinOutputChecker(
|
|||||||
private val testDir: String,
|
private val testDir: String,
|
||||||
appPath: String,
|
appPath: String,
|
||||||
outputPath: String,
|
outputPath: String,
|
||||||
private val useIrBackend: Boolean
|
private val useIrBackend: Boolean,
|
||||||
|
private val expectedOutputFile: File,
|
||||||
) : OutputChecker(appPath, outputPath) {
|
) : OutputChecker(appPath, outputPath) {
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -58,14 +59,7 @@ internal class KotlinOutputChecker(
|
|||||||
val actual = preprocessBuffer(buildOutputString())
|
val actual = preprocessBuffer(buildOutputString())
|
||||||
|
|
||||||
val outDir = File(testDir)
|
val outDir = File(testDir)
|
||||||
var outFile = File(outDir, "$myTestName.out")
|
var outFile = expectedOutputFile
|
||||||
|
|
||||||
if (useIrBackend) {
|
|
||||||
val irBackendOutFile = File(outDir, "$myTestName.ir.out")
|
|
||||||
if (irBackendOutFile.exists()) {
|
|
||||||
outFile = irBackendOutFile
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!outFile.exists()) {
|
if (!outFile.exists()) {
|
||||||
if (SystemInfo.isWindows) {
|
if (SystemInfo.isWindows) {
|
||||||
|
|||||||
Reference in New Issue
Block a user