Practice of Programming

プログラム とか Linuxとかの話題

.tファイルを t/hoge/*.t に置きたいとき

今日はYAPC::Asia 2008 でしたね。僕は最近の体調の悪さ具合を考えて、午前中は自分の体調と相談してました。
いけそうだなーと思ったので、午後から参加。


YAPCでテストの話題があったから、書いている...わけではないけど。


ExtUtils::MakeMaker を使ってる場合ですが、Tutorialには、
t/ の下にフラットにファイルを置かないといけないと書いてある。

t/ Tests for your modules go here. Each test filename ends with a .t. So t/foo.t/ 'make test' will run these tests. The directory is
flat, you cannot, for example, have t/foo/bar.t run by 'make test'.

でも、ちょっと、ごちゃーってしてやだなぁとか思うこともあるかもしれない。


コードを読むと、スペース区切りで split したやつを、glob に渡してるだけなので、
下記みたいな感じでOK。

use 5.008004;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
    NAME              => 'Module',
    # ...
    test => { TESTS => 't/*.t t/*/*.t'},
    # ...
);

んな感じで、用意されてるオプションで事足りるんでした。
チュートリアルに書いたらいいのに、とか思った。


Module::Install の場合、

tests_recursive;

って、書くらしい。


テストつながりで、Devel::Cover とかも、なかなか面白いですよねぇ。
後は、Test::Baseでサブクラス作るのが良いと思います。
以前作ったときは、Plagger のテストクラスとか参考にしました。
下記を見てもOK。
http://www.google.com/codesearch?q=%22use+Test%3A%3ABase+-Base%22&hl=ja&btnG=%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%A4%9C%E7%B4%A2