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
みたいな関数を用意するよりは、いいと思っているがどうなのだろう。