checkターゲットを利用する

本当は先にテストを用意するんかな。とりあえずは UnitTest の話ではなく、実行ファイルのテスト。

ずっと Makefile は手書き派だったので、こんな感じで書いてた。

test: $(TARGET)
    $(TARGET) --verbose -o testout testin

> make test

まあ、単純。autotols 使っても Makefile.am の一番下にでも書いておけばまあ動く。難点はテストデータがソースディレクトリにも置かれること。

check ターゲットを利用してみる

てことで、お作法通りに check ターゲットを利用できるようにしてみる。

http://sources.redhat.com/automake/automake.html#Tests をみてみたのだけれど、なんで pl とか py なのってことで、試行錯誤。

一番シンプルに書いたつもり。プログラムは shtml を読んで html に出力する。

ディレクトリ構成は書いてあるとおり tests としてそこに Makefile.am を作る。で、TESTS にテスト用のファイルを書く。

TESTS = index.shtml example/index.shtml

テスト環境として、作成されたプログラム、テスト用の引数を指定する。

TESTS_ENVIRONMENT = ../source/xxx --verbose --loglevel 0 --logfile $${tst/.shtml/.log} -o $${tst/.shtml/.html}

あとは make check でテストを行う。プログラムの戻り値で PASS FAIL が出てくれる。
パッケージに含める部分とかは省略。

動かしてみて

実行環境で出来るはずのプログラム指定するのは本当に正しいのかわかんなかった。
tst 変数は automake のバージョン依存になるかも知れないのであまりおすすめできないかも知れない。
PASS とかでると、結構うれしいので積極的に check ターゲット用意しよう。
main 関数の戻り値はちゃんと指定してね。Win の IDEGUI しか作ったことのない新人さんはよぉく覚えておいてください。