読者です 読者をやめる 読者になる 読者になる

weblog of key_amb

主にIT関連の技術メモ

シェルスクリプト用テストツール "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 ... endit ... end でブロックを作ることができます。が、 shove のグルーピングのようにサブシェルは使っていないようでした。
単に RSpec っぽく書けて、結果もきれいに出せるもの、という理解でいいのかな、と思っています。

コードがミニマルな感じですごくきれいなので、 shove のリファクタで参考にさせてもらいました。

その他にも、少し内部構造をいじったり、ちょっとした改善がいくつか入っていたりします。

シェルスクリプトのテストをしたいシーンがありましたら、shove のことを思い出していただければ幸いです。

Enjoy!