From c8d087d744dfa780c9ecdbba9782ad8ddae9e91c Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 16 Sep 2019 10:50:19 +0300 Subject: [PATCH] [FIR] Tests. Save failed tests into testdata --- .../fir/AbstractFirDiagnosticsSmokeTest.kt | 27 ++++++++++++++++--- ...localReturnInsidePropertyAccessor.fir.fail | 2 ++ 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/controlStructures/localReturnInsidePropertyAccessor.fir.fail diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt index 04292006af7..25abf2eae98 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices +import org.jetbrains.kotlin.test.KotlinTestUtils import java.io.File import java.util.* @@ -88,9 +89,19 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() { } } - doFirResolveTestBench(firFiles, FirTotalResolveTransformer().transformers, gc = false) - - checkResultingFirFiles(firFiles, testDataFile) + val failure: AssertionError? = try { + doFirResolveTestBench(firFiles, FirTotalResolveTransformer().transformers, gc = false) + null + } catch (e: AssertionError) { + e + } + val failureFile = File(testDataFile.path.replace(".kt", ".fir.fail")) + if (failure == null) { + checkResultingFirFiles(firFiles, testDataFile) + assertFalse("Test is good but there is expected exception", failureFile.exists()) + } else { + checkFailureFile(failure, failureFile) + } } protected open fun checkResultingFirFiles( @@ -100,6 +111,16 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() { } + private fun checkFailureFile(failure: AssertionError, failureFile: File) { + val failureMessage = buildString { + appendln(failure.message) + failure.cause?.let { + append("Cause: ") + appendln(it) + } + } + KotlinTestUtils.assertEqualsToFile(failureFile, failureMessage) + } private fun createModules( groupedByModule: Map> diff --git a/compiler/testData/diagnostics/tests/controlStructures/localReturnInsidePropertyAccessor.fir.fail b/compiler/testData/diagnostics/tests/controlStructures/localReturnInsidePropertyAccessor.fir.fail new file mode 100644 index 00000000000..d94cf374132 --- /dev/null +++ b/compiler/testData/diagnostics/tests/controlStructures/localReturnInsidePropertyAccessor.fir.fail @@ -0,0 +1,2 @@ +Failures detected in FirImplicitTypeBodyResolveTransformerAdapter, file: /localReturnInsidePropertyAccessor.kt +Cause: kotlin.KotlinNullPointerException