やろうとしたきっかけ

  • shell scriptでリポジトリ内の全パッケージを再帰的に go testをして、かつカバレッジを取るということをやっていた
    • ファイルやテストが増えてきたら、どこで問題が起きているのかがわからなくなってきた
    • せめてテストが起きているパッケージが問題なのかだけでも知りたい

ボツ案

go testの標準出力結果から末尾の行の PASS/FAIL を正規表現で抜き出して、判定する

ググったらこれやってる人が結構多かった。
悪くはないのだけれど、改修とかしたくなったらメンテナンスが面倒な感じがしたのでやめた

採用

go test の戻り値を使ってテストの結果を判定する

検証

go testの戻り値に関する情報が見当たらなかったので検証した。

go test -v # vオプションを指定したのは下記のechoが期待値と一致するか確認するため
echo $? # go test -v の戻り値を取得

結果

検証結果が下記。

テスト結果 戻り値
PASS 0
FAIL 1

これを元にscriptの最後にテスト結果がを出力するようにした
(scriptのコードはいろいろ見せちゃいけないやつがあるので公開できません)