Browse Source

Update Scala SNUnit (#9431)

Lorenzo Gabriele 8 months ago
parent
commit
9d90d29dad

+ 3 - 3
frameworks/Scala/snunit/build.sbt

@@ -1,9 +1,9 @@
 import scala.scalanative.build._
 
-scalaVersion := "2.13.10"
+scalaVersion := "3.5.2"
 
-val snunitVersion = "0.3.0"
-val jsoniterScalaVersion = "2.20.6"
+val snunitVersion = "0.10.2"
+val jsoniterScalaVersion = "2.31.3"
 
 libraryDependencies ++= Seq(
   "com.github.lolgab" %%% "snunit" % snunitVersion,

+ 1 - 1
frameworks/Scala/snunit/project/build.properties

@@ -1 +1 @@
-sbt.version=1.8.0
+sbt.version=1.10.5

+ 1 - 1
frameworks/Scala/snunit/project/plugins.sbt

@@ -1 +1 @@
-addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.9")
+addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.6")

+ 7 - 7
frameworks/Scala/snunit/snunit.dockerfile

@@ -1,12 +1,12 @@
-FROM debian:bullseye-slim as builder
+FROM debian:bookworm-slim as builder
 
 RUN apt-get update && apt-get install -y curl gnupg && \
-  echo "deb https://repo.scala-sbt.org/scalasbt/debian /" > /etc/apt/sources.list.d/sbt.list && \
+  echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | tee /etc/apt/sources.list.d/sbt.list  && \
   curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | apt-key add - && \
   curl -sL https://nginx.org/keys/nginx_signing.key | apt-key add - && \
-  echo "deb https://packages.nginx.org/unit/debian/ bullseye unit" > /etc/apt/sources.list.d/unit.list && \
-  echo "deb-src https://packages.nginx.org/unit/debian/ bullseye unit" >> /etc/apt/sources.list.d/unit.list && \
-  apt-get update && apt-get install -y clang unit-dev=1.29* openjdk-11-jdk sbt && \
+  echo "deb https://packages.nginx.org/unit/debian/ bookworm unit" > /etc/apt/sources.list.d/unit.list && \
+  echo "deb-src https://packages.nginx.org/unit/debian/ bookworm unit" >> /etc/apt/sources.list.d/unit.list && \
+  apt-get update && apt-get install -y clang unit-dev=1.33* openjdk-17-jdk sbt=1.10.5 && \
   apt-get purge -y gnupg
 
 WORKDIR /workdir
@@ -15,9 +15,9 @@ COPY . .
 
 RUN sbt nativeLink
 
-FROM nginx/unit:1.29.1-minimal
+FROM unit:1.33.0-minimal
 
 COPY /config.sh /docker-entrypoint.d/
-COPY --from=builder /workdir/target/scala-2.13/workdir-out /app/example
+COPY --from=builder /workdir/target/scala-3.5.2/workdir /app/example
 
 EXPOSE 8080

+ 33 - 39
frameworks/Scala/snunit/src/main/scala/Main.scala

@@ -1,43 +1,37 @@
-import com.github.plokhotnyuk.jsoniter_scala.core._
-import com.github.plokhotnyuk.jsoniter_scala.macros._
-import snunit._
+import com.github.plokhotnyuk.jsoniter_scala.core.*
+import com.github.plokhotnyuk.jsoniter_scala.macros.*
+import snunit.*
 
-final case class Message(message: String)
+final case class Message(message: String) derives ConfiguredJsonValueCodec
 
-object Message {
-  implicit final val codec: JsonValueCodec[Message] = JsonCodecMaker.make
-}
+final val applicationJson = Headers("Content-Type" -> "application/json")
+final val textPlain = Headers("Content-Type" -> "text/plain")
 
-object Main {
-  val applicationJson = Seq("Content-Type" -> "application/json")
-  val textPlain = Seq("Content-Type" -> "text/plain")
+inline def notFound(req: Request) = req.send(
+  statusCode = StatusCode.NotFound,
+  content = "Not found",
+  headers = textPlain
+)
 
-  @inline
-  private def notFound(req: Request) = req.send(
-    statusCode = StatusCode.NotFound,
-    content = "Not found",
-    headers = textPlain
-  )
-
-  def main(args: Array[String]): Unit = {
-    SyncServerBuilder
-      .build(req =>
-        if (req.method == Method.GET) {
-          if(req.target == "/plaintext")
-            req.send(
-              statusCode = StatusCode.OK,
-              content = "Hello, World!",
-              headers = textPlain
-            )
-          else if(req.target == "/json")
-            req.send(
-              statusCode = StatusCode.OK,
-              content = writeToArray(Message("Hello, World!")),
-              headers = applicationJson
-            )
-          else notFound(req)
-        } else notFound(req)
-      )
-      .listen()
-  }
-}
+@main
+def main =
+  SyncServerBuilder
+    .setRequestHandler(req =>
+      if (req.method == Method.GET) {
+        if(req.target == "/plaintext")
+          req.send(
+            statusCode = StatusCode.OK,
+            content = "Hello, World!",
+            headers = textPlain
+          )
+        else if(req.target == "/json")
+          req.send(
+            statusCode = StatusCode.OK,
+            content = writeToArray(Message("Hello, World!")),
+            headers = applicationJson
+          )
+        else notFound(req)
+      } else notFound(req)
+    )
+    .build()
+    .listen()