diff --git a/buildfile/src/main/scala/sbt/internal/parser/SbtParser.scala b/buildfile/src/main/scala/sbt/internal/parser/SbtParser.scala index d9c0cb904..e96ee7844 100644 --- a/buildfile/src/main/scala/sbt/internal/parser/SbtParser.scala +++ b/buildfile/src/main/scala/sbt/internal/parser/SbtParser.scala @@ -39,7 +39,7 @@ private[sbt] object SbtParser: val END_OF_LINE_CHAR = '\n' val END_OF_LINE = String.valueOf(END_OF_LINE_CHAR) private[parser] val NOT_FOUND_INDEX = -1 - private[sbt] val FAKE_FILE = VirtualFileRef.of("fake") // new File("fake") + private[sbt] val FAKE_FILE = VirtualFileRef.of("fake") private[parser] val XML_ERROR = "';' expected but 'val' found." private val XmlErrorMessage = diff --git a/buildfile/src/test/scala/sbt/internal/parser/ErrorSpec.scala b/buildfile/src/test/scala/sbt/internal/parser/ErrorSpec.scala index 2e2d1f717..ac94032e1 100644 --- a/buildfile/src/test/scala/sbt/internal/parser/ErrorSpec.scala +++ b/buildfile/src/test/scala/sbt/internal/parser/ErrorSpec.scala @@ -29,30 +29,24 @@ object ErrorSpec extends AbstractSpec { print(s"Processing ${file.getFileName}: ") val vf = converter.toVirtualFile(file) - val buildSbt = Source.fromFile(file.toUri).getLines.mkString("\n") - val message = - interceptMessageException(SbtParser(vf, buildSbt.linesIterator.toSeq)).getMessage + val buildSbt = Source.fromFile(file.toUri).getLines.toSeq + val message = interceptMessageException(SbtParser(vf, buildSbt)) println(message) assert(message.contains(file.getFileName.toString)) containsLineNumber(message) } } - test("it should handle xml error") { - try { - val buildSbt = - """ + test("xml error") { + val buildSbt = + """ |val a = |val s = ' """.stripMargin - SbtParser(SbtParser.FAKE_FILE, buildSbt.linesIterator.toSeq) - // sys.error("not supposed to reach here") - } catch { - case exp: MessageOnlyException => - val message = exp.getMessage - println(s"${exp.getMessage}") - assert(message.contains(SbtParser.FAKE_FILE.id())) - } + val message = + interceptMessageException(SbtParser(SbtParser.FAKE_FILE, buildSbt.linesIterator.toSeq)) + println(message) + assert(message.contains(SbtParser.FAKE_FILE.id)) } private def containsLineNumber(message: String) = @@ -60,9 +54,9 @@ object ErrorSpec extends AbstractSpec { private def interceptMessageException(callback: => Unit)(using pos: SourceLocation - ): MessageOnlyException = + ): String = try callback throw new AssertionError(s"$pos: expected a MessageOnlyException to be thrown") - catch case ex: MessageOnlyException => ex + catch case ex: MessageOnlyException => ex.getMessage }