mirror of https://github.com/sbt/sbt.git
Add API dependency tracking to testQuickFilter.
This commit is contained in:
parent
cef766046d
commit
e92ba43b3f
|
|
@ -327,7 +327,14 @@ object Defaults extends BuildCommon
|
|||
case (analysis, dir) =>
|
||||
val succeeded = new TestResultFilter(succeededFile(dir))
|
||||
args => test => selectedFilter(args)(test) && {
|
||||
!succeeded(test) // Add recompilation status.
|
||||
succeeded(test) match {
|
||||
case None => true
|
||||
case Some(ts) =>
|
||||
import analysis.{relations => rel, apis}
|
||||
rel.definesClass(test) flatMap {
|
||||
f => (rel.internalSrcDeps(f) map apis.internal) ++ (rel.externalDeps(f) map apis.external)
|
||||
} exists (_.compilation.startTime > ts)
|
||||
}
|
||||
}
|
||||
}
|
||||
def succeededFile(dir: File) = dir / "succeeded_tests"
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@ private[sbt] class TestStatusReporter(f: File) extends TestsListener
|
|||
}
|
||||
}
|
||||
|
||||
private[sbt] class TestResultFilter(f: File) extends (String => Boolean) with NotNull
|
||||
private[sbt] class TestResultFilter(f: File) extends NotNull
|
||||
{
|
||||
private lazy val succeeded = TestStatus.read(f)
|
||||
def apply(test: String) = succeeded.contains(test)
|
||||
def apply(test: String): Option[Long] = succeeded.get(test)
|
||||
}
|
||||
|
||||
private object TestStatus
|
||||
|
|
|
|||
Loading…
Reference in New Issue