Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,13 @@ lazy val commonJsSettings = Seq(
// Only used for scala.js for now
botBuild := sys.props.getOrElse("CATS_BOT_BUILD", default="false") == "true",
// batch mode decreases the amount of memory needed to compile scala.js code
scalaJSOptimizerOptions := scalaJSOptimizerOptions.value.withBatchMode(botBuild.value)
scalaJSOptimizerOptions := scalaJSOptimizerOptions.value.withBatchMode(botBuild.value),
mimaReportBinaryIssues := {}
)

lazy val commonJvmSettings = Seq(
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oDF")
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oDF"),
mimaPreviousArtifacts := Set("org.typelevel" %% moduleName.value % "0.6.0")
// currently sbt-doctest doesn't work in JS builds, so this has to go in the
// JVM settings. https://github.com/tkawachi/sbt-doctest/issues/52
) ++ catsDoctestSettings
Expand Down Expand Up @@ -127,14 +129,14 @@ lazy val docSettings = Seq(
lazy val docs = project
.settings(moduleName := "cats-docs")
.settings(catsSettings)
.settings(noPublishSettings)
.settings(unidocSettings)
.settings(site.settings)
.settings(ghpages.settings)
.settings(docSettings)
.settings(tutSettings)
.settings(tutScalacOptions ~= (_.filterNot(Set("-Ywarn-unused-import", "-Ywarn-dead-code"))))
.settings(commonJvmSettings)
.settings(noPublishSettings)
.dependsOn(coreJVM, freeJVM)

lazy val cats = project.in(file("."))
Expand All @@ -148,6 +150,9 @@ lazy val catsJVM = project.in(file(".catsJVM"))
.settings(moduleName := "cats")
.settings(catsSettings)
.settings(commonJvmSettings)
// mima complains about the .catsJVM directory not existing for this module.
// It should be fine to not run it on this module since it's just an aggregate.
.settings(mimaReportBinaryIssues := {})
.aggregate(macrosJVM, kernelJVM, kernelLawsJVM, coreJVM, lawsJVM, freeJVM, testsJVM, docs, bench)
.dependsOn(macrosJVM, kernelJVM, kernelLawsJVM, coreJVM, lawsJVM, freeJVM, testsJVM % "test-internal -> test", bench % "compile-internal;test-internal -> test")

Expand Down Expand Up @@ -239,10 +244,10 @@ lazy val tests = crossProject.crossType(CrossType.Pure)
.settings(moduleName := "cats-tests")
.settings(catsSettings:_*)
.settings(disciplineDependencies:_*)
.settings(noPublishSettings:_*)
.settings(testingDependencies: _*)
.jsSettings(commonJsSettings:_*)
.jvmSettings(commonJvmSettings:_*)
.settings(noPublishSettings:_*)

lazy val testsJVM = tests.jvm
lazy val testsJS = tests.js
Expand All @@ -251,8 +256,8 @@ lazy val testsJS = tests.js
lazy val bench = project.dependsOn(macrosJVM, coreJVM, freeJVM, lawsJVM)
.settings(moduleName := "cats-bench")
.settings(catsSettings)
.settings(noPublishSettings)
.settings(commonJvmSettings)
.settings(noPublishSettings)
.enablePlugins(JmhPlugin)

// cats-js is JS-only
Expand Down Expand Up @@ -333,7 +338,7 @@ lazy val publishSettings = Seq(
// These aliases serialise the build for the benefit of Travis-CI.
addCommandAlias("buildJVM", ";macrosJVM/compile;coreJVM/compile;kernelLawsJVM/compile;lawsJVM/compile;freeJVM/compile;kernelLawsJVM/test;coreJVM/test;testsJVM/test;freeJVM/test;bench/test")

addCommandAlias("validateJVM", ";scalastyle;buildJVM;makeSite")
addCommandAlias("validateJVM", ";scalastyle;buildJVM;mimaReportBinaryIssues;makeSite")

addCommandAlias("validateJS", ";macrosJS/compile;kernelJS/compile;coreJS/compile;kernelLawsJS/compile;lawsJS/compile;kernelLawsJS/test;testsJS/test;js/test")

Expand All @@ -350,7 +355,8 @@ addCommandAlias("gitSnapshots", ";set version in ThisBuild := git.gitDescribedVe
lazy val noPublishSettings = Seq(
publish := (),
publishLocal := (),
publishArtifact := false
publishArtifact := false,
mimaReportBinaryIssues := {}
)

lazy val crossVersionSharedSources: Seq[Setting[_]] =
Expand Down
4 changes: 2 additions & 2 deletions project/KernelBoiler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,13 @@ object KernelBoiler {
- implicit def tuple${arity}Order[${`A..N`}](implicit ${constraints("Order")}): Order[${`(A..N)`}] =
- new Order[${`(A..N)`}] {
- def compare(x: ${`(A..N)`}, y: ${`(A..N)`}): Int =
- ${binMethod("compare").find(_ != 0).getOrElse(0)}
- ${binMethod("compare").mkString("Array(", ", ", ")")}.find(_ != 0).getOrElse(0)
- }
-
- implicit def tuple${arity}PartialOrder[${`A..N`}](implicit ${constraints("PartialOrder")}): PartialOrder[${`(A..N)`}] =
- new PartialOrder[${`(A..N)`}] {
- def partialCompare(x: ${`(A..N)`}, y: ${`(A..N)`}): Double =
- ${binMethod("partialCompare").find(_ != 0.0).getOrElse(0.0)}
- ${binMethod("partialCompare").mkString("Array(", ", ", ")")}.find(_ != 0.0).getOrElse(0.0)
- }
-
- implicit def tuple${arity}Semigroup[${`A..N`}](implicit ${constraints("Semigroup")}): Semigroup[${`(A..N)`}] =
Expand Down
1 change: 1 addition & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.3.2")
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.0")
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.9")
addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.5.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "0.8.1")
addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.0")
Expand Down
13 changes: 13 additions & 0 deletions tests/src/test/scala/cats/tests/TupleTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@ class TupleTests extends CatsSuite {
checkAll("Tuple2", BitraverseTests[Tuple2].bitraverse[Option, Int, Int, Int, String, String, String])
checkAll("Bitraverse[Tuple2]", SerializableTests.serializable(Bitraverse[Tuple2]))

test("eqv") {
val eq = Eq[(Int, Long)]
forAll { t: (Int, Long) => eq.eqv(t, t) should === (true) }
forAll { t: (Int, Long) => eq.eqv(t, t._1 -> (t._2 + 1)) should === (false) }
}

test("order") {
forAll { t: (Int, Int) =>
val u = t.swap
Order[(Int, Int)].compare(t, u) should === (scala.math.Ordering[(Int, Int)].compare(t, u))
}
}

test("show") {
(1, 2).show should === ("(1,2)")

Expand Down