minor: improve tests failure reporting

This commit is contained in:
Ilya Chernikov
2023-04-27 17:53:50 +02:00
committed by Space Team
parent 7db9f9c3ae
commit 30131e289f
2 changed files with 14 additions and 3 deletions
@@ -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 <T> ResultWithDiagnostics<T>.throwOnFailure(): ResultWithDiagnostics<T> = ap
}
}
fun <T> ResultWithDiagnostics<T>.throwOnExceptionResult(): ResultWithDiagnostics<T> = 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)