sbtのtestOnlyで入力にマッチするテストが1つもなかった場合に失敗にする方法

testResultLogger := TestResultLogger.Defaults.Main(
  printNoTests = TestResultLogger((_, _, _) => sys.error("そんな名前のテストないよ(^Д^)www"))
)

以下簡単な解説

  • デフォルトの動作は成功ですね?個人的には困ってないけど、困ってるという話をある程度聞く
  • 雑にエラー投げたけれど、そのあたりは個々でいい感じにしてください
  • testResultLoggerというKeyがsbt 0.13.5からなので、それより前のversionは知りません
  • まだ思いついたばかりで、色々試してないので、 (細かい or 致命的な) 欠点が見つかるかもしれません


あと、すでに判明してる問題として

val root = project.aggregate(foo, bar)

val foo = project

val bar = project

となっていて

  • rootで"testOnly hoge"を実行
  • fooにhogeという名前のテストが存在したので、それは無事実行される
  • しかしbarにhogeがないので、エラーになる
  • なのでrootでの"testOnly hoge"自体もエラーになってしまう

という問題があります。


色々改善点とか、根本的にもっと優れた方法あったら教えて下さい