mirror of https://github.com/sbt/sbt.git
Merge pull request #5158 from eatkins/scripted-parser
Scripted parser fixes
This commit is contained in:
commit
22a9fd4de0
|
|
@ -136,7 +136,10 @@ object ScriptedPlugin extends AutoPlugin {
|
||||||
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
|
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
|
||||||
|
|
||||||
// A parser for page definitions
|
// 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 {
|
val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap {
|
||||||
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
|
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
|
||||||
case (page, total) => failure(s"Page $page was greater than $total")
|
case (page, total) => failure(s"Page $page was greater than $total")
|
||||||
|
|
@ -144,7 +147,7 @@ object ScriptedPlugin extends AutoPlugin {
|
||||||
|
|
||||||
// Grabs the filenames from a given test group in the current page definition.
|
// Grabs the filenames from a given test group in the current page definition.
|
||||||
def pagedFilenames(group: String, page: ScriptedTestPage): Seq[String] = {
|
def pagedFilenames(group: String, page: ScriptedTestPage): Seq[String] = {
|
||||||
val files = pairMap(group).toSeq.sortBy(_.toLowerCase)
|
val files = pairMap.get(group).toSeq.flatten.sortBy(_.toLowerCase)
|
||||||
val pageSize = files.size / page.total
|
val pageSize = files.size / page.total
|
||||||
// The last page may loose some values, so we explicitly keep them
|
// The last page may loose some values, so we explicitly keep them
|
||||||
val dropped = files.drop(pageSize * (page.page - 1))
|
val dropped = files.drop(pageSize * (page.page - 1))
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,10 @@ object Scripted {
|
||||||
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
|
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
|
||||||
|
|
||||||
// A parser for page definitions
|
// 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 {
|
val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap {
|
||||||
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
|
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
|
||||||
case (page, total) => failure(s"Page $page was greater than $total")
|
case (page, total) => failure(s"Page $page was greater than $total")
|
||||||
|
|
@ -61,7 +64,7 @@ object Scripted {
|
||||||
|
|
||||||
// Grabs the filenames from a given test group in the current page definition.
|
// Grabs the filenames from a given test group in the current page definition.
|
||||||
def pagedFilenames(group: String, page: ScriptedTestPage): Seq[String] = {
|
def pagedFilenames(group: String, page: ScriptedTestPage): Seq[String] = {
|
||||||
val files = pairMap(group).toSeq.sortBy(_.toLowerCase)
|
val files = pairMap.get(group).toSeq.flatten.sortBy(_.toLowerCase)
|
||||||
val pageSize = if (page.total == 0) files.size else files.size / page.total
|
val pageSize = if (page.total == 0) files.size else files.size / page.total
|
||||||
// The last page may loose some values, so we explicitly keep them
|
// The last page may loose some values, so we explicitly keep them
|
||||||
val dropped = files.drop(pageSize * (page.page - 1))
|
val dropped = files.drop(pageSize * (page.page - 1))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue