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() makeSimpleConfigurationWithTestImport()
} }
val output = captureOut { val output = captureOut {
BasicJvmScriptingHost().eval(script.toScriptSource(), compilationConfiguration, null).throwOnFailure() BasicJvmScriptingHost().eval(script.toScriptSource(), compilationConfiguration, null).throwOnFailure().throwOnExceptionResult()
}.lines() }.lines()
Assert.assertEquals(greeting, output) Assert.assertEquals(greeting, output)
} }
@@ -354,7 +354,7 @@ class ScriptingHostTest : TestCase() {
} }
} }
val output = captureOut { val output = captureOut {
BasicJvmScriptingHost().eval(mainScript, compilationConfiguration, evaluationConfiguration).throwOnFailure() BasicJvmScriptingHost().eval(mainScript, compilationConfiguration, evaluationConfiguration).throwOnFailure().throwOnExceptionResult()
}.lines() }.lines()
return output 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<*> = private fun evalScript(script: String, host: BasicScriptingHost = BasicJvmScriptingHost()): ResultWithDiagnostics<*> =
evalScriptWithConfiguration(script, host) evalScriptWithConfiguration(script, host)
@@ -97,7 +97,7 @@ class ScriptTest : TestCase() {
return (extraInt(metadata) as Int) and JvmAnnotationNames.METADATA_SCRIPT_FLAG != 0 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()) assertTrue("Script class SHOULD have the metadata flag set", scriptClass.isFlagSet())
assertFalse( assertFalse(
"Non-script class in a script should NOT have the metadata flag set", "Non-script class in a script should NOT have the metadata flag set",