From fb8cbd24659b6e0ddea51c038510da278bd1a447 Mon Sep 17 00:00:00 2001 From: Andrew Valencik Date: Tue, 12 Dec 2023 22:24:47 -0500 Subject: [PATCH 1/2] Restore v0.7.x fixture ordering We split up the suite-local fixture implementation into two fixtures, one of the `before*` methods, and one for the `after*` methods. Then we explicitly order `munitFixtures` to have the befores up front and the afters at the end. --- munit/shared/src/main/scala/munit/MUnitRunner.scala | 10 ++++++++-- .../main/scala/munit/FixtureOrderFrameworkSuite.scala | 8 ++++---- .../src/test/scala/munit/SuiteLocalFixtureSuite.scala | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/munit/shared/src/main/scala/munit/MUnitRunner.scala b/munit/shared/src/main/scala/munit/MUnitRunner.scala index 16081c7f..37d70e3e 100644 --- a/munit/shared/src/main/scala/munit/MUnitRunner.scala +++ b/munit/shared/src/main/scala/munit/MUnitRunner.scala @@ -45,19 +45,25 @@ class MUnitRunner(val cls: Class[_ <: Suite], newInstance: () => Suite) private lazy val munitTests: mutable.ArrayBuffer[Test] = mutable.ArrayBuffer[Test](suite.munitTests(): _*) - private val suiteFixture = new Fixture[Unit](cls.getName()) { + + // Suite fixtures are implemented as regular fixtures + // We split up the before*/after* methods so we can order them explicitly + private val suiteFixtureBefore = new Fixture[Unit](cls.getName()) { def apply(): Unit = () override def beforeAll(): Unit = suite.beforeAll() override def beforeEach(context: BeforeEach): Unit = suite.beforeEach(context) + } + private val suiteFixtureAfter = new Fixture[Unit](cls.getName()) { + def apply(): Unit = () override def afterEach(context: AfterEach): Unit = suite.afterEach(context) override def afterAll(): Unit = suite.afterAll() } private lazy val munitFixtures: List[AnyFixture[_]] = - suiteFixture :: suite.munitFixtures.toList + suiteFixtureBefore :: suite.munitFixtures.appended(suiteFixtureAfter).toList override def filter(filter: Filter): Unit = { val newTests = munitTests.filter { t => diff --git a/tests/shared/src/main/scala/munit/FixtureOrderFrameworkSuite.scala b/tests/shared/src/main/scala/munit/FixtureOrderFrameworkSuite.scala index ef1fdcd0..2f1d3465 100644 --- a/tests/shared/src/main/scala/munit/FixtureOrderFrameworkSuite.scala +++ b/tests/shared/src/main/scala/munit/FixtureOrderFrameworkSuite.scala @@ -53,29 +53,29 @@ object FixtureOrderFrameworkSuite |beforeEach(a, 1) |beforeEach(b, 1) |test(1) - |afterEach(ad-hoc, 1) |afterEach(a, 1) |afterEach(b, 1) + |afterEach(ad-hoc, 1) | + 1 |beforeEach(ad-hoc, 2) |beforeEach(a, 2) |beforeEach(b, 2) |test(2) - |afterEach(ad-hoc, 2) |afterEach(a, 2) |afterEach(b, 2) + |afterEach(ad-hoc, 2) | + 2 |beforeEach(ad-hoc, 3) |beforeEach(a, 3) |beforeEach(b, 3) |test(3) - |afterEach(ad-hoc, 3) |afterEach(a, 3) |afterEach(b, 3) + |afterEach(ad-hoc, 3) | + 3 - |afterAll(ad-hoc) |afterAll(a) |afterAll(b) + |afterAll(ad-hoc) |""".stripMargin, format = StdoutFormat ) diff --git a/tests/shared/src/test/scala/munit/SuiteLocalFixtureSuite.scala b/tests/shared/src/test/scala/munit/SuiteLocalFixtureSuite.scala index 306731dc..bbf37e0d 100644 --- a/tests/shared/src/test/scala/munit/SuiteLocalFixtureSuite.scala +++ b/tests/shared/src/test/scala/munit/SuiteLocalFixtureSuite.scala @@ -12,7 +12,7 @@ class SuiteLocalFixtureSuite extends FunSuite { n = 1 } override def afterAll(): Unit = { - assertEquals(n, 17) + assertEquals(n, 16) n = -11 } } @@ -34,7 +34,7 @@ class SuiteLocalFixtureSuite extends FunSuite { } override def afterAll(): Unit = { - assertEquals(counter(), 17) + assertEquals(counter(), -10) } 1.to(5).foreach { i => From 1756e052e3824a7986aa019c9cfc6ba04cfb38cb Mon Sep 17 00:00:00 2001 From: Andrew Valencik Date: Tue, 12 Dec 2023 22:45:40 -0500 Subject: [PATCH 2/2] Please Scala 2.11, 2.12, 2.13, 3.1 simultaneously --- munit/shared/src/main/scala/munit/MUnitRunner.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/munit/shared/src/main/scala/munit/MUnitRunner.scala b/munit/shared/src/main/scala/munit/MUnitRunner.scala index 37d70e3e..348d79b3 100644 --- a/munit/shared/src/main/scala/munit/MUnitRunner.scala +++ b/munit/shared/src/main/scala/munit/MUnitRunner.scala @@ -63,7 +63,7 @@ class MUnitRunner(val cls: Class[_ <: Suite], newInstance: () => Suite) suite.afterAll() } private lazy val munitFixtures: List[AnyFixture[_]] = - suiteFixtureBefore :: suite.munitFixtures.appended(suiteFixtureAfter).toList + suiteFixtureBefore :: (suite.munitFixtures.toList ::: suiteFixtureAfter :: Nil) override def filter(filter: Filter): Unit = { val newTests = munitTests.filter { t =>