travis ciで失敗したテストを再実行する

perlのmoduleを開発しているとき、travis ciでときどき失敗するテストがあり、失敗するたびにRestart buildボタンをポチっと押すという不毛なことをしていた。

もちろん失敗する原因をちゃんと特定し、テストをなおすのが一番だが、とりあえず失敗したテストを自動でリトライさせるなら下記のように書けばいいことを最近知った。

language: perl
perl:
  - '5.24'
  - '5.22'
  - '5.20'
script:
  - prove --state save -l t || prove --state failed -l
sudo: false

最初のproveで--state saveを指定しておき結果を.proveファイルに保存する。そして失敗したときは、--state failedのテストを対象にproveを再び走らせている。

実際cpmでこうしている。