モダンPerl入門で、テストに入門してみた。その1
ファイルの作成
基本的にソースコードのコピー。
lib/Example/Software.pm
package Example::Software; use strict; our $VERSION = '0.00001'; sub test { } 1;
Makefile.pm
use strict; use inc::Module::Install; name('Example-Software'); all_from('lib/Example/Software.pm'); WriteAll;
t/00_compile.t
# t/00_compile.t use strict; use Test::More; plan( tests => 1 ); use_ok( "Example::Software" );
Makefileをつくってみる
> perl Makefile.pm
すると、inc::Module::Install 入ってないよ!って言われる。
デフォルトで入ってると思ってたよ。
ということで、inc::Module::Install をインストール。
> cpanm inc::Module::Install
Makefileををつくってみる take2
> perl Makefile.pm include /home/tyamagu/perl/Example-Software/inc/Module/Install.pm include inc/Module/Install/Metadata.pm include inc/Module/Install/Base.pm include inc/Module/Install/Makefile.pm Cannot determine perl version info from lib/Example/Software.pm Cannot determine author info from lib/Example/Software.pm Cannot determine license info from lib/Example/Software.pm include inc/Module/Install/WriteAll.pm include inc/Module/Install/Win32.pm include inc/Module/Install/Can.pm include inc/Module/Install/Fetch.pm Writing Makefile for Example::Software Writing META.yml No license specified, setting license = 'unknown'
色々言われるけど、とりあえず Makefile は作成される。
makeしてみる
> make make: *** No rule to make target `Makefile.PL', needed by `Makefile'. Stop.
エラーが出た。
なんでだろうと思ってぐぐったら拡張子が間違っているらしい。
正)Makefile.PL
誤)Makefile.pm
モダンPerl入門見直したら、PLでした。
リネーム。
> mv Makefile.pm Makefile.PL
makeしてみる take2
> make cp lib/Example/Software.pm blib/lib/Example/Software.pm
OKっぽい。
make test してみる
> make test cp lib/Example/Software.pm blib/lib/Example/Software.pm > make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/00_compile.t .. ok All tests successful. Files=1, Tests=1, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.02 cusr 0.00 csys = 0.06 CPU) Result: PASS
テストが走り、PASSしていることが確認できた。
まとめ
拡張子がPLじゃない場合怒られるのは何故だろう。
あとで調べたい。