> なるほどねぇ、こういう事できるよなぁと思いながらコードをながめていたの
> ですが、僕は実際には使わないだろうなとも思いました。
ウッ。ちょっぴりショック。(^^;
> なぜかというと、僕が bourne shellのスクリプトを書く時には、あんまり
> function を作らないんですよね。わりとベタに書いちゃうというか、function
> なしでも十分なものしか書かかなかったって事なんですけど。
実は僕自身もそうなんですよね。
作っておいて言うのもアレですが、結局shell scriptでそれほど複雑な処理を
行うケースが少ないので、テストを書く→テストしやすく書き直すコストの方が
高くて、次第にメンドくさくなってやめてしまうという罠…。
(最初は頑張っていたんですが続きませんでした)
最近は、shell scriptのテストよりコマンド等の自動テストに使う方が便利なの
かなと思っていて、自分でもそういう用途で使うことが殆どです。
仕事上、コマンドのステータスがどうだとか、画面とかログとかに何が出たとか、
そういう確認を山ほどやらないといけないのですが、この手のテストには結構
役立っています。
そんなこんなで、あまり当初の目的を果たせていないという気はするのですが、
それでも以前よりは、shell scriptを書くときにテストを意識した書き方をするよう
になったと思うので、それはそれで良しと思うことにしてます。
> 少し書いてはテストのくり返しですね。で、完成したら色々なパターンで
> テストしてました。あとは、-x で実行結果を見たりとか、そんな感じで
> しょうか。
ここで言うテストというのはshell script全体の挙動というか、ある一つのパスを
通してみて、最終的に何か期待する動作をするかという意味合いですよね。
自分でも同じようにテストを行い、わざわざTestCaseにおこす気になれない
のですが、それが何故なのか結構不思議でした。
で、何でなんだろうと考えてみたんですが、もしかするとこんな理由なのかなと
思った節があるのでちょっと書きます。何かというと、
shell scriptを書く
= 何かしら「ちょっとした事をまとめて」やらせたいから書く
= 他の言語でいう「関数とかクラスとか」に相当する部分を書く
という関係があって、shell scriptの内部をいちいちテストするのは、他の言語
では、関数内部の実装についてこの代入が実行されたかとか、あるエラー
ケースでこの行を通っているか、とかいう事をいちいちテストしているのに当る
のかなということです。
(この辺の話も結局はshell script自体の規模にもよるのだと思います。
当たり前の話だったらすみません)
そう考えると、shell scriptをコマンドとして実行した結果何を期待するかという
事が、丁度関数の結果に何を期待するかに相当するもので、これがshell
scriptでのTestCaseと考えるのが自然な気がします。
これならbshUnitも役に立つかも。
でもそれ以前に需要が無かったりして。(^^;
# 駄文でごめんなさい。
--
/*
* ゆうじ@すーぱあねっと
* yuuji@....net
*/