From 2b1955dcad5e3fc38fd2fdf75819fc54dc4d6c50 Mon Sep 17 00:00:00 2001 From: Neville Li Date: Tue, 8 Sep 2020 15:23:18 -0400 Subject: [PATCH 1/4] fix failing seed reporting --- .../shared/src/main/scala/munit/ScalaCheckSuite.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala b/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala index 6ebcc36f..c5dc0e5c 100644 --- a/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala +++ b/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala @@ -49,13 +49,17 @@ trait ScalaCheckSuite extends FunSuite { private def propToTry(prop: Prop, test: Test): Try[Unit] = { import ScalaCheckTest._ - def seed = + def makeSeed() = scalaCheckTestParameters.initialSeed.getOrElse( Seed.fromBase64(scalaCheckInitialSeed).get ) + var seed: Seed = null val result = check( scalaCheckTestParameters, - Prop(genParams => prop(genParams.withInitialSeed(seed))) + Prop { genParams => + seed = makeSeed() + prop(genParams.withInitialSeed(seed)) + } ) def renderResult(r: Result): String = { val resultMessage = Pretty.pretty(r, scalaCheckPrettyParameters) From 39e53d51bee5160216561eb367e08fc528c390ee Mon Sep 17 00:00:00 2001 From: Neville Li Date: Tue, 8 Sep 2020 16:18:31 -0400 Subject: [PATCH 2/4] fixes --- .../main/scala/munit/ScalaCheckSuite.scala | 12 +++++++----- .../scala/munit/ScalaCheckSeedSuite.scala | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala b/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala index c5dc0e5c..2629c1fc 100644 --- a/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala +++ b/munit-scalacheck/shared/src/main/scala/munit/ScalaCheckSuite.scala @@ -53,12 +53,14 @@ trait ScalaCheckSuite extends FunSuite { scalaCheckTestParameters.initialSeed.getOrElse( Seed.fromBase64(scalaCheckInitialSeed).get ) - var seed: Seed = null + val initialSeed = makeSeed() + var seed: Seed = initialSeed val result = check( scalaCheckTestParameters, Prop { genParams => - seed = makeSeed() - prop(genParams.withInitialSeed(seed)) + val r = prop(genParams.withInitialSeed(seed)) + seed = seed.next + r } ) def renderResult(r: Result): String = { @@ -66,10 +68,10 @@ trait ScalaCheckSuite extends FunSuite { if (r.passed) { resultMessage } else { - val seedMessage = s"""|Failing seed: ${seed.toBase64} + val seedMessage = s"""|Failing seed: ${initialSeed.toBase64} |You can reproduce this failure by adding the following override to your suite: | - | override val scalaCheckInitialSeed = "${seed.toBase64}" + | override val scalaCheckInitialSeed = "${initialSeed.toBase64}" |""".stripMargin seedMessage + "\n" + resultMessage } diff --git a/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala b/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala index 79dd2340..d0ea6ea5 100644 --- a/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala +++ b/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala @@ -15,6 +15,25 @@ final class ScalaCheckSeedSuite extends ScalaCheckSuite { } } + test("generated int are not all the same") { + println(ints) + assert(ints.size > 1) + } +} + +final class ScalaCheckInitialSeedSuite extends ScalaCheckSuite { + + // initial seed should be used for the first out of 100 `minSuccessfulTests` only + override val scalaCheckInitialSeed = "9SohH7wEYXCdXK4b9yM2d6TKIN2jBFcBs4QBta-2yTD=" + private val ints = mutable.Set.empty[Int] + + property("generating int") { + forAll { (i: Int) => + ints.add(i) + true + } + } + test("generated int are not all the same") { assert(ints.size > 1) } From 5638451cd2409223d37a257febd2022b06c662dc Mon Sep 17 00:00:00 2001 From: Neville Li Date: Tue, 8 Sep 2020 16:23:12 -0400 Subject: [PATCH 3/4] fmt --- tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala b/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala index d0ea6ea5..cf2ba71d 100644 --- a/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala +++ b/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala @@ -24,7 +24,8 @@ final class ScalaCheckSeedSuite extends ScalaCheckSuite { final class ScalaCheckInitialSeedSuite extends ScalaCheckSuite { // initial seed should be used for the first out of 100 `minSuccessfulTests` only - override val scalaCheckInitialSeed = "9SohH7wEYXCdXK4b9yM2d6TKIN2jBFcBs4QBta-2yTD=" + override val scalaCheckInitialSeed = + "9SohH7wEYXCdXK4b9yM2d6TKIN2jBFcBs4QBta-2yTD=" private val ints = mutable.Set.empty[Int] property("generating int") { From cfa00c55e0db8bc94b9d89fdeea3d16f00d7cacc Mon Sep 17 00:00:00 2001 From: Neville Li Date: Wed, 9 Sep 2020 08:49:34 -0400 Subject: [PATCH 4/4] split ScalaCheckInitialSeedSuite to a separate file --- .../munit/ScalaCheckInitialSeedSuite.scala | 23 +++++++++++++++++++ .../scala/munit/ScalaCheckSeedSuite.scala | 20 ---------------- 2 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 tests/shared/src/test/scala/munit/ScalaCheckInitialSeedSuite.scala diff --git a/tests/shared/src/test/scala/munit/ScalaCheckInitialSeedSuite.scala b/tests/shared/src/test/scala/munit/ScalaCheckInitialSeedSuite.scala new file mode 100644 index 00000000..dd95f5d2 --- /dev/null +++ b/tests/shared/src/test/scala/munit/ScalaCheckInitialSeedSuite.scala @@ -0,0 +1,23 @@ +package munit + +import scala.collection.mutable +import org.scalacheck.Prop.forAll + +final class ScalaCheckInitialSeedSuite extends ScalaCheckSuite { + + // initial seed should be used for the first out of 100 `minSuccessfulTests` only + override val scalaCheckInitialSeed = + "9SohH7wEYXCdXK4b9yM2d6TKIN2jBFcBs4QBta-2yTD=" + private val ints = mutable.Set.empty[Int] + + property("generating int") { + forAll { (i: Int) => + ints.add(i) + true + } + } + + test("generated int are not all the same") { + assert(ints.size > 1) + } +} diff --git a/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala b/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala index cf2ba71d..79dd2340 100644 --- a/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala +++ b/tests/shared/src/test/scala/munit/ScalaCheckSeedSuite.scala @@ -15,26 +15,6 @@ final class ScalaCheckSeedSuite extends ScalaCheckSuite { } } - test("generated int are not all the same") { - println(ints) - assert(ints.size > 1) - } -} - -final class ScalaCheckInitialSeedSuite extends ScalaCheckSuite { - - // initial seed should be used for the first out of 100 `minSuccessfulTests` only - override val scalaCheckInitialSeed = - "9SohH7wEYXCdXK4b9yM2d6TKIN2jBFcBs4QBta-2yTD=" - private val ints = mutable.Set.empty[Int] - - property("generating int") { - forAll { (i: Int) => - ints.add(i) - true - } - } - test("generated int are not all the same") { assert(ints.size > 1) }