Add test for in-memory file

This commit is contained in:
Eugene Yokota 2021-03-06 14:29:20 -05:00
parent ff6cbf2e1f
commit 8a2083cb03
2 changed files with 41 additions and 38 deletions

View File

@ -1,22 +1,24 @@
import sbt.internal.util.ConsoleAppender import sbt.internal.util.ConsoleAppender
import sbt.internal.inc.StringVirtualFile
import xsbti.compile.CompileOptions
extraAppenders := { s => Seq(ConsoleAppender(FakePrintWriter)) } lazy val assertEmptySourcePositionMappers = taskKey[Unit]("checks that sourcePositionMappers is empty")
lazy val assertAbsolutePathConversion = taskKey[Unit]("checks source mappers convert to absolute path")
lazy val assertVirtualFile = taskKey[Unit]("checks source mappers handle virtual files")
lazy val resetMessages = taskKey[Unit]("empties the messages list")
val assertEmptySourcePositionMappers = taskKey[Unit]("checks that sourcePositionMappers is empty") lazy val root = (project in file("."))
.settings(
val assertAbsolutePathConversion = taskKey[Unit]("checks source mappers convert to absolute path") extraAppenders := { s => Seq(ConsoleAppender(FakePrintWriter)) },
Compile / compile / compileOptions ~= { old: CompileOptions =>
val assertVirtualFile = taskKey[Unit]("checks source mappers handle virtual files") old.withSources(StringVirtualFile("<>::A.scala",
"""object X""") +: old.sources) },
val resetMessages = taskKey[Unit]("empties the messages list") assertEmptySourcePositionMappers := {
assertEmptySourcePositionMappers := {
assert { assert {
sourcePositionMappers.value.isEmpty sourcePositionMappers.value.isEmpty
} }
} },
assertAbsolutePathConversion := {
assertAbsolutePathConversion := {
val source = (Compile/sources).value.head val source = (Compile/sources).value.head
assert { assert {
FakePrintWriter.messages.exists(_.contains(s"${source.getAbsolutePath}:3:15: comparing values of types Int and String using `==` will always yield false")) FakePrintWriter.messages.exists(_.contains(s"${source.getAbsolutePath}:3:15: comparing values of types Int and String using `==` will always yield false"))
@ -24,9 +26,8 @@ assertAbsolutePathConversion := {
assert { assert {
FakePrintWriter.messages.forall(!_.contains("${BASE}")) FakePrintWriter.messages.forall(!_.contains("${BASE}"))
} }
} },
assertVirtualFile := {
assertVirtualFile := {
val source = (Compile/sources).value.head val source = (Compile/sources).value.head
assert { assert {
FakePrintWriter.messages.exists(_.contains("${BASE}/src/main/scala/Foo.scala:3:15: comparing values of types Int and String using `==` will always yield false")) FakePrintWriter.messages.exists(_.contains("${BASE}/src/main/scala/Foo.scala:3:15: comparing values of types Int and String using `==` will always yield false"))
@ -34,8 +35,8 @@ assertVirtualFile := {
assert { assert {
FakePrintWriter.messages.forall(!_.contains(source.getAbsolutePath)) FakePrintWriter.messages.forall(!_.contains(source.getAbsolutePath))
} }
} },
resetMessages := {
resetMessages := {
FakePrintWriter.resetMessages FakePrintWriter.resetMessages
} }
)

View File

@ -1,3 +1,5 @@
> compile
> assertEmptySourcePositionMappers > assertEmptySourcePositionMappers
> printWarnings > printWarnings