あらすじ
go test
が出力するログはシンプルです。シンプルなのはいいんですがテストサマリ的な情報が乏しくて、ログを全部見返さないとどのテストが落ちたのか分からなくなりがちという問題があります。
tparseというツールを使うと、go test
を使いつつテストサマリが見れるようになるので紹介します。
tparseについて
tparseは、go test
の出力をパースして人間に分かりやすいサマリを生成してくれるツールです。
最も簡単な使い方としては、READMEにあるように go test
の出力をそのままパイプする (あるいは一時ファイルを経由する) ことで動作します。
% set -o pipefail && go test ./... -json | tparse -all # あるいは % go test ./... -json > fmt.out % tparse -all -file=fmt.out
tparseとGitHub ActionsのJob Summaryを組み合わせる
こっちが本題です。
GitHub ActionsにはJob Summaryという機能があり、ジョブの結果をまとめたレポートをMarkdown形式でジョブに添付することができます。詳しくはGitHubのブログ記事を読んでください。
tparseはテストサマリをいくつかの形式で生成することができます。対応している形式の中にはMarkdownがあります。
ということで、tparseが生成するMarkdown形式のテストサマリをJob Summaryとして出力できるようにしてみましょう。Job Summaryを生成するステップを分ける場合は、以下のように go test
の出力を tee
コマンドで一時ファイルに出しつつ引き回したり、if: always()
でテストがコケたときも実行されるようにしたりなどいくつか気をつけるポイントがあります。
- name: Test run: | set -o pipefail go test ./... -json | tee ./go-test.out | go run github.com/mfridman/tparse -all - name: Add job summary if: always() run: | go run github.com/mfridman/tparse -file ./go-test.out -format markdown >> $GITHUB_STEP_SUMMARY
うまくいくと以下のようなJob Summaryが生成されると思います。テストの数が多くなると見慣れた表形式でテストの状況を俯瞰できて便利そうですね。
おわりに
tparseで go test
のテストサマリを生成し、GitHub ActionsのJob Summaryと組み合わせる例について紹介しました。普段から使っているテストランナーは差し替えずに、テストの出力結果をパースして整形してくれるのがUNIX的でいいですね。
Goのテストが出力するログが見づらいと思っている方はぜひ使ってみてください。