izumi.distage.testkit.services.scalatest.dstest
ScalatestLinearizedTestReporter
Companion object ScalatestLinearizedTestReporter
class ScalatestLinearizedTestReporter extends TestReporter
Serialises ScalaTest test events on a per-suite, per-test basis so that downstream
reporters see a strict TestStarting → terminator → TestStarting → terminator …
sequence within each suite.
This is required by several downstream ScalaTest reporters that pair-walk events
within a suite and either throw RuntimeException("unexpected …") or otherwise
corrupt their output when concurrent intra-suite test events interleave (distage
testkit runs tests with parallelTests = Parallelism.Unlimited by default —
see TestConfig.scala:79-82). The exception is silently swallowed by
org.scalatest.CatchReporter:34-44, so the failure mode is "per-suite output
file silently absent" rather than a crash — observed as JUnit XML test undercount.
Reporters that REQUIRE this serialisation (pair-walkers):
org.scalatest.tools.JUnitXmlReporter.processTest:284-345(throws on stray test events)org.scalatest.tools.XmlReporter:129-172, 467-469(same pattern)org.scalatest.tools.DashboardReporter.SuiteRecord.toXml:720-738andTestRecord.addEvent:764-779(throws on terminator without preceding start)
Reporters that BENEFIT (better-grouped output) but do not strictly require it:
org.scalatest.tools.HtmlReporter:1027-1083— counter-style aggregation, tolerates interleaving but renders nicer with linearised events- Intellij's reporter (the original motivation for this class)
Reporters that are unaffected (per-event sinks):
- All
StringReporter-family sinks (PrintReporter,FileReporter,StandardOutReporter,StandardErrReporter) MemoryReporter,FilterReporter,SbtDispatchReporter,SocketReporter,XmlSocketReporter
- Alphabetic
- By Inheritance
- ScalatestLinearizedTestReporter
- TestReporter
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ScalatestLinearizedTestReporter(underlying: TestReporter)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def beginLevel(scope: ScopeId, depth: Int, suites: List[SuiteMeta]): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def beginScope(id: ScopeId): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def beginSuite(scopeId: ScopeId, depth: Int, suiteMeta: SuiteMeta): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def endLevel(scope: ScopeId, depth: Int, suites: List[SuiteMeta]): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def endScope(id: ScopeId): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def endSuite(scopeId: ScopeId, depth: Int, suiteMeta: SuiteMeta): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def testSetupStatus(scope: ScopeId, depth: Int, meta: FullMeta, testStatus: Setup): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def testStatus(scope: ScopeId, depth: Int, meta: FullMeta, testStatus: TestStatus): Unit
- Definition Classes
- ScalatestLinearizedTestReporter → TestReporter
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()