summaryrefslogtreecommitdiff
path: root/cask
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-07-25 20:17:33 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-07-25 20:17:33 +0800
commit3e636ddada96b7f1a8b10da764b3fce0a360e26f (patch)
tree289404ca1ea46ae2298ab701cfe267af4794dc24 /cask
parentb985aa5d25d97794b26402f936c4323f977c4073 (diff)
downloadcask-3e636ddada96b7f1a8b10da764b3fce0a360e26f.tar.gz
cask-3e636ddada96b7f1a8b10da764b3fce0a360e26f.tar.bz2
cask-3e636ddada96b7f1a8b10da764b3fce0a360e26f.zip
Fix tests
Diffstat (limited to 'cask')
-rw-r--r--cask/src/cask/endpoints/FormEndpoint.scala9
-rw-r--r--cask/src/cask/internal/Router.scala6
-rw-r--r--cask/src/cask/main/Main.scala11
-rw-r--r--cask/test/src/test/cask/ExampleTests.scala8
4 files changed, 18 insertions, 16 deletions
diff --git a/cask/src/cask/endpoints/FormEndpoint.scala b/cask/src/cask/endpoints/FormEndpoint.scala
index 2b8cf25..10d1af3 100644
--- a/cask/src/cask/endpoints/FormEndpoint.scala
+++ b/cask/src/cask/endpoints/FormEndpoint.scala
@@ -4,7 +4,7 @@ import cask.internal.Router.EntryPoint
import cask.internal.Router
import cask.main.Routes
import cask.model.{FormValue, ParamContext, Response}
-import io.undertow.server.handlers.form.{FormParserFactory}
+import io.undertow.server.handlers.form.FormParserFactory
import collection.JavaConverters._
@@ -14,7 +14,7 @@ object FormReader{
def arity = implicitly[QueryParamReader[T]].arity
def read(ctx: ParamContext, label: String, input: Seq[FormValue]) = {
- implicitly[QueryParamReader[T]].read(ctx, label, input.map(_.value))
+ implicitly[QueryParamReader[T]].read(ctx, label, if (input == null) null else input.map(_.value))
}
}
@@ -52,11 +52,12 @@ class postForm(val path: String, override val subpath: Boolean = false) extends
.asScala
.map(k => (k, formData.get(k).asScala.map(FormValue.fromUndertow).toSeq))
-
val pathBindings =
bindings.map{case (k, v) => (k, Seq(new FormValue.Plain(v, new io.undertow.util.HeaderMap())))}
- entryPoint.invoke(routes, ctx, pathBindings ++ formDataBindings)
+ val allBindings = pathBindings ++ formDataBindings
+
+ entryPoint.invoke(routes, ctx, allBindings)
.asInstanceOf[Router.Result[Response]]
}
}
diff --git a/cask/src/cask/internal/Router.scala b/cask/src/cask/internal/Router.scala
index 9302e45..b89fef3 100644
--- a/cask/src/cask/internal/Router.scala
+++ b/cask/src/cask/internal/Router.scala
@@ -124,9 +124,7 @@ object Router{
}
}
-
type FailMaybe = Either[Seq[Result.ParamError], Any]
- type FailAll = Either[Seq[Result.ParamError], Seq[Any]]
def validate(args: Seq[FailMaybe]): Result[Seq[Any]] = {
val lefts = args.collect{case Left(x) => x}.flatten
@@ -155,9 +153,7 @@ object Router{
tryEither(arg.reads.read(ctx, arg.name, x), Result.ParamError.Invalid(arg, x.toString, _)).left.map(Seq(_))
}
}
-
}
-
}
@@ -201,7 +197,7 @@ class Router[C <: Context](val c: C) {
else None
}
val argListSymbol = q"${c.fresh[TermName]("argsList")}"
- val extrasSymbol = q"${c.fresh[TermName]("extras")}"
+
val defaults = for ((arg, i) <- flattenedArgLists.zipWithIndex) yield {
val arg = TermName(c.freshName())
hasDefault(i).map(defaultName => q"($arg: $curCls) => $arg.${newTermName(defaultName)}")
diff --git a/cask/src/cask/main/Main.scala b/cask/src/cask/main/Main.scala
index f7789e3..9362e20 100644
--- a/cask/src/cask/main/Main.scala
+++ b/cask/src/cask/main/Main.scala
@@ -1,5 +1,7 @@
package cask.main
+import java.io.{PrintWriter, StringWriter}
+
import cask.model._
import cask.internal.Router.EntryPoint
import cask.internal.{DispatchTrie, Router, Util}
@@ -139,10 +141,13 @@ abstract class BaseMain{
val thingies = x.map{
case Router.Result.ParamError.Invalid(p, v, ex) =>
val literalV = literalize(v)
-
- s"${p.name}: ${p.typeString} = $literalV failed to parse with $ex"
+ val trace = new StringWriter()
+ ex.printStackTrace(new PrintWriter(trace))
+ s"${p.name}: ${p.typeString} = $literalV failed to parse with $ex\n$trace"
case Router.Result.ParamError.DefaultFailed(p, ex) =>
- s"${p.name}'s default value failed to evaluate with $ex"
+ val trace = new StringWriter()
+ ex.printStackTrace(new PrintWriter(trace))
+ s"${p.name}'s default value failed to evaluate with $ex\n$trace"
}
s"""The following $argumentsStr failed to parse:
diff --git a/cask/test/src/test/cask/ExampleTests.scala b/cask/test/src/test/cask/ExampleTests.scala
index d336627..c1c007e 100644
--- a/cask/test/src/test/cask/ExampleTests.scala
+++ b/cask/test/src/test/cask/ExampleTests.scala
@@ -76,14 +76,14 @@ object ExampleTests extends TestSuite{
resp.text() ==> "my-best-image.txt"
}
'FormJsonPost - test(FormJsonPost){ host =>
- requests.post(host + "/json", data = """{"value1": true, "value2": [1, 2]""") ==>
- "OK true [1, 2]"
+ requests.post(host + "/json", data = """{"value1": true, "value2": [3]}""").text() ==>
+ "OK true Vector(3)"
requests.post(
host + "/form",
data = Seq("value1" -> "hello", "value2" -> "1", "value2" -> "2")
- ) ==>
- "OK hello 1 2"
+ ).text() ==>
+ "OK Plain(hello,null) List(1, 2)"
}
}