Skip to content

Commit 203c967

Browse files
committed
Add rudimentary logging logic for the test-runner
1 parent 032868a commit 203c967

File tree

3 files changed

+41
-18
lines changed

3 files changed

+41
-18
lines changed

modules/test-runner/src/main/scala/scala/build/testrunner/DynamicTestRunner.scala

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.build.testrunner
22

3-
import sbt.testing._
3+
import sbt.testing.{Logger => SbtTestLogger, _}
44

55
import java.lang.annotation.Annotation
66
import java.lang.reflect.Modifier
@@ -214,6 +214,8 @@ object DynamicTestRunner {
214214
parse(None, Nil, false, 0, None, args.toList)
215215
}
216216

217+
val logger = Logger(verbosity)
218+
217219
val classLoader = Thread.currentThread().getContextClassLoader
218220
val classPath0 = TestRunner.classPath(classLoader)
219221
val frameworks = testFrameworkOpt
@@ -239,25 +241,25 @@ object DynamicTestRunner {
239241
s"${f.name()} (${Option(f.getClass.getCanonicalName).getOrElse(f.toString)})"
240242

241243
val foundFrameworkServices = findFrameworkServices(classLoader)
242-
if (verbosity >= 2 && foundFrameworkServices.nonEmpty)
243-
System.err.println(
244+
if (foundFrameworkServices.nonEmpty)
245+
logger.debug(
244246
s"""Found test framework services:
245247
| - ${foundFrameworkServices.map(getFrameworkDescription).mkString("\n - ")}
246248
|""".stripMargin
247249
)
248250

249251
val foundFrameworks =
250252
findFrameworks(classPath0, classLoader, TestRunner.commonTestFrameworks)
251-
if (verbosity >= 2 && foundFrameworks.nonEmpty)
252-
System.err.println(
253+
if (foundFrameworks.nonEmpty)
254+
logger.debug(
253255
s"""Found test frameworks:
254256
| - ${foundFrameworks.map(getFrameworkDescription).mkString("\n - ")}
255257
|""".stripMargin
256258
)
257259

258260
val distinctFrameworks = distinctBy(foundFrameworkServices ++ foundFrameworks)(_.name())
259-
if (verbosity >= 2 && distinctFrameworks.nonEmpty)
260-
System.err.println(
261+
if (distinctFrameworks.nonEmpty)
262+
logger.debug(
261263
s"""Distinct test frameworks found (by framework name):
262264
| - ${distinctFrameworks.map(getFrameworkDescription).mkString("\n - ")}
263265
|""".stripMargin
@@ -272,16 +274,16 @@ object DynamicTestRunner {
272274
f1.getClass.isAssignableFrom(f2.getClass)
273275
)
274276
)
275-
if (verbosity >= 1 && finalFrameworks.nonEmpty)
276-
System.err.println(
277+
if (finalFrameworks.nonEmpty)
278+
logger.log(
277279
s"""Final list of test frameworks found:
278280
| - ${finalFrameworks.map(getFrameworkDescription).mkString("\n - ")}
279281
|""".stripMargin
280282
)
281283

282284
val skippedInheritedFrameworks = distinctFrameworks.diff(finalFrameworks)
283-
if (verbosity >= 1 && skippedInheritedFrameworks.nonEmpty)
284-
System.err.println(
285+
if (skippedInheritedFrameworks.nonEmpty)
286+
logger.log(
285287
s"""The following test frameworks have been filtered out, as they're being inherited from by others:
286288
| - ${skippedInheritedFrameworks.map(getFrameworkDescription).mkString("\n - ")}
287289
|""".stripMargin
@@ -304,7 +306,7 @@ object DynamicTestRunner {
304306
val exitCodes =
305307
frameworks
306308
.map { framework =>
307-
if (verbosity >= 1) System.err.println(s"Running test framework: ${framework.name}")
309+
logger.log(s"Running test framework: ${framework.name}")
308310
val fingerprints = framework.fingerprints()
309311
val runner = framework.runner(args0.toArray, Array(), classLoader)
310312

@@ -336,15 +338,15 @@ object DynamicTestRunner {
336338
val doneMsg = runner.done()
337339
if (doneMsg.nonEmpty) out.println(doneMsg)
338340
if (requireTests && events.isEmpty) {
339-
System.err.println(s"Error: no tests were run for ${framework.name()}.")
341+
logger.error(s"Error: no tests were run for ${framework.name()}.")
340342
1
341343
}
342344
else if (failed) {
343-
System.err.println(s"Error: ${framework.name()} tests failed.")
345+
logger.error(s"Error: ${framework.name()} tests failed.")
344346
1
345347
}
346348
else {
347-
if (verbosity >= 1) System.err.println(s"${framework.name()} tests ran successfully.")
349+
logger.log(s"${framework.name()} tests ran successfully.")
348350
0
349351
}
350352
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package scala.build.testrunner
2+
3+
import java.io.PrintStream
4+
5+
class Logger(val verbosity: Int, out: PrintStream) {
6+
def error(message: String): Unit = out.println(message)
7+
8+
def message(message: => String): Unit = if (verbosity >= 0) out.println(message)
9+
10+
def log(message: => String): Unit = if (verbosity >= 1) out.println(message)
11+
def log(message: => String, debugMessage: => String): Unit =
12+
if (verbosity >= 2) out.println(debugMessage)
13+
else if (verbosity >= 1) out.println(message)
14+
15+
def debug(message: => String): Unit = if (verbosity >= 2) out.println(message)
16+
}
17+
18+
object Logger {
19+
def apply(verbosity: Int, out: PrintStream) = new Logger(verbosity, out)
20+
def apply(verbosity: Int) = new Logger(verbosity, out = System.err)
21+
}

modules/test-runner/src/main/scala/scala/build/testrunner/TestRunner.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.build.testrunner
22

3-
import sbt.testing._
3+
import sbt.testing.{Logger => SbtTestLogger, _}
44

55
import java.io.{File, PrintStream}
66
import java.nio.file.{Path, Paths}
@@ -49,8 +49,8 @@ object TestRunner {
4949

5050
val events = mutable.Buffer.empty[Event]
5151

52-
val logger: Logger =
53-
new Logger {
52+
val logger: SbtTestLogger =
53+
new SbtTestLogger {
5454
def error(msg: String) = out.println(msg)
5555
def warn(msg: String) = out.println(msg)
5656
def info(msg: String) = out.println(msg)

0 commit comments

Comments
 (0)