シェルスクリプトでテストが書きたいことがよくある

シェルスクリプトのテストを書きたい時というのは自分はあまり無いんだけど、シェルスクリプトでテストを書きたいことはわりと頻繁にある。なんかした後に diff が{なかったら,あったら}OKみたいなやつとか

0 で終了しなければ、コケました、詳細は適当に stdout/stderr に出しといたんで。でもいいんだけど、出力する形式が決まってたほうがなんか嬉しい気がしたから作った

$ echo "[ 0 != 1 ]" > test_1.sh
$ echo "[ 0 != 0 ]" > test_2.sh
$ echo "diff -u test_1.sh test_2.sh" > test_3.sh
$ tapf ./test_*.sh
TAP version 13
1..3
ok 1 - ./test_1.sh
not ok 2 - ./test_2.sh
not ok 3 - ./test_3.sh
  ---
  stdout: |
    --- test_1.sh       2016-01-24 23:34:58.000000000 +0900
    +++ test_2.sh       2016-01-24 23:34:58.000000000 +0900
    @@ -1 +1 @@
    -[ 0 != 1 ]
    +[ 0 != 0 ]

github.com