From 26d7243f396e446726a541f4dc73145c90142abe Mon Sep 17 00:00:00 2001 From: Travis Brown Date: Thu, 16 Jan 2020 10:51:16 -0600 Subject: [PATCH 1/2] Update discipline-scalatest --- .../scala/alleycats/tests/AlleycatsSuite.scala | 4 ++-- build.sbt | 2 +- docs/src/main/tut/typeclasses/lawtesting.md | 14 ++++++++------ .../src/test/scala/cats/kernel/laws/LawTests.scala | 5 +++-- .../cats/laws/discipline/MonadTestsTests.scala | 5 +++-- tests/src/test/scala/cats/tests/AndThenSuite.scala | 3 ++- tests/src/test/scala/cats/tests/CatsSuite.scala | 4 ++-- .../src/test/scala/cats/tests/ParallelSuite.scala | 5 +++-- 8 files changed, 24 insertions(+), 18 deletions(-) diff --git a/alleycats-tests/shared/src/test/scala/alleycats/tests/AlleycatsSuite.scala b/alleycats-tests/shared/src/test/scala/alleycats/tests/AlleycatsSuite.scala index 7c9fd3b2fc..f80cadfb85 100644 --- a/alleycats-tests/shared/src/test/scala/alleycats/tests/AlleycatsSuite.scala +++ b/alleycats-tests/shared/src/test/scala/alleycats/tests/AlleycatsSuite.scala @@ -8,7 +8,7 @@ import cats.syntax.{AllSyntax, EqOps} import cats.tests.StrictCatsEquality import org.scalatest.funsuite.AnyFunSuiteLike import org.scalatestplus.scalacheck.ScalaCheckDrivenPropertyChecks -import org.typelevel.discipline.scalatest.Discipline +import org.typelevel.discipline.scalatest.FunSuiteDiscipline import org.scalacheck.{Arbitrary, Gen} import org.scalacheck.Arbitrary.arbitrary import org.scalatest.matchers.should.Matchers @@ -23,7 +23,7 @@ trait AlleycatsSuite extends AnyFunSuiteLike with Matchers with ScalaCheckDrivenPropertyChecks - with Discipline + with FunSuiteDiscipline with TestSettings with AllInstances with AllSyntax diff --git a/build.sbt b/build.sbt index 366ee78800..262ca52d1a 100644 --- a/build.sbt +++ b/build.sbt @@ -23,7 +23,7 @@ val scalatestplusScalaCheckVersion = "3.1.0.1" val disciplineVersion = "1.0.2" -val disciplineScalatestVersion = "1.0.0-RC2" +val disciplineScalatestVersion = "1.0.0-RC4" val kindProjectorVersion = "0.11.0" diff --git a/docs/src/main/tut/typeclasses/lawtesting.md b/docs/src/main/tut/typeclasses/lawtesting.md index 35f4aaefa9..37c9474513 100644 --- a/docs/src/main/tut/typeclasses/lawtesting.md +++ b/docs/src/main/tut/typeclasses/lawtesting.md @@ -84,7 +84,7 @@ this conversion for two test frameworks: `ScalaTest` and `Specs2`. * If you are using `Specs2`, extend your test class with `org.typelevel.discipline.specs2.Discipline` (provided by `discipline-specs2`). -* If you are using `ScalaTest`, extend your test class with `org.typelevel.discipline.scalatest.Discipline` (provided by `discipline-scalatest`) and `org.scalatest.funsuite.AnyFunSuiteLike`. +* If you are using `ScalaTest`, extend your test class with `org.typelevel.discipline.scalatest.FunSuiteDiscipline` (provided by `discipline-scalatest`) and `org.scalatest.funsuite.AnyFunSuiteLike`. * For other test frameworks, you need to resort to their integration with `ScalaCheck` to test the `ScalaCheck` `Properties` provided by `cats-laws`. @@ -95,10 +95,11 @@ The following example is for ScalaTest. import cats.implicits._ import cats.laws.discipline.FunctorTests import org.scalatest.funsuite.AnyFunSuite -import org.typelevel.discipline.scalatest.Discipline +import org.scalatestplus.scalacheck.Checkers +import org.typelevel.discipline.scalatest.FunSuiteDiscipline import arbitraries._ -class TreeLawTests extends AnyFunSuite with Discipline { +class TreeLawTests extends AnyFunSuite with FunSuiteDiscipline with Checkers { checkAll("Tree.FunctorLaws", FunctorTests[Tree].functor[Int, Int, String]) } ``` @@ -106,7 +107,7 @@ class TreeLawTests extends AnyFunSuite with Discipline { * `cats.implicits._` imports the instances we need for `Eq[Tree[Int]]`, which the laws use to compare trees. * `FunctorTests` contains the functor laws. * `AnyFunSuite` defines the style of ScalaTest. -* `Discipline` provides `checkAll`, and must be mixed into `AnyFunSuite` +* `FunSuiteDiscipline` provides `checkAll`, and must be mixed into `AnyFunSuite` * `arbitraries._` imports the `Arbitrary[Tree[_]]` instances needed to check the laws. Alternatively, you can use the `CatsSuite` provided by [Cats-testkit-scalatest](https://github.com/typelevel/cats-testkit-scalatest), @@ -161,10 +162,11 @@ import cats.implicits._ import cats.kernel.laws.discipline.SemigroupTests import cats.laws.discipline.FunctorTests import org.scalatest.funsuite.AnyFunSuite -import org.typelevel.discipline.scalatest.Discipline +import org.scalatestplus.scalacheck.Checkers +import org.typelevel.discipline.scalatest.FunSuiteDiscipline import arbitraries._ -class TreeLawTests extends AnyFunSuite with Discipline { +class TreeLawTests extends AnyFunSuite with FunSuiteDiscipline with Checkers { checkAll("Tree[Int].SemigroupLaws", SemigroupTests[Tree[Int]].semigroup) checkAll("Tree.FunctorLaws", FunctorTests[Tree].functor[Int, Int, String]) } diff --git a/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala b/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala index f898e5c273..e1657f5f29 100644 --- a/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala +++ b/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala @@ -5,11 +5,12 @@ import cats.kernel.instances.all._ import cats.kernel.laws.discipline._ import cats.platform.Platform -import org.typelevel.discipline.scalatest.Discipline +import org.typelevel.discipline.scalatest.FunSuiteDiscipline import org.scalacheck.{Arbitrary, Cogen, Gen} import Arbitrary.arbitrary import org.scalactic.anyvals.{PosInt, PosZInt} import org.scalatest.funsuite.AnyFunSuiteLike +import org.scalatestplus.scalacheck.Checkers import scala.concurrent.duration.{Duration, FiniteDuration} import scala.collection.immutable.{BitSet, Queue, SortedMap, SortedSet} @@ -133,7 +134,7 @@ object KernelCheck { } } -class Tests extends AnyFunSuiteLike with Discipline with ScalaVersionSpecificTests { +class Tests extends AnyFunSuiteLike with FunSuiteDiscipline with ScalaVersionSpecificTests with Checkers { import KernelCheck._ diff --git a/laws/src/test/scala/cats/laws/discipline/MonadTestsTests.scala b/laws/src/test/scala/cats/laws/discipline/MonadTestsTests.scala index 371c9cc489..227db01030 100644 --- a/laws/src/test/scala/cats/laws/discipline/MonadTestsTests.scala +++ b/laws/src/test/scala/cats/laws/discipline/MonadTestsTests.scala @@ -5,9 +5,10 @@ package discipline import cats.instances.all._ import cats.laws.discipline.arbitrary._ import org.scalatest.funsuite.AnyFunSuiteLike -import org.typelevel.discipline.scalatest.Discipline +import org.scalatestplus.scalacheck.Checkers +import org.typelevel.discipline.scalatest.FunSuiteDiscipline -class MonadTestsTests extends AnyFunSuiteLike with Discipline { +class MonadTestsTests extends AnyFunSuiteLike with FunSuiteDiscipline with Checkers { // We don't use `stackUnsafeMonad` in our laws checking for instances in Cats, // so we confirm here that the laws pass for `Eval` (the monad instance for // which is actually stack safe, like all other monad instances in Cats.) diff --git a/tests/src/test/scala/cats/tests/AndThenSuite.scala b/tests/src/test/scala/cats/tests/AndThenSuite.scala index ac62686e73..8e45156d86 100644 --- a/tests/src/test/scala/cats/tests/AndThenSuite.scala +++ b/tests/src/test/scala/cats/tests/AndThenSuite.scala @@ -8,8 +8,9 @@ import cats.arrow._ import cats.laws.discipline.eq._ import cats.laws.discipline.arbitrary._ import cats.platform.Platform +import org.scalatestplus.scalacheck.Checkers -class AndThenSuite extends CatsSuite { +class AndThenSuite extends CatsSuite with Checkers { checkAll("AndThen[MiniInt, Int]", SemigroupalTests[AndThen[MiniInt, *]].semigroupal[Int, Int, Int]) checkAll("Semigroupal[AndThen[Int, *]]", SerializableTests.serializable(Semigroupal[AndThen[Int, *]])) diff --git a/tests/src/test/scala/cats/tests/CatsSuite.scala b/tests/src/test/scala/cats/tests/CatsSuite.scala index ff691f95b8..9c90dc2f2a 100644 --- a/tests/src/test/scala/cats/tests/CatsSuite.scala +++ b/tests/src/test/scala/cats/tests/CatsSuite.scala @@ -9,7 +9,7 @@ import org.scalatest.funsuite.AnyFunSuiteLike import org.scalatest.matchers.should.Matchers import org.scalatest.prop.Configuration import org.scalatestplus.scalacheck.ScalaCheckDrivenPropertyChecks -import org.typelevel.discipline.scalatest.Discipline +import org.typelevel.discipline.scalatest.FunSuiteDiscipline trait TestSettings extends Configuration with Matchers { @@ -35,7 +35,7 @@ trait CatsSuite extends AnyFunSuiteLike with Matchers with ScalaCheckDrivenPropertyChecks - with Discipline + with FunSuiteDiscipline with TestSettings with AllInstances with AllInstancesBinCompat0 diff --git a/tests/src/test/scala/cats/tests/ParallelSuite.scala b/tests/src/test/scala/cats/tests/ParallelSuite.scala index d00d1a1e36..3e124d959e 100644 --- a/tests/src/test/scala/cats/tests/ParallelSuite.scala +++ b/tests/src/test/scala/cats/tests/ParallelSuite.scala @@ -8,7 +8,8 @@ import org.scalatest.funsuite.AnyFunSuiteLike import cats.laws.discipline.{ApplicativeErrorTests, MiniInt, NonEmptyParallelTests, ParallelTests, SerializableTests} import cats.laws.discipline.eq._ import cats.laws.discipline.arbitrary._ -import org.typelevel.discipline.scalatest.Discipline +import org.scalatestplus.scalacheck.Checkers +import org.typelevel.discipline.scalatest.FunSuiteDiscipline import scala.collection.immutable.SortedSet import kernel.compat.scalaVersionSpecific._ @@ -498,7 +499,7 @@ class ParallelSuite extends CatsSuite with ApplicativeErrorForEitherTest with Sc } } -trait ApplicativeErrorForEitherTest extends AnyFunSuiteLike with Discipline { +trait ApplicativeErrorForEitherTest extends AnyFunSuiteLike with FunSuiteDiscipline with Checkers { import cats.instances.either._ import cats.instances.string._ From a61df9960c085221a743bd56aa279f5c09975c19 Mon Sep 17 00:00:00 2001 From: Travis Brown Date: Sat, 18 Jan 2020 02:37:28 -0600 Subject: [PATCH 2/2] Fix initialization order issue --- .../src/test/scala/cats/kernel/laws/LawTests.scala | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala b/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala index e1657f5f29..efecdb7071 100644 --- a/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala +++ b/kernel-laws/shared/src/test/scala/cats/kernel/laws/LawTests.scala @@ -134,10 +134,7 @@ object KernelCheck { } } -class Tests extends AnyFunSuiteLike with FunSuiteDiscipline with ScalaVersionSpecificTests with Checkers { - - import KernelCheck._ - +class TestsConfig extends Checkers { // The ScalaCheck defaults (100,100) are too high for Scala.js. final val PropMaxSize: PosZInt = if (Platform.isJs) 10 else 100 final val PropMinSuccessful: PosInt = if (Platform.isJs) 10 else 100 @@ -145,6 +142,11 @@ class Tests extends AnyFunSuiteLike with FunSuiteDiscipline with ScalaVersionSpe implicit override val generatorDrivenConfig: PropertyCheckConfiguration = PropertyCheckConfiguration(minSuccessful = PropMinSuccessful, sizeRange = PropMaxSize, workers = PropWorkers) +} + +class Tests extends TestsConfig with AnyFunSuiteLike with FunSuiteDiscipline with ScalaVersionSpecificTests { + + import KernelCheck._ { // needed for Cogen[Map[...]]