diff --git a/main/src/main/scala/sbt/ScriptedPlugin.scala b/main/src/main/scala/sbt/ScriptedPlugin.scala index b503781aa..fe41e772b 100644 --- a/main/src/main/scala/sbt/ScriptedPlugin.scala +++ b/main/src/main/scala/sbt/ScriptedPlugin.scala @@ -136,7 +136,10 @@ object ScriptedPlugin extends AutoPlugin { val groupP = token(id.examples(pairMap.keySet)) <~ token('/') // A parser for page definitions - val pageNumber = NatBasic & not('0', "zero page number") + val pageNumber = (NatBasic & not('0', "zero page number")).flatMap { i => + if (i <= pairs.size) Parser.success(i) + else Parser.failure(s"$i exceeds the number of tests (${pairs.size})") + } val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap { case (page, total) if page <= total => success(ScriptedTestPage(page, total)) case (page, total) => failure(s"Page $page was greater than $total") diff --git a/project/Scripted.scala b/project/Scripted.scala index ba2685340..10a52f10d 100644 --- a/project/Scripted.scala +++ b/project/Scripted.scala @@ -53,7 +53,10 @@ object Scripted { val groupP = token(id.examples(pairMap.keySet)) <~ token('/') // A parser for page definitions - val pageNumber = NatBasic & not('0', "zero page number") + val pageNumber = (NatBasic & not('0', "zero page number")).flatMap { i => + if (i <= pairs.size) Parser.success(i) + else Parser.failure(s"$i exceeds the number of tests (${pairs.size})") + } val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap { case (page, total) if page <= total => success(ScriptedTestPage(page, total)) case (page, total) => failure(s"Page $page was greater than $total")