.t ファイルを t/ のサブディレクトリに置いたときの対応
ちょっとハマったので、メモ。(こういう話題のエントリは、タイトルのつけ方が難しい・・・)
CPAN形式のディレクトリ構成にして自動テストをする場合、デフォルトでは、Makefile.PL と同階層にある t/ ディレクトリ直下のテストファイル(*.t)が実行されます。つまり、
$ perl Makefile.PL $ make $ make test
とテストを実行した場合、
t/*.t
は実行されるけど、
t/*/*.t
といったように、t/ ディレクトリにサブディレクトリを作成してその中に置かれた .t ファイルは実行されません。
make test を使う場合
このようなサブディレクトリに置いた .t ファイルを実行するには、Module::Install を使っている場合、Makefile.PL で tests() 関数を使って明示的に指定すればOKです。
use strict;
use inc::Module::Install;
# 省略
tests('t/*.t t/*/*.t t/*/*/*.t')
WriteAll;
use inc::Module::Install;
# 省略
tests('t/*.t t/*/*.t t/*/*/*.t')
WriteAll;
モダンPerl入門 の 172ページを参考にしたんですが、tests() 関数が、「test() 関数」と typo になっていたので、小一時間ほどハマったのでした・・・
prove コマンドを使う場合
ちなみに、prove を使っている場合は、-r オプションをつけて実行すれば、t/ ディレクトリを再帰的に見てくれます。
$ prove -r
prove のほうが再帰的に見てくれるので賢いですね。
About this entry
- Published:
- 2009/07/03
- Category:
- web development
- Tags:
-
perl
- Response:
- 0 comment | 0 trackback
- Bookmark:
2 users
0 user
0 user
オススメ



No Trackbacks
trackback uri:コメントやトラックバックは承認待ちになる場合がありますので、すぐに反映されない場合はしばらくお待ちください。