diff --git a/build.sbt b/build.sbt index c82c9eb..8d6aeb4 100644 --- a/build.sbt +++ b/build.sbt @@ -38,6 +38,14 @@ lazy val project = Project("project", file(".")) } } }, + unmanagedSourceDirectories in Test ++= { + (unmanagedSourceDirectories in Test).value.map { dir => + CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, 13)) => file(dir.getPath ++ "-2.13+") + case _ => file(dir.getPath ++ "-2.13-") + } + } + }, libraryDependencies ++= (if (scalaVersion.value.startsWith("2.10")) Seq( diff --git a/src/test/scala-2.13+/net/ceedubs/ficus/Issue82Spec.scala b/src/test/scala-2.13+/net/ceedubs/ficus/Issue82Spec.scala new file mode 100644 index 0000000..3a7bd88 --- /dev/null +++ b/src/test/scala-2.13+/net/ceedubs/ficus/Issue82Spec.scala @@ -0,0 +1,23 @@ +package net.ceedubs.ficus + +import net.ceedubs.ficus.Ficus._ +import net.ceedubs.ficus.readers.ArbitraryTypeReader._ +import com.typesafe.config._ +import org.specs2.mutable.Specification + +class Issue82Spec extends Specification { + "Ficus config" should { + "not throw `java.lang.ClassCastException`" in { + case class TestSettings(val `foo-bar`: Long, `foo`: String) + val config = ConfigFactory.parseString("""{ foo-bar: 3, foo: "4" }""") + config.as[TestSettings] must not(throwA[java.lang.ClassCastException]) + } + + """should not assign "foo-bar" to "foo"""" in { + case class TestSettings(val `foo-bar`: String, `foo`: String) + val config = ConfigFactory.parseString("""{ foo-bar: "foo-bar", foo: "foo" }""") + val settings = config.as[TestSettings] + (settings.`foo-bar` mustEqual "foo-bar") and (settings.`foo` mustEqual "foo") + } + } +}