diff --git a/src/test/scala/leon/regression/testcases/TestCasesCompile.scala b/src/test/scala/leon/regression/testcases/TestCasesCompile.scala index 64367b70d408c5cc36684ea4bc68879db5101fb0..994a619013f38a6ce51e1b15fcdf9d5ef49cc763 100644 --- a/src/test/scala/leon/regression/testcases/TestCasesCompile.scala +++ b/src/test/scala/leon/regression/testcases/TestCasesCompile.scala @@ -39,8 +39,8 @@ class TestCasesCompile extends LeonRegressionSuite { try { pipeline.run(ctx, List(f.getAbsolutePath)) } catch { - case _: LeonFatalError => - fail(" Failed to compile "+name) + case fe: LeonFatalError => + fail(ctx, s"Failed to compile $name", fe) } } } diff --git a/src/test/scala/leon/regression/verification/VerificationSuite.scala b/src/test/scala/leon/regression/verification/VerificationSuite.scala index dd8b088795734c45d54009ad9ce16bf9de6bc0ef..2460d7791394e727d0d368a18f0482ddcf16bd44 100644 --- a/src/test/scala/leon/regression/verification/VerificationSuite.scala +++ b/src/test/scala/leon/regression/verification/VerificationSuite.scala @@ -66,16 +66,10 @@ trait VerificationSuite extends LeonRegressionSuite { } } } catch { - case _: LeonFatalError => - ctx.reporter match { - case sr: TestSilentReporter => - println("Unexpected fatal error:") - for (e <- sr.lastErrors) { - println(" "+e) - } - case _ => + case fe: LeonFatalError => + test("Compilation") { + fail(ctx, "Unexpected fatal error while setting up tests", fe) } - test("Compilation of test files in " + testDir + cat)(fail("Failed to compile")) } } diff --git a/src/test/scala/leon/test/LeonRegressionSuite.scala b/src/test/scala/leon/test/LeonRegressionSuite.scala index 929c2be3b2120e73d12426bd296ffb1411e25399..941cb9b90e6587a219ad33a4d40366d948af9260 100644 --- a/src/test/scala/leon/test/LeonRegressionSuite.scala +++ b/src/test/scala/leon/test/LeonRegressionSuite.scala @@ -39,7 +39,7 @@ trait LeonRegressionSuite extends FunSuite with Timeouts { } protected val all : String=>Boolean = (s : String) => true - + def scanFilesIn(f: File, filter: String=>Boolean = all, recursive: Boolean = false): Iterable[File] = { Option(f.listFiles()).getOrElse(Array()).flatMap{f => if (f.isDirectory && recursive) { @@ -56,4 +56,21 @@ trait LeonRegressionSuite extends FunSuite with Timeouts { scanFilesIn(baseDir, filter, recursive) } + + protected def fail(ctx: LeonContext, reason: String, fe: LeonFatalError): Nothing = { + val omsg = ctx.reporter match { + case sr: TestSilentReporter => + sr.lastErrors ++= fe.msg + Some((sr.lastErrors ++ fe.msg).mkString("\n")) + case _ => + fe.msg + } + + val fullError = omsg match { + case Some(msg) => s"$reason:\n$msg" + case None => s"$reason" + } + + throw new TestFailedException(fullError, fe, 5) + } }