From 30131e289fbebd9159d475f7e1b7cdfb689724e5 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 27 Apr 2023 17:53:50 +0200 Subject: [PATCH] minor: improve tests failure reporting --- .../jvmhost/test/ScriptingHostTest.kt | 15 +++++++++++++-- .../kotlin/scripting/compiler/test/ScriptTest.kt | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt b/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt index 480d0a58891..1611e59bf92 100644 --- a/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt +++ b/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt @@ -197,7 +197,7 @@ class ScriptingHostTest : TestCase() { makeSimpleConfigurationWithTestImport() } val output = captureOut { - BasicJvmScriptingHost().eval(script.toScriptSource(), compilationConfiguration, null).throwOnFailure() + BasicJvmScriptingHost().eval(script.toScriptSource(), compilationConfiguration, null).throwOnFailure().throwOnExceptionResult() }.lines() Assert.assertEquals(greeting, output) } @@ -354,7 +354,7 @@ class ScriptingHostTest : TestCase() { } } val output = captureOut { - BasicJvmScriptingHost().eval(mainScript, compilationConfiguration, evaluationConfiguration).throwOnFailure() + BasicJvmScriptingHost().eval(mainScript, compilationConfiguration, evaluationConfiguration).throwOnFailure().throwOnExceptionResult() }.lines() return output } @@ -572,6 +572,17 @@ fun ResultWithDiagnostics.throwOnFailure(): ResultWithDiagnostics = ap } } +fun ResultWithDiagnostics.throwOnExceptionResult(): ResultWithDiagnostics = apply { + if (this is ResultWithDiagnostics.Success) { + val result = (this.value as? EvaluationResult) + val error = (result?.returnValue as? ResultValue.Error)?.error + if (error != null) throw Exception( + "Evaluation failed:\n ${reports.joinToString("\n ") { it.exception?.toString() ?: it.message }}", + error + ) + } +} + private fun evalScript(script: String, host: BasicScriptingHost = BasicJvmScriptingHost()): ResultWithDiagnostics<*> = evalScriptWithConfiguration(script, host) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt index 0fc0bdac2e6..de3f5943680 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt @@ -97,7 +97,7 @@ class ScriptTest : TestCase() { return (extraInt(metadata) as Int) and JvmAnnotationNames.METADATA_SCRIPT_FLAG != 0 } - val scriptClass = compileScript("metadata_flag.kts", StandardScriptDefinition)!! + val scriptClass = compileScript("metadata_flag.kts", StandardScriptDefinition) ?: throw AssertionError("compilation failed") assertTrue("Script class SHOULD have the metadata flag set", scriptClass.isFlagSet()) assertFalse( "Non-script class in a script should NOT have the metadata flag set",