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,41 +1,42 @@
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 := {
assert {
assertEmptySourcePositionMappers := { sourcePositionMappers.value.isEmpty
assert { }
sourcePositionMappers.value.isEmpty },
} assertAbsolutePathConversion := {
} val source = (Compile/sources).value.head
assert {
assertAbsolutePathConversion := { FakePrintWriter.messages.exists(_.contains(s"${source.getAbsolutePath}:3:15: comparing values of types Int and String using `==` will always yield false"))
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.forall(!_.contains("${BASE}"))
} }
assert { },
FakePrintWriter.messages.forall(!_.contains("${BASE}")) assertVirtualFile := {
} val source = (Compile/sources).value.head
} 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"))
assertVirtualFile := { }
val source = (Compile/sources).value.head assert {
assert { FakePrintWriter.messages.forall(!_.contains(source.getAbsolutePath))
FakePrintWriter.messages.exists(_.contains("${BASE}/src/main/scala/Foo.scala:3:15: comparing values of types Int and String using `==` will always yield false")) }
} },
assert { resetMessages := {
FakePrintWriter.messages.forall(!_.contains(source.getAbsolutePath)) FakePrintWriter.resetMessages
} }
} )
resetMessages := {
FakePrintWriter.resetMessages
}

View File

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