From 0c156f0da3d14cb40df5c1c51d3b23b6f9854705 Mon Sep 17 00:00:00 2001 From: Kamil Podsiadlo Date: Sat, 22 Jan 2022 11:54:09 +0100 Subject: [PATCH] refactor: unify usage of parens for Scala 3 Scala 3 doesn't allow to call method with parentheses without them. Normally class can extends trait/interface and overwrite their def's using val/override val no matter if def was declared with or without parentheses. However for Scala 3 this is no llonger true. This PR uses a workaround with underscores. --- .../src/main/scala/munit/Framework.scala | 6 ++--- .../junitinterface/CustomFingerprint.scala | 3 ++- .../internal/junitinterface/JUnitEvent.scala | 17 +++++++++----- .../junitinterface/JUnitFramework.scala | 2 +- .../junitinterface/JUnitReporter.scala | 4 ++-- .../internal/junitinterface/JUnitRunner.scala | 22 +++++++++++++------ .../internal/junitinterface/JUnitTask.scala | 9 ++++---- 7 files changed, 39 insertions(+), 24 deletions(-) diff --git a/munit/non-jvm/src/main/scala/munit/Framework.scala b/munit/non-jvm/src/main/scala/munit/Framework.scala index 6bbc0a76..e994efe4 100644 --- a/munit/non-jvm/src/main/scala/munit/Framework.scala +++ b/munit/non-jvm/src/main/scala/munit/Framework.scala @@ -5,12 +5,12 @@ import munit.internal.junitinterface.CustomRunners import munit.internal.junitinterface.JUnitFramework class Framework extends JUnitFramework { - override val name = "munit" - val munitFingerprint = new CustomFingerprint("munit.Suite", isModule = false) + override def name(): String = "munit" + val munitFingerprint = new CustomFingerprint("munit.Suite", _isModule = false) val customRunners = new CustomRunners( List( munitFingerprint, - new CustomFingerprint("munit.Suite", isModule = true) + new CustomFingerprint("munit.Suite", _isModule = true) ) ) } diff --git a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/CustomFingerprint.scala b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/CustomFingerprint.scala index 6d8e1aea..1d845208 100644 --- a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/CustomFingerprint.scala +++ b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/CustomFingerprint.scala @@ -4,8 +4,9 @@ import sbt.testing.SubclassFingerprint class CustomFingerprint( val suite: String, - val isModule: Boolean + _isModule: Boolean ) extends SubclassFingerprint { + override def isModule(): Boolean = _isModule override def superclassName(): String = suite override def requireNoArgConstructor(): Boolean = true } diff --git a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitEvent.scala b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitEvent.scala index 291b9c59..cf033e85 100644 --- a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitEvent.scala +++ b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitEvent.scala @@ -8,11 +8,16 @@ import sbt.testing._ final class JUnitEvent( taskDef: TaskDef, - val fullyQualifiedName: String, - val status: Status, - val selector: Selector, - val throwable: OptionalThrowable = new OptionalThrowable, - val duration: Long = -1L + _fullyQualifiedName: String, + _status: Status, + _selector: Selector, + _throwable: OptionalThrowable = new OptionalThrowable, + _duration: Long = -1L ) extends Event { - def fingerprint: Fingerprint = taskDef.fingerprint + override def status(): Status = _status + override def selector(): Selector = _selector + override def throwable(): OptionalThrowable = _throwable + override def duration(): Long = _duration + override def fullyQualifiedName(): String = _fullyQualifiedName + override def fingerprint(): Fingerprint = taskDef.fingerprint() } diff --git a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitFramework.scala b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitFramework.scala index 1ea9510e..c35d0192 100644 --- a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitFramework.scala +++ b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitFramework.scala @@ -8,7 +8,7 @@ import sbt.testing._ abstract class JUnitFramework extends Framework { - val name: String = "Scala.js JUnit test framework" + override def name(): String = "Scala.js JUnit test framework" def customRunners: CustomRunners diff --git a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitReporter.scala b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitReporter.scala index a88d60eb..be7e5a2c 100644 --- a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitReporter.scala +++ b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitReporter.scala @@ -91,7 +91,7 @@ final class JUnitReporter( throwable: OptionalThrowable = new OptionalThrowable ): Unit = { val testName = - taskDef.fullyQualifiedName + "." + + taskDef.fullyQualifiedName() + "." + settings.decodeName(method) val selector = new TestSelector(testName) eventHandler.handle( @@ -215,7 +215,7 @@ final class JUnitReporter( private def findTestFileName(trace: Array[StackTraceElement]): String = trace - .find(_.getClassName == taskDef.fullyQualifiedName) + .find(_.getClassName == taskDef.fullyQualifiedName()) .map(_.getFileName) .orNull diff --git a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitRunner.scala b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitRunner.scala index 43eb1294..59cef135 100644 --- a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitRunner.scala +++ b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitRunner.scala @@ -9,23 +9,31 @@ import munit.internal.PlatformCompat final class JUnitRunner( val args: Array[String], - val remoteArgs: Array[String], + _remoteArgs: Array[String], runSettings: RunSettings, classLoader: ClassLoader, customRunners: CustomRunners ) extends Runner { PlatformCompat.setThisClassLoader(classLoader) - def tasks(taskDefs: Array[TaskDef]): Array[Task] = + override def remoteArgs(): Array[String] = _remoteArgs + + override def tasks(taskDefs: Array[TaskDef]): Array[Task] = taskDefs.map(new JUnitTask(_, runSettings, classLoader)) - def done(): String = "" + override def done(): String = "" - def serializeTask(task: Task, serializer: TaskDef => String): String = - serializer(task.taskDef) + override def serializeTask( + task: Task, + serializer: TaskDef => String + ): String = + serializer(task.taskDef()) - def deserializeTask(task: String, deserializer: String => TaskDef): Task = + override def deserializeTask( + task: String, + deserializer: String => TaskDef + ): Task = new JUnitTask(deserializer(task), runSettings, classLoader) - def receiveMessage(msg: String): Option[String] = None + override def receiveMessage(msg: String): Option[String] = None } diff --git a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitTask.scala b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitTask.scala index d866a8af..780b768f 100644 --- a/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitTask.scala +++ b/munit/non-jvm/src/main/scala/munit/internal/junitinterface/JUnitTask.scala @@ -16,12 +16,13 @@ import scala.concurrent.ExecutionContext.Implicits.global * under the hood and stay consistent with JVM JUnit. */ final class JUnitTask( - val taskDef: TaskDef, + _taskDef: TaskDef, runSettings: RunSettings, classLoader: ClassLoader ) extends Task { - def tags: Array[String] = Array.empty + override def taskDef(): TaskDef = _taskDef + override def tags(): Array[String] = Array.empty def execute( eventHandler: EventHandler, @@ -36,12 +37,12 @@ final class JUnitTask( loggers: Array[Logger], continuation: Array[Task] => Unit ): Unit = { - PlatformCompat.newRunner(taskDef, classLoader) match { + PlatformCompat.newRunner(taskDef(), classLoader) match { case None => case Some(runner) => runner.filter(runSettings.tags) val reporter = - new JUnitReporter(eventHandler, loggers, runSettings, taskDef) + new JUnitReporter(eventHandler, loggers, runSettings, taskDef()) val notifier: RunNotifier = new MUnitRunNotifier(reporter) runner.runAsync(notifier).foreach(_ => continuation(Array())) }