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
8 changes: 5 additions & 3 deletions build.mill
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import mill.util.VcsVersion
val scala213 = "2.13.15"
val scala212 = "2.12.20"
val scala3 = "3.3.4"
val scala3Latest = "3.7.3"
val scalaJS = "1.17.0"
val communityBuildDottyVersion = sys.props.get("dottyVersion").toList

Expand Down Expand Up @@ -206,6 +207,7 @@ def zippedExamples = Task {
build.example.formJsonPost.moduleDir,
build.example.httpMethods.moduleDir,
build.example.minimalApplication.moduleDir,
build.example.minimalApplicationCross.moduleDir,
build.example.minimalApplication2.moduleDir,
build.example.minimalApplicationWithLoom.moduleDir,
build.example.redirectAbort.moduleDir,
Expand Down Expand Up @@ -239,13 +241,13 @@ def zippedExamples = Task {
f / last / "build.mill",
os.read(f / last / "build.mill")
.replaceAll("package build.*", "package build")
.replaceAll("def moduleDeps =.*", "")
.replaceAll("def moduleDeps =.*\n", "")
.replaceAll("///", "//|")
.replaceAll("app =>", "")
.replaceFirst(
"object app extends.*\ntrait AppModule extends CrossScalaModule(.*)\\{",
s"object app extends ScalaModule $$1\\{\n def scalaVersion = \"${scala213}\"")
.replaceAll("build.scala3", s"\"${scala3}\"")
s"object app extends ScalaModule $$1\\{\n def scalaVersion = \"${scala3Latest}\"")
.replaceAll("build.scala3", s"\"${scala3Latest}\"")
.replaceFirst(
"def mvnDeps = Seq\\[Dep\\]\\(",
"def mvnDeps = Seq(\n mvn\"com.lihaoyi::cask:" + releaseTag + "\","
Expand Down
9 changes: 3 additions & 6 deletions example/minimalApplication/app/src/MinimalApplication.scala
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package app
object MinimalApplication extends cask.MainRoutes{
object MinimalApplication extends cask.MainRoutes:
@cask.get("/")
def hello() = {
def hello() =
"Hello World!"
}

@cask.post("/do-thing")
def doThing(request: cask.Request) = {
def doThing(request: cask.Request) =
request.text().reverse
}

initialize()
}
8 changes: 3 additions & 5 deletions example/minimalApplication/app/test/src/ExampleTests.scala
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package app
import io.undertow.Undertow

import utest._
import utest.*

object ExampleTests extends TestSuite{
def withServer[T](example: cask.main.Main)(f: String => T): T = {
object ExampleTests extends TestSuite:
def withServer[T](example: cask.main.Main)(f: String => T): T =
val server = Undertow.builder
.addHttpListener(8081, "localhost")
.setHandler(example.defaultHandler)
Expand All @@ -14,7 +14,6 @@ object ExampleTests extends TestSuite{
try f("http://localhost:8081")
finally server.stop()
res
}

val tests = Tests {
test("MinimalApplication") - withServer(MinimalApplication) { host =>
Expand All @@ -30,4 +29,3 @@ object ExampleTests extends TestSuite{
requests.delete(s"$host/do-thing", check = false).statusCode ==> 405
}
}
}
4 changes: 2 additions & 2 deletions example/minimalApplication/package.mill
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package build.example.minimalApplication
import mill._, scalalib._

object app extends Cross[AppModule](build.scalaVersions)
object app extends Cross[AppModule](build.scala3Latest)
trait AppModule extends CrossScalaModule{

def moduleDeps = Seq(build.cask(crossScalaVersion))
def moduleDeps = Seq(build.cask(build.scala3))

def mvnDeps = Seq[Dep](
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package app
object MinimalApplicationCross extends cask.MainRoutes{
@cask.get("/")
def hello() = {
"Hello World!"
}

@cask.post("/do-thing")
def doThing(request: cask.Request) = {
request.text().reverse
}

initialize()
}
33 changes: 33 additions & 0 deletions example/minimalApplicationCross/app/test/src/ExampleTests.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package app
import io.undertow.Undertow

import utest._

object ExampleTests extends TestSuite{
def withServer[T](example: cask.main.Main)(f: String => T): T = {
val server = Undertow.builder
.addHttpListener(8081, "localhost")
.setHandler(example.defaultHandler)
.build
server.start()
val res =
try f("http://localhost:8081")
finally server.stop()
res
}

val tests = Tests {
test("MinimalApplication") - withServer(MinimalApplicationCross) { host =>
val success = requests.get(host)

success.text() ==> "Hello World!"
success.statusCode ==> 200

requests.get(s"$host/doesnt-exist", check = false).statusCode ==> 404

requests.post(s"$host/do-thing", data = "hello").text() ==> "olleh"

requests.delete(s"$host/do-thing", check = false).statusCode ==> 405
}
}
}
18 changes: 18 additions & 0 deletions example/minimalApplicationCross/package.mill
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package build.example.minimalApplicationCross
import mill._, scalalib._

object app extends Cross[AppModule](build.scalaVersions)
trait AppModule extends CrossScalaModule{

def moduleDeps = Seq(build.cask(crossScalaVersion))

def mvnDeps = Seq[Dep](
)
object test extends ScalaTests with TestModule.Utest{

def mvnDeps = Seq(
mvn"com.lihaoyi::utest::0.8.4",
mvn"com.lihaoyi::requests::0.9.0",
)
}
}
6 changes: 3 additions & 3 deletions example/todo/package.mill
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package build.example.todo
import mill._, scalalib._

object app extends Cross[AppModule](build.scala213)
object app extends Cross[AppModule](build.scala3Latest)
trait AppModule extends CrossScalaModule{

def moduleDeps = Seq(build.cask(crossScalaVersion))
def moduleDeps = Seq(build.cask(build.scala3))

def mvnDeps = Seq[Dep](
mvn"org.xerial:sqlite-jdbc:3.42.0.0",
mvn"com.lihaoyi::scalasql:0.1.0",
mvn"com.lihaoyi::scalasql:0.2.2",
mvn"com.lihaoyi::scalatags:0.12.0",
mvn"org.slf4j:slf4j-simple:1.7.30",
)
Expand Down
2 changes: 1 addition & 1 deletion example/todoDb/app/src/TodoMvcDb.scala
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ object TodoMvcDb extends cask.MainRoutes{

case class Todo[T[_]](id: T[Int], checked: T[Boolean], text: T[String])
object Todo extends scalasql.Table[Todo]{
implicit def todoRW = upickle.default.macroRW[Todo[Sc]]
given todoRW: upickle.default.ReadWriter[Todo[Sc]] = upickle.default.macroRW[Todo[Sc]]
}

sqliteClient.getAutoCommitClientConnection.updateRaw(
Expand Down
2 changes: 1 addition & 1 deletion example/todoDb/app/test/src/ExampleTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ object ExampleTests extends TestSuite{
requests.post(s"$host/add", data = "new Task")

// Make sure endpoint failures do not commit their transaction
requests.post(s"$host/add", data = "FORCE FAILURE", check = false).statusCode ==> 500
requests.post(s"$host/add", data = ("FORCE FAILURE": requests.RequestBlob), check = false).statusCode ==> 500

requests.get(s"$host/list/active").text() ==>
"""[{"id":3,"checked":false,"text":"new Task"}]"""
Expand Down
6 changes: 3 additions & 3 deletions example/todoDb/package.mill
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package build.example.todoDb
import mill._, scalalib._

object app extends Cross[AppModule](build.scala213)
object app extends Cross[AppModule](build.scala3Latest)
trait AppModule extends CrossScalaModule{

def moduleDeps = Seq(build.cask(crossScalaVersion))
def moduleDeps = Seq(build.cask(build.scala3))

def mvnDeps = Seq[Dep](
mvn"org.xerial:sqlite-jdbc:3.42.0.0",
mvn"com.lihaoyi::scalasql:0.1.0",
mvn"com.lihaoyi::scalasql:0.2.2",
)

object test extends ScalaTests with TestModule.Utest{
Expand Down
2 changes: 1 addition & 1 deletion example/todoDbWithLoom/app/src/TodoMvcDbWithLoom.scala
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ object TodoMvcDbWithLoom extends cask.MainRoutes {

case class Todo[T[_]](id: T[Int], checked: T[Boolean], text: T[String])
object Todo extends scalasql.Table[Todo]{
implicit def todoRW = upickle.default.macroRW[Todo[Sc]]
given todoRW: upickle.default.ReadWriter[Todo[Sc]] = upickle.default.macroRW[Todo[Sc]]
}

sqliteClient.getAutoCommitClientConnection.updateRaw(
Expand Down
2 changes: 1 addition & 1 deletion example/todoDbWithLoom/app/test/src/ExampleTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ object ExampleTests extends TestSuite{
requests.post(s"$host/add", data = "new Task")

// Make sure endpoint failures do not commit their transaction
requests.post(s"$host/add", data = "FORCE FAILURE", check = false).statusCode ==> 500
requests.post(s"$host/add", data = ("FORCE FAILURE": requests.RequestBlob), check = false).statusCode ==> 500

requests.get(s"$host/list/active").text() ==>
"""[{"id":3,"checked":false,"text":"new Task"}]"""
Expand Down
7 changes: 3 additions & 4 deletions example/todoDbWithLoom/package.mill
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package build.example.todoDbWithLoom
import mill._, scalalib._
import mill.api.ModuleRef

object app extends Cross[AppModule](build.scala213)
object app extends Cross[AppModule](build.scala3Latest)
trait AppModule extends CrossScalaModule{

private def parseJvmArgs(argsStr: String) = {
Expand All @@ -28,11 +28,11 @@ trait AppModule extends CrossScalaModule{
def jvmId = "temurin:23.0.1"
def jvmIndexVersion = "latest.release"

def moduleDeps = Seq(build.cask(crossScalaVersion))
def moduleDeps = Seq(build.cask(build.scala3))

def mvnDeps = Seq[Dep](
mvn"org.xerial:sqlite-jdbc:3.42.0.0",
mvn"com.lihaoyi::scalasql:0.1.0",
mvn"com.lihaoyi::scalasql:0.2.2",
)

object test extends ScalaTests with TestModule.Utest {
Expand All @@ -42,4 +42,3 @@ trait AppModule extends CrossScalaModule{
)
}
}

Loading