Skip to content

Commit 29d104d

Browse files
Adds scala-compiler as assembly dep for Docker
1 parent 7c02764 commit 29d104d

File tree

3 files changed

+41
-18
lines changed

3 files changed

+41
-18
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ lazy val `evaluator-server` = (project in file("server"))
6868
buildInfoPackage := "org.scalaexercises.evaluator"
6969
)
7070
.settings(dockerSettings)
71-
.settings(scalaMacroDependencies: _*)
71+
.settings(serverScalaMacroDependencies: _*)
7272

7373
lazy val `smoketests` = (project in file("smoketests"))
7474
.dependsOn(`evaluator-server`)

project/ProjectPlugin.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,25 @@ object ProjectPlugin extends AutoPlugin {
4040
s"registry.heroku.com/${sys.props.getOrElse("evaluator.heroku.name", "scala-evaluator")}/web"))
4141
)
4242

43+
lazy val serverScalaMacroDependencies: Seq[Setting[_]] = {
44+
Seq(
45+
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value,
46+
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value,
47+
libraryDependencies += compilerPlugin(%%("paradise") cross CrossVersion.full),
48+
libraryDependencies ++= {
49+
CrossVersion.partialVersion(scalaVersion.value) match {
50+
// if scala 2.11+ is used, quasiquotes are merged into scala-reflect
51+
case Some((2, scalaMajor)) if scalaMajor >= 11 => Seq()
52+
// in Scala 2.10, quasiquotes are provided by macro paradise
53+
case Some((2, 10)) =>
54+
Seq(
55+
%%("quasiquotes") cross CrossVersion.binary
56+
)
57+
}
58+
}
59+
)
60+
}
61+
4362
}
4463

4564
override def projectSettings: Seq[Def.Setting[_]] =

smoketests/src/test/scala/org/scalaexercises/evaluator/Smoketests.scala

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,43 @@
1+
/*
2+
* scala-exercises - evaluator-server-smoke-tests
3+
* Copyright (C) 2015-2016 47 Degrees, LLC. <http://www.47deg.com>
4+
*/
5+
16
package org.scalaexercises.evaluator
27

8+
import io.circe.Printer
39
import org.scalatest._
410
import org.http4s._
511
import org.http4s.client.blaze._
612
import org.http4s.circe._
713
import io.circe.generic.auto._
8-
import scalaz.concurrent.Task
9-
import scala.concurrent.duration._
1014

15+
import scala.concurrent.duration._
1116
import pdi.jwt.{Jwt, JwtAlgorithm}
1217

1318
class Smoketests extends FunSpec with Matchers with CirceInstances {
1419

15-
case class EvaluatorResponse(msg: String,
16-
value: String,
17-
valueType: String,
18-
compilationInfos: Map[String, String])
20+
case class EvaluatorResponse(
21+
msg: String,
22+
value: String,
23+
valueType: String,
24+
compilationInfos: Map[String, String])
1925

2026
implicit val decoder: EntityDecoder[EvaluatorResponse] =
2127
jsonOf[EvaluatorResponse]
2228

23-
val validToken = Jwt.encode(
24-
"""{"user": "scala-exercises"}""",
25-
auth.secretKey,
26-
JwtAlgorithm.HS256)
29+
val validToken =
30+
Jwt.encode("""{"user": "scala-exercises"}""", auth.secretKey, JwtAlgorithm.HS256)
2731

2832
def makeRequest(code: String)(
29-
expectation: EvaluatorResponse => Unit,
30-
failExpectation: Throwable => Unit = fail(_)): Unit = {
33+
expectation: EvaluatorResponse => Unit,
34+
failExpectation: Throwable => Unit = fail(_)): Unit = {
3135

3236
val request = new Request(
3337
method = Method.POST,
34-
uri = Uri.uri("http://scala-evaluator.herokuapp.com/eval"),
38+
uri = Uri.uri("https://scala-evaluator.herokuapp.com/eval"),
3539
headers = Headers(headers)
36-
).withBody(
37-
s"""{"resolvers" : [], "dependencies" : [], "code" : "$code"}""")
40+
).withBody(s"""{"resolvers" : [], "dependencies" : [], "code" : "$code"}""")
3841

3942
val task = client.expect[EvaluatorResponse](request)
4043

@@ -70,10 +73,11 @@ class Smoketests extends FunSpec with Matchers with CirceInstances {
7073
it("should not expose sensitive details by calling sys.env") {
7174
val keywords = List("password", "key", "api")
7275
makeRequest("sys.env") { evaluatorResponse =>
73-
keywords.foreach(kw =>
74-
evaluatorResponse.value.contains(kw) shouldBe false)
76+
keywords.foreach(kw => evaluatorResponse.value.contains(kw) shouldBe false)
7577
}
7678

7779
}
7880
}
81+
82+
override protected def defaultPrinter: Printer = Printer.noSpaces.copy(dropNullKeys = true)
7983
}

0 commit comments

Comments
 (0)