Skip to content

Commit

Permalink
Merge 8c92a62 into 2df57ca
Browse files Browse the repository at this point in the history
  • Loading branch information
guilgaly committed May 29, 2019
2 parents 2df57ca + 8c92a62 commit a2961e2
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 36 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ matrix:
- sbt -jvm-opts .travis-jvmopts ++$TRAVIS_SCALA_VERSION scalafmtCheck scalafmtSbtCheck test:compile test:doc
- travis_wait 30 sleep 1800 &
- sbt -jvm-opts .travis-jvmopts ++$TRAVIS_SCALA_VERSION test
- scala: 2.12.7
- scala: 2.12.8
jdk: oraclejdk8
script:
- sbt -jvm-opts .travis-jvmopts ++$TRAVIS_SCALA_VERSION test:compile test:doc
- travis_wait 30 sleep 1800 &
- sbt -jvm-opts .travis-jvmopts ++$TRAVIS_SCALA_VERSION coverage test coverageReport
- sbt -jvm-opts .travis-jvmopts ++$TRAVIS_SCALA_VERSION coverageAggregate
after_success: sbt -jvm-opts .travis-jvmopts ++$TRAVIS_SCALA_VERSION coveralls
- scala: 2.13.0-M5
- scala: 2.13.0-RC2
jdk: oraclejdk8
script:
- sbt ++$TRAVIS_SCALA_VERSION scala_2_13/test:compile scala_2_13/test:doc
Expand Down
56 changes: 37 additions & 19 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,30 @@ import com.typesafe.sbt.SbtGit.{GitKeys => git}
import sbtcrossproject.CrossPlugin.autoImport.{crossProject, CrossType}
import sbtbuildinfo.BuildInfoPlugin.autoImport._

lazy val theScalaVersion = "2.12.7"
lazy val theScalaVersion = "2.12.8"

/*
2.13.0-M5 support is currently defined as a separate project (scala_2_13) for convenience while
2.13.0-RC2 support is currently defined as a separate project (scala_2_13) for convenience while
integration libraries are still gaining 2.13 support
*/
lazy val scalaVersions = Seq("2.10.7", "2.11.12", "2.12.7")
lazy val scalaVersionsAbove_2_11 = Seq("2.11.12", "2.12.7")
lazy val scala_2_13Version = "2.13.0-M5"
lazy val scalaVersions = Seq("2.10.7", "2.11.12", "2.12.8")
lazy val scalaVersionsAbove_2_11 = Seq("2.11.12", "2.12.8")
lazy val scala_2_13Version = "2.13.0-RC2"
lazy val scalaVersionsAll = scalaVersions :+ scala_2_13Version

lazy val scalaTestVersion = "3.0.6-SNAP4"
lazy val scalaTestVersion = "3.0.8-RC4"
lazy val scalacheckVersion = "1.14.0"

// Library versions
lazy val reactiveMongoVersion = "0.13.0"
lazy val argonautVersion = "6.2.1"
lazy val json4sVersion = "3.6.1"
lazy val argonautVersion = "6.2.3"
lazy val json4sVersion = "3.6.6"
lazy val quillVersion = "2.3.3"
lazy val doobieVersion = "0.6.0"

def thePlayVersion(scalaVersion: String) =
CrossVersion.partialVersion(scalaVersion) match {
case Some((2, scalaMajor)) if scalaMajor >= 13 => "2.8.0-M1"
case Some((2, scalaMajor)) if scalaMajor >= 11 => "2.7.0"
case Some((2, scalaMajor)) if scalaMajor == 10 => "2.4.11"
case _ =>
Expand All @@ -49,7 +50,8 @@ def theCatsVersion(scalaVersion: String) =

def thePlayJsonVersion(scalaVersion: String) =
CrossVersion.partialVersion(scalaVersion) match {
case Some((2, scalaMajor)) if scalaMajor >= 11 => "2.7.1"
case Some((2, scalaMajor)) if scalaMajor >= 13 => "2.8.0-M1"
case Some((2, scalaMajor)) if scalaMajor >= 11 => "2.7.3"
case Some((2, scalaMajor)) if scalaMajor == 10 => "2.4.11"
case _ =>
throw new IllegalArgumentException(s"Unsupported Scala version $scalaVersion")
Expand All @@ -64,6 +66,8 @@ def theCirceVersion(scalaVersion: String) =
}

def scalaTestPlay(scalaVersion: String) = CrossVersion.partialVersion(scalaVersion) match {
case Some((2, scalaMajor)) if scalaMajor >= 13 =>
"org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0-M1" % Test
case Some((2, scalaMajor)) if scalaMajor >= 11 =>
"org.scalatestplus.play" %% "scalatestplus-play" % "4.0.1" % Test
case Some((2, scalaMajor)) if scalaMajor == 10 =>
Expand All @@ -72,6 +76,16 @@ def scalaTestPlay(scalaVersion: String) = CrossVersion.partialVersion(scalaVersi
throw new IllegalArgumentException(s"Unsupported Scala version $scalaVersion")
}

/** Temporary fix for Play 5.0.0-M1. */
def akkaHttp(scalaVersion: String) = CrossVersion.partialVersion(scalaVersion) match {
case Some((2, scalaMajor)) if scalaMajor >= 13 =>
Seq(
("com.typesafe.play" %% "play-akka-http-server" % thePlayVersion(scalaVersion)) excludeAll ("com.typesafe.akka" %% "akka-http-core"),
"com.typesafe.akka" %% "akka-http-core" % "10.1.8"
)
case _ => Seq.empty
}

lazy val baseProjectRefs =
Seq(macrosJS, macrosJVM, coreJS, coreJVM, coreJVMTests).map(Project.projectToRef)

Expand Down Expand Up @@ -146,7 +160,7 @@ lazy val macros = crossProject(JSPlatform, JVMPlatform)
includeTestSrcs = false): _*)
.settings(
name := "enumeratum-macros",
version := Versions.Macros.head,
version := Versions.Macros.stable,
crossScalaVersions := scalaVersionsAll, // eventually move this to aggregateProject once more 2.13 libs are out
libraryDependencies ++= Seq(
"org.scala-lang" % "scala-reflect" % scalaVersion.value
Expand All @@ -165,7 +179,7 @@ lazy val core = crossProject(JSPlatform, JVMPlatform)
.settings(commonWithPublishSettings: _*)
.settings(
name := "enumeratum",
version := Versions.Core.head,
version := Versions.Core.stable,
crossScalaVersions := scalaVersionsAll,
libraryDependencies += "com.beachape" %% "enumeratum-macros" % Versions.Macros.stable
)
Expand All @@ -182,7 +196,7 @@ lazy val enumeratumTest = crossProject(JSPlatform, JVMPlatform)
.settings(commonWithPublishSettings: _*)
.settings(
name := "enumeratum-test",
version := Versions.Core.head,
version := Versions.Core.stable,
crossScalaVersions := scalaVersionsAll,
libraryDependencies += {
"com.beachape" %%% "enumeratum" % Versions.Core.stable
Expand Down Expand Up @@ -276,12 +290,13 @@ lazy val enumeratumPlay = Project(id = "enumeratum-play", base = file("enumeratu
.settings(
version := s"1.5.17-SNAPSHOT",
crossScalaVersions := scalaVersionsAll,
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play" % thePlayVersion(scalaVersion.value),
"com.beachape" %% "enumeratum" % Versions.Core.stable,
"com.beachape" %% "enumeratum-test" % Versions.Core.stable % Test,
scalaTestPlay(scalaVersion.value)
)
libraryDependencies ++= akkaHttp(scalaVersion.value) ++ // Temporary fix for Play 5.0.0-M1
Seq(
"com.typesafe.play" %% "play" % thePlayVersion(scalaVersion.value),
"com.beachape" %% "enumeratum" % Versions.Core.stable,
"com.beachape" %% "enumeratum-test" % Versions.Core.stable % Test,
scalaTestPlay(scalaVersion.value)
)
)
.dependsOn(enumeratumPlayJsonJvm % "test->test;compile->compile")

Expand Down Expand Up @@ -356,7 +371,7 @@ lazy val enumeratumScalacheck = crossProject(JSPlatform, JVMPlatform)
Seq(
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"org.scalacheck" %%% "scalacheck" % scalacheckVersion,
"com.beachape" %%% "enumeratum-test" % Versions.Core.stable % Test,
"com.beachape" %%% "enumeratum-test" % Versions.Core.stable % Test
)
}
)
Expand Down Expand Up @@ -492,6 +507,9 @@ lazy val compilerSettings = Seq(
"-Xfuture"
)
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, m)) if m >= 13 =>
base.filterNot(flag => flag == "-Xfatal-warnings" || flag == "-Xfuture") ++ // todo see how to disable deprecations in 2.13.x
Seq( /*"-deprecation:false", */ "-Xlint:-unused,_") // unused-import breaks Circe Either shim
case Some((2, m)) if m >= 12 =>
base ++ Seq("-deprecation:false", "-Xlint:-unused,_") // unused-import breaks Circe Either shim
case Some((2, 11)) => base ++ Seq("-deprecation:false", "-Xlint", "-Ywarn-unused-import")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ sealed trait ValueEnum[ValueType, EntryType <: ValueEnumEntry[ValueType]] {
private lazy val existingEntriesString = values.map(_.value).mkString(", ")

private def buildNotFoundMessage(i: ValueType): String = {
s"$i is not a member of ValueEnum ($existingEntriesString)"
s"${i.toString} is not a member of ValueEnum ($existingEntriesString)"
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ object EnumFormats {
* Format for Char
*/
implicit val charFormat: Format[Char] = new Format[Char] {
def writes(o: Char): JsValue = JsString(s"$o")
def writes(o: Char): JsValue = JsString(o.toString)

def reads(json: JsValue): JsResult[Char] = json match {
case JsString(s) if s.length == 1 => JsSuccess(s.charAt(0))
Expand Down
12 changes: 6 additions & 6 deletions enumeratum-play/src/main/scala/enumeratum/UrlBinders.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ object UrlBinders {
else enum.withNameOption(value)
maybeBound match {
case Some(v) => Right(v)
case _ => Left(s"Unknown value supplied for $enum '$value'")
case _ => Left(s"Unknown value supplied for ${enum.toString} '$value'")
}
}
}
Expand All @@ -39,7 +39,7 @@ object UrlBinders {
def bind(key: String, value: String): Either[String, A] = {
enum.withNameLowercaseOnlyOption(value) match {
case Some(v) => Right(v)
case _ => Left(s"Unknown value supplied for $enum '$value'")
case _ => Left(s"Unknown value supplied for ${enum.toString} '$value'")
}
}
}
Expand All @@ -55,7 +55,7 @@ object UrlBinders {
def bind(key: String, value: String): Either[String, A] = {
enum.withNameUppercaseOnlyOption(value) match {
case Some(v) => Right(v)
case _ => Left(s"Unknown value supplied for $enum '$value'")
case _ => Left(s"Unknown value supplied for ${enum.toString} '$value'")
}
}
}
Expand All @@ -81,7 +81,7 @@ object UrlBinders {
else enum.withNameOption(p)
maybeBound match {
case Some(v) => Right(v)
case _ => Left(s"Cannot parse parameter $key as an Enum: $this")
case _ => Left(s"Cannot parse parameter $key as an Enum: ${this.toString}")
}
}
}
Expand All @@ -102,7 +102,7 @@ object UrlBinders {
params.get(key).flatMap(_.headOption).map { p =>
enum.withNameLowercaseOnlyOption(p) match {
case Some(v) => Right(v)
case _ => Left(s"Cannot parse parameter $key as an Enum: $this")
case _ => Left(s"Cannot parse parameter $key as an Enum: ${this.toString}")
}
}
}
Expand All @@ -123,7 +123,7 @@ object UrlBinders {
params.get(key).flatMap(_.headOption).map { p =>
enum.withNameUppercaseOnlyOption(p) match {
case Some(v) => Right(v)
case _ => Left(s"Cannot parse parameter $key as an Enum: $this")
case _ => Left(s"Cannot parse parameter $key as an Enum: ${this.toString}")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ object UrlBinders {
maybeBound match {
case Some(obj) => Right(obj)
case None =>
Left(s"Unknown value supplied for $enum '" + value + "'")
Left(s"Unknown value supplied for ${enum.toString} '" + value + "'")
}
}

Expand All @@ -48,7 +48,7 @@ object UrlBinders {
val maybeBound = enum.withValueOpt(s)
maybeBound match {
case Some(obj) => Right(obj)
case None => Left(s"Unknown value supplied for $enum '$s'")
case None => Left(s"Unknown value supplied for ${enum.toString} '${s.toString}'")
}
})
}
Expand Down
3 changes: 2 additions & 1 deletion enumeratum-play/src/test/scala/enumeratum/PlayEnumSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,10 @@ class PlayEnumSpec extends FunSpec with Matchers {
import play.api.routing.sird._
import play.api.routing._
import play.api.mvc._
import scala.concurrent.ExecutionContext.Implicits.global
val router = Router.from {
case GET(p"/${pathBindableExtractor(greeting)}") =>
Action {
new ActionBuilder.IgnoringBody().apply {
Results.Ok(s"$greeting")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,11 @@ trait PlayValueEnumHelpers extends EnumJsonFormatHelpers { this: FunSpec with Ma
import play.api.routing.sird._
import play.api.routing._
import play.api.mvc._
import scala.concurrent.ExecutionContext.Implicits.global
enum.values.foreach { entry =>
val router = Router.from {
case GET(p"/${enum.fromPath(greeting)}") =>
Action {
new ActionBuilder.IgnoringBody().apply {
Results.Ok(s"$greeting")
}
}
Expand Down
1 change: 1 addition & 0 deletions macros/src/main/scala/enumeratum/EnumMacros.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import ContextUtils.Context
import scala.collection.immutable._
import scala.util.control.NonFatal

@SuppressWarnings(Array("org.wartremover.warts.StringPlusAny"))
object EnumMacros {

/**
Expand Down
5 changes: 4 additions & 1 deletion macros/src/main/scala/enumeratum/ValueEnumMacros.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import ContextUtils.Context
import scala.reflect.ClassTag
import scala.collection.immutable._

@SuppressWarnings(Array("org.wartremover.warts.StringPlusAny"))
object ValueEnumMacros {

/**
Expand Down Expand Up @@ -254,7 +255,9 @@ object ValueEnumMacros {
val membersWithValues = treeWithVals.map { treeWithVal =>
treeWithVal.tree.symbol -> treeWithVal.value
}
val groupedByValue = membersWithValues.groupBy(_._2).mapValues(_.map(_._1))
val groupedByValue = membersWithValues.groupBy(_._2).map {
case (k, v) => (k, v.map(_._1))
}
val (valuesWithOneSymbol, valuesWithMoreThanOneSymbol) =
groupedByValue.partition(_._2.size <= 1)
if (valuesWithOneSymbol.size != membersWithValues.toMap.keys.size) {
Expand Down
4 changes: 2 additions & 2 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.2.5")

addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.9.3")

addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.25")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.27")

addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "0.6.0")

addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.27")

addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.3.5")
addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.4.2")

addSbtPlugin("com.github.tkawachi" % "sbt-doctest" % "0.7.2")

Expand Down

0 comments on commit a2961e2

Please sign in to comment.