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) =>
|
case (analysis, dir) =>
|
||||||
val succeeded = new TestResultFilter(succeededFile(dir))
|
val succeeded = new TestResultFilter(succeededFile(dir))
|
||||||
args => test => selectedFilter(args)(test) && {
|
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"
|
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)
|
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
|
private object TestStatus
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue