Toraのテストケースの書き方
C++ レベルでテストした方がいい部分は C++ でユニットテストを書きます。たとえばスキャナとか、Value 型の実装とかです。tests/test_foo.t というのがそれです。ここを増やしすぎるとコンパイル時間が増大するので、できるだけすくなくなるようにします。
言語のベースとなる部分は、perl でテストします。tora コマンドを IPC::Open3 で起動して、stdin からプログラムをながしこみます。stdout と stderr をみて、確認します。 t/*.t がそれです。
ベースがととのったら、tora そのものでテストします。lib/Test/More.tra ができたあたりからそうしてます。 t/tra/*.tra がそれですね。ここが一番テストが楽なので、ここをできるだけ厚くします。
C++ のテストは nanotap.h をつかい、perl のテストは Test::More をつかい、tora のテストは lib/Test/More.tra をつかい、それぞれが TAP で出力しているので、prove でまとめてテストできます。
prove は最近のバージョンだと、拡張子でフックする機能があるので、それをつかいます。--source Tora --source Executable とか指定すると、tora のテストもテストできるようになります。tora のハンドラは util/TAP/Parser/SourceHandler/Tora.pm においてあります。
どんな形でかいても TAP プロトコルで出力さえしておけば、言語の壁をこえられるのでとても便利ですね
Published: 2012-04-02(Mon) 00:22