aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/scala/org/perl8/test/Test.scala
blob: 436719cdfc7e3f4a5165d00c6e50ca55c71ace47 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package org.perl8.test

/** Base trait for test classes in this framework. Any tests that should be
  * autodiscovered by `sbt test` should extend this trait, and implement
  * [[runTests]].
  */
trait Test {
  /** Runs the test. The TAP stream will be written to Console.out and
    * Console.err, so you can swap these out as required in order to parse it.
    */
  def run: Int =
    runTests(false)

  /** Runs the test just like [[run]], but in a way that makes sense when test
   *  results are being summarized rather than directly displayed.
   *
   *  Summarizing test reporters tend to repeatedly update the same line on
   *  the terminal, so this method makes calls to
   *  [[tap.TestBuilder#diag diag]] (which sends messages to stderr, where
   *  they are typically displayed as-is) prefix the message with a newline,
   *  to ensure that the output starts on its own line.
   */
  def runInHarness: Int =
    runTests(true)

  protected def runTests (terminalInUse: Boolean): Int
}