シェルスクリプト用テストツール "shove" v0.8 までの更新のお知らせ
シェルスクリプト用のテストツール "shove" を作って、初めて上の記事で紹介したのは約5ヶ月前になります。
今回は、上記事の時点からこれまでの主な差分をお知らせします。
言うなれば CHANGELOG + αな記事となります。
shove は GitHub で公開しています。URL は下になります:
https://github.com/key-amb/shove
CONTENTS:
グルーピングの新しい記法を追加 (v0.8.1)
今まで T_SUB "..." (( ... ))
という記法でテストコードをグループ化できるようにしていました。
が、なんか微妙だなと思って t::group "..." ({ ... })
という新しい記法を追加しました。
なんか微妙だな、と思った以上に深い理由はあまりなかったりもします^^;
が、2つの記法をサポートするのはコード上、厳しいことになっていたりもするので、古い記法はその内消そうと思ってます。
ので、もし使っている人がいたら新記法に移行をお願いします。(すいませんすいません)
サンプルコードは README を更新していますので、そちらをご覧くださいませ。
テスト用の関数を12個追加 (v0.8.0)
コードをリファクタしていじりやすくなったので、調子に乗って色んな test
関数のオプションでテストできるように t_xxx
な関数を追加しました。
README そのままですが、追加した関数とその使い方は下のようになります:
t_present $str "str is present" # [ -n "$str" ] t_blank $str "str is blank" # [ -z "$str" ] t_exist $path "path exists" # [ -e "$path" ] t_file $path "path is file" # [ -f "$path" ] t_directory $path "path is directory" # [ -d "$path" ] t_symlink $path "path is symlink" # [ -L "$path" ] t_eq $x $y "x == y" # [ $x -eq $y ] t_ne $x $y "x != y" # [ $x -ne $y ] t_gt $x $y "x > y" # [ $x -gt $y ] t_ge $x $y "x >= y" # [ $x -ge $y ] t_lt $x $y "x < y" # [ $x -lt $y ] t_le $x $y "x <= y" # [ $x -le $y ]
右部のコメントの通りに test
関数が実行され、結果が成功ならテストが通ります。
shpec のテストを追加 (v0.7.2)
テストツールのテストを自分自身でやるのは微妙だな、という気はします。
shpec *1 は上の記事でもちょこっと紹介していますが、RSpec ライクな記法でシェルスクリプトのテストを可能にしてくれるツールです。
CI には入れてませんが、テストコードを少し書いて、ときどき手元で実行しています。
shpec では describe ... end
や it ... end
でブロックを作ることができます。が、 shove のグルーピングのようにサブシェルは使っていないようでした。
単に RSpec っぽく書けて、結果もきれいに出せるもの、という理解でいいのかな、と思っています。
コードがミニマルな感じですごくきれいなので、 shove のリファクタで参考にさせてもらいました。
その他にも、少し内部構造をいじったり、ちょっとした改善がいくつか入っていたりします。
シェルスクリプトのテストをしたいシーンがありましたら、shove のことを思い出していただければ幸いです。
Enjoy!