From e92ba43b3f257f6dd4ec8c07997f325a5a22edf5 Mon Sep 17 00:00:00 2001 From: Eugene Vigdorchik Date: Wed, 7 Mar 2012 12:28:40 +0400 Subject: [PATCH] Add API dependency tracking to testQuickFilter. --- main/Defaults.scala | 9 ++++++++- testing/TestStatusReporter.scala | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/main/Defaults.scala b/main/Defaults.scala index eb850f5ad..61a18108f 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -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" diff --git a/testing/TestStatusReporter.scala b/testing/TestStatusReporter.scala index f619d9717..b9e695c42 100644 --- a/testing/TestStatusReporter.scala +++ b/testing/TestStatusReporter.scala @@ -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