diff --git a/modules/scala/integration/src/main/scala/almond/integration/KernelTestsDefinitions.scala b/modules/scala/integration/src/main/scala/almond/integration/KernelTestsDefinitions.scala index 7715b4f9f..d6da46194 100644 --- a/modules/scala/integration/src/main/scala/almond/integration/KernelTestsDefinitions.scala +++ b/modules/scala/integration/src/main/scala/almond/integration/KernelTestsDefinitions.scala @@ -110,4 +110,11 @@ abstract class KernelTestsDefinitions extends AlmondFunSuite { } } + test("compilation error") { + kernelLauncher.withKernel { implicit runner => + implicit val sessionId: SessionId = SessionId() + almond.integration.Tests.compilationError(kernelLauncher.defaultScalaVersion) + } + } + } diff --git a/modules/scala/scala-interpreter/src/main/scala/almond/Execute.scala b/modules/scala/scala-interpreter/src/main/scala/almond/Execute.scala index 8a7bc0c85..68f648dcb 100644 --- a/modules/scala/scala-interpreter/src/main/scala/almond/Execute.scala +++ b/modules/scala/scala-interpreter/src/main/scala/almond/Execute.scala @@ -106,11 +106,11 @@ final class Execute( capture0.out, capture0.err, resultStream, - s => currentPublishOpt0.fold(Console.err.println(s))(_.stderr(s)), - s => currentPublishOpt0.fold(Console.err.println(s))(_.stderr(s)), + s => currentPublishOpt0.fold(Console.err.println(s))(_.stderr(s + System.lineSeparator())), + s => currentPublishOpt0.fold(Console.err.println(s))(_.stderr(s + System.lineSeparator())), // to stdout in notebooks, not to get a red background, // but stderr in the console, not to pollute stdout - s => currentPublishOpt0.fold(Console.err.println(s))(_.stdout(s)) + s => currentPublishOpt0.fold(Console.err.println(s))(_.stdout(s + System.lineSeparator())) ) def history: History = diff --git a/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala b/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala index 0fdbdc620..9fb19e5e7 100644 --- a/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala +++ b/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala @@ -687,4 +687,59 @@ object Tests { } } + def compilationError(scalaVersion: String)(implicit + sessionId: SessionId, + runner: Runner + ): Unit = { + + val errorOutput = + if (scalaVersion.startsWith("2.")) + """cell1.sc:2: not found: value foo + | foo + | ^ + |cell1.sc:3: not found: value bar + | bar + | ^ + |cell1.sc:4: not found: value other + | other + | ^ + |Compilation Failed""".stripMargin + else + """-- [E006] Not Found Error: cell1.sc:2:2 ---------------------------------------- + |2 | foo + | | ^^^ + | | Not found: foo + | | + | | longer explanation available when compiling with `-explain` + |-- [E006] Not Found Error: cell1.sc:3:2 ---------------------------------------- + |3 | bar + | | ^^^ + | | Not found: bar + | | + | | longer explanation available when compiling with `-explain` + |-- [E006] Not Found Error: cell1.sc:4:2 ---------------------------------------- + |4 | other + | | ^^^^^ + | | Not found: other + | | + | | longer explanation available when compiling with `-explain` + |Compilation Failed""".stripMargin + + runner.withSession() { implicit session => + execute( + """val n = { + | foo + | bar + | other + |} + |""".stripMargin, + expectError = true, + stderr = errorOutput, + errors = Seq( + ("", "Compilation Failed", List("Compilation Failed")) + ) + ) + } + } + }