Bash で Power Assert 風のものを作った
GitHub - fjkz/power-assert-bash: Power Assert for Bash
Bash で Power Assert 風のものを作りました。*1
なぜか Bash には assert がありません。なので、 Bash でテストを書くときは、 set -e として、
[ "$actual" == "$expect" ]
とか書きます。しかし、これだと失敗したときに、情報がないので困ります。set -x としてもいいのですが、これ欲しくない表示も出て、ウザイのです。また結果も見づらい。Bats もテストのどこでエラーとなったかは教えてくれるが、変数の中身とかは教えてくれません。
そこで、 Power Assert 風のものを作ってみました。 Power Assert とは、Spockに含まれる assert の結果を美しく表示してくれる機能です。
. power-assert.bash
A="HELLO WORLD"
[[[ "${A}" == "HELL WORLD" ]]]
. か source コマンドで power-assert.bash を読み込むと、 [[[ コマンド (実体は関数) が使えるようになります。 シェルスクリプトの [ コマンドとほとんど一緒で、条件が否なら 1 のステータスコードを返し、正なら 0 を返します。しかし、[ と異なり、条件が否の場合はエラーメッセージを吐きます。
上記のスクリプトを実行すると、以下のメッセージが表示されます。
assertion error:
[[[ "${A}" == "HELL WORLD" ]]] -> false
|
"HELLO WORLD"
at function main (sample.sh:3)
まあ、ただこれだけです。 assert_equals みたいな関数を用意するよりは、いいと思っているがどうなのだろう。