Merge pull request #3262 from dwijnand/test-spam

Drop test spam.
This commit is contained in:
eugene yokota 2017-06-16 11:06:32 -04:00 committed by GitHub
commit 7909052513
2 changed files with 46 additions and 26 deletions

View File

@ -21,8 +21,9 @@ trait TestReportListener {
/** called if test completed */
def endGroup(name: String, result: TestResult): Unit
/** Used by the test framework for logging test results*/
/** Used by the test framework for logging test results */
def contentLogger(test: TestDefinition): Option[ContentLogger] = None
}
final class ContentLogger(val log: TLogger, val flush: () => Unit)
@ -32,8 +33,9 @@ trait TestsListener extends TestReportListener {
/** called once, at beginning. */
def doInit(): Unit
/** called once, at end. */
/** called once, at end of the test group. */
def doComplete(finalResult: TestResult): Unit
}
/** Provides the overall `result` of a group of tests (a suite) and test counts for each result type. */
@ -84,8 +86,10 @@ object SuiteResult {
count(TStatus.Pending)
)
}
val Error: SuiteResult = new SuiteResult(TestResult.Error, 0, 0, 0, 0, 0, 0, 0)
val Empty: SuiteResult = new SuiteResult(TestResult.Passed, 0, 0, 0, 0, 0, 0, 0)
}
abstract class TestEvent {

View File

@ -16,16 +16,17 @@ object TestLogger {
case a: TestStringEvent => List(a.value)
})
private def generateName: String =
"test-" + generateId.incrementAndGet
private def generateName: String = "test-" + generateId.incrementAndGet
private val generateId: AtomicInteger = new AtomicInteger
private def generateBufferName: String =
"testbuffer-" + generateBufferId.incrementAndGet
private def generateBufferName: String = "testbuffer-" + generateBufferId.incrementAndGet
private val generateBufferId: AtomicInteger = new AtomicInteger
final class PerTest private[sbt] (val log: ManagedLogger,
val flush: () => Unit,
val buffered: Boolean)
final class PerTest private[sbt] (
val log: ManagedLogger,
val flush: () => Unit,
val buffered: Boolean
)
def make(global: ManagedLogger, perTest: TestDefinition => PerTest): TestLogger = {
def makePerTest(tdef: TestDefinition): ContentLogger = {
@ -34,7 +35,7 @@ object TestLogger {
val config = LogExchange.loggerConfig(l0.name)
val as = config.getAppenders.asScala
val buffs: List[BufferedAppender] = (as map {
case (k, v) => BufferedAppender(generateBufferName, v)
case (_, v) => BufferedAppender(generateBufferName, v)
}).toList
val newLog = LogExchange.logger(generateName, l0.channelName, l0.execId)
LogExchange.bindLoggerAppenders(newLog.name, buffs map { x =>
@ -52,7 +53,21 @@ object TestLogger {
}
)
}
global.registerStringCodec[TestStringEvent]
def showNoLines[A] = ShowLines[A](_ => Nil)
implicit val showNoLinesTestInitEvent = showNoLines[TestInitEvent]
implicit val showNoLinesStartTestGroupEvent = showNoLines[StartTestGroupEvent]
implicit val showNoLinesTestItemEvent = showNoLines[TestItemEvent]
implicit val showNoLinesEndTestGroupEvent = showNoLines[EndTestGroupEvent]
implicit val showNoLinesTestCompleteEvent = showNoLines[TestCompleteEvent]
global.registerStringCodec[TestInitEvent]
global.registerStringCodec[StartTestGroupEvent]
global.registerStringCodec[TestItemEvent]
global.registerStringCodec[EndTestGroupEvent]
global.registerStringCodec[TestCompleteEvent]
val config = new TestLogging(wrap(global), global, makePerTest)
new TestLogger(config)
}
@ -91,25 +106,26 @@ class TestLogger(val logging: TestLogging) extends TestsListener {
import logging.{ global => log, logTest, managed }
import sbt.protocol.testing.codec.JsonProtocol._
def startGroup(name: String): Unit =
managed.logEvent(Level.Info, StartTestGroupEvent(name))
def testEvent(event: TestEvent): Unit =
managed.logEvent(Level.Info, toTestItemEvent(event))
def endGroup(name: String, t: Throwable): Unit = {
log.trace(t)
log.error("Could not run test " + name + ": " + t.toString)
managed.logEvent(Level.Info,
EndTestGroupErrorEvent(
name,
t.getMessage + "\n" + t.getStackTrace.toList.mkString("\n")
))
}
def endGroup(name: String, result: TestResult): Unit =
managed.logEvent(Level.Info, EndTestGroupEvent(name, result))
def doInit: Unit = managed.logEvent(Level.Info, TestInitEvent())
/** called once, at end of test group. */
def startGroup(name: String): Unit = managed.logEvent(Level.Info, StartTestGroupEvent(name))
def testEvent(event: TestEvent): Unit = managed.logEvent(Level.Info, toTestItemEvent(event))
def endGroup(name: String, result: TestResult): Unit =
managed.logEvent(Level.Info, EndTestGroupEvent(name, result))
def endGroup(name: String, t: Throwable): Unit = {
log.trace(t)
log.error(s"Could not run test $name: $t")
managed.logEvent(
Level.Info,
EndTestGroupErrorEvent(name, (t.getMessage +: t.getStackTrace).mkString("\n"))
)
}
def doComplete(finalResult: TestResult): Unit =
managed.logEvent(Level.Info, TestCompleteEvent(finalResult))
override def contentLogger(test: TestDefinition): Option[ContentLogger] = Some(logTest(test))
}