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.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")
val assertAbsolutePathConversion = taskKey[Unit]("checks source mappers convert to absolute path")
val assertVirtualFile = taskKey[Unit]("checks source mappers handle virtual files")
val resetMessages = taskKey[Unit]("empties the messages list")
assertEmptySourcePositionMappers := {
assert {
sourcePositionMappers.value.isEmpty
}
}
assertAbsolutePathConversion := {
val source = (Compile/sources).value.head
assert {
FakePrintWriter.messages.exists(_.contains(s"${source.getAbsolutePath}:3:15: comparing values of types Int and String using `==` will always yield false"))
}
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"))
}
assert {
FakePrintWriter.messages.forall(!_.contains(source.getAbsolutePath))
}
}
resetMessages := {
FakePrintWriter.resetMessages
}
lazy val root = (project in file("."))
.settings(
extraAppenders := { s => Seq(ConsoleAppender(FakePrintWriter)) },
Compile / compile / compileOptions ~= { old: CompileOptions =>
old.withSources(StringVirtualFile("<>::A.scala",
"""object X""") +: old.sources) },
assertEmptySourcePositionMappers := {
assert {
sourcePositionMappers.value.isEmpty
}
},
assertAbsolutePathConversion := {
val source = (Compile/sources).value.head
assert {
FakePrintWriter.messages.exists(_.contains(s"${source.getAbsolutePath}:3:15: comparing values of types Int and String using `==` will always yield false"))
}
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"))
}
assert {
FakePrintWriter.messages.forall(!_.contains(source.getAbsolutePath))
}
},
resetMessages := {
FakePrintWriter.resetMessages
}
)

View File

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