Skip to content

Commit 5f98d37

Browse files
committed
Adapt test following Scala 3 bytecode change
After scala/scala3#14686, Scala 3 emits all classes (even local classes) as public, just like Scala 2. But unlike Scala 2, the local class TestSpec in XmlSocketReporterSpec will be emitted with a zero-argument constructor (in Scala 2 its constructor takes an XmlSocketReporterSpec outer parameter which is never used which seems like a bug). This matters because Scalatest considers a test suite "rerunnable" if it has a zero argument public constructor. So to get the test suite to pass, we need to check for the presence of this constructor just like SuiteRerunner does.
1 parent 89a3f6f commit 5f98d37

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

jvm/scalatest-test/src/test/scala/org/scalatest/tools/XmlSocketReporterSpec.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -369,28 +369,28 @@ class XmlSocketReporterSpec extends AnyFunSpec with Eventually {
369369
assert(eventRecorder.scopePendingEvents.length === 1)
370370
checkScopeEvents(eventRecorder.scopePendingEvents(0), "A Pending Feature", spec.suiteName, spec.suiteId,
371371
Some(spec.getClass.getName), "XmlSocketReporterSpec.scala", thisLineNumber - 27)
372-
372+
val rerunner = if (Suite.checkForPublicNoArgConstructor(spec.getClass)) Some(spec.getClass.getName) else None // Logic from SuiteRerunner
373373
assert(eventRecorder.testStartingEvents.length === 4)
374374
checkTestStarting(eventRecorder.testStartingEvents(0), spec.suiteName, spec.suiteId, Some(spec.getClass.getName),
375375
"A Feature should succeed", "should succeed", "XmlSocketReporterSpec.scala", thisLineNumber - 37,
376-
None) // rerunner should be none, as the suite is an inner class.
376+
rerunner)
377377
checkTestStarting(eventRecorder.testStartingEvents(1), spec.suiteName, spec.suiteId, Some(spec.getClass.getName),
378378
"A Feature should failed", "should failed", "XmlSocketReporterSpec.scala", thisLineNumber - 39,
379-
None)
379+
rerunner)
380380
checkTestStarting(eventRecorder.testStartingEvents(2), spec.suiteName, spec.suiteId, Some(spec.getClass.getName),
381381
"A Feature should pending", "should pending", "XmlSocketReporterSpec.scala", thisLineNumber - 40,
382-
None)
382+
rerunner)
383383
checkTestStarting(eventRecorder.testStartingEvents(3), spec.suiteName, spec.suiteId, Some(spec.getClass.getName),
384384
"A Feature should canceled", "should canceled", "XmlSocketReporterSpec.scala", thisLineNumber - 42,
385-
None)
385+
rerunner)
386386

387387
assert(eventRecorder.testSucceededEvents.length === 1)
388388
checkTestSucceeded(eventRecorder.testSucceededEvents(0), spec.suiteName, spec.suiteId, Some(spec.getClass.getName),
389-
"A Feature should succeed", "should succeed", "XmlSocketReporterSpec.scala", thisLineNumber - 51, None)
389+
"A Feature should succeed", "should succeed", "XmlSocketReporterSpec.scala", thisLineNumber - 51, rerunner)
390390

391391
assert(eventRecorder.testFailedEvents.length === 1)
392392
checkTestFailed(eventRecorder.testFailedEvents(0), "1 did not equal 2", spec.suiteName, spec.suiteId, Some(spec.getClass.getName),
393-
"A Feature should failed", "should failed", None)
393+
"A Feature should failed", "should failed", rerunner)
394394

395395
assert(eventRecorder.testPendingEvents.length === 1)
396396
checkTestPending(eventRecorder.testPendingEvents(0), spec.suiteName, spec.suiteId, Some(spec.getClass.getName),

0 commit comments

Comments
 (0)