Refactor xml test in ErrorSpec

This commit is contained in:
Adrien Piquerez 2024-02-08 13:28:19 +01:00
parent 135ab16b5c
commit 245d13575a
2 changed files with 12 additions and 18 deletions

View File

@ -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 =

View File

@ -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 = <a/><b/>
|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
}