h2xsとmake

単体テストをきちんとやりたい、と思って色々探していたらこんな記事を発見。
http://www.sixapart.jp/techtalk/2007/02/how_to_make_perl_module.html


まずMakeFile関連をきちんと調べておく。

h2xs -X -a -n Foo::Bar::Baz

を実行すると、カレントにFoo-Bar-Bazというディレクトリが生成される。
中身は以下の通り。

kotaro@pm$ ll Foo-Bar-Baz/
合計 24
-rw-rw-r--  1 kotaro kotaro  164 114 20:39 Changes
-rw-rw-r--  1 kotaro kotaro   71 114 20:39 MANIFEST
-rw-rw-r--  1 kotaro kotaro  549 114 20:39 Makefile.PL
-rw-rw-r--  1 kotaro kotaro 1174 114 20:39 README
drwxrwxr-x  3 kotaro kotaro 4096 114 20:39 lib
drwxrwxr-x  2 kotaro kotaro 4096 114 20:39 t

Makefile.PLは簡単なPerlスクリプト。

use 5.008005;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
    NAME              => 'Foo::Bar::Baz',
    VERSION_FROM      => 'lib/Foo/Bar/Baz.pm', # finds $VERSION
    PREREQ_PM         => {}, # e.g., Module::Name => 1.1
    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
      (ABSTRACT_FROM  => 'lib/Foo/Bar/Baz.pm', # retrieve abstract from module
       AUTHOR         => 'A. U. Thor <kotaro@localdomain>') : ()),
);
perl Makefile.PL

を実行するとMakeFileが生成される。あとは

make
make test
make install

を実行すると、makeコマンドがMakeFileを読みこみ、よきに計らってくれると。
ざくっと言うと

  • make
    • コンパイル
  • make test
    • テスト
    • t/の配下にあるテストを実行する
  • make install
    • インストール
ユニットテストの実行

実行はmake testでやればいいのかなぁと考えていたら、proveというコマンドがあるらしい。
というかmake testの内部で呼ばれている。

prove -I ~/module_path/ -vl t/test_case_path/