Goでos.Exit(1)の終了をテストする
最初に
Goはまだまだ詳しくなく、かつ下に書いたstack overflowの内容は2016年頃のものなので、もっと良い方法があるのかもしれない。
が、今回ググってみたところ、一番しっくり来た内容がこれだったので、これを採用した。
Goでos.Exit(1)の終了をテストした備忘録
今日学んだ備忘録。といっても下記のstack overflowの一番上の回答を参考にしただけ。
(関係ないけどstack overflowの特定の回答のリンクってどうやって取得するんだっけ)
詳細は上のリンクを読むのが早いのだけど、一応動きを調べたのでその内容だけメモ書き的に残しておく。
下記は実際にコマンドを実行した後の、実行結果に対するテスト処理。
err := cmd.Run() if e, ok := err.(*exec.ExitError); ok && !e.Success() { return }
ここで実行エラーが err
という変数に入る。
cmd.Run()
内の処理が成功している場合、err
には nil
が入るので、その後の変換処理 err.(*exec.ExitError)
は失敗する。
そのためこのテスト自体も失敗となる。