Module::Starter::PBPで最初のテストが通らなかった場合の対処メモ
TAKESAKOさんの「Part1 正しいPerl/CGIの書き方:ITpro」を参考にモジュールを書いてみようとしたら、perl Build testしたところで
t/00.load.........NOK 1 # Failed test 'use MyLib::Hoge;' # at t/00.load.t line 4. # Tried to use 'MyLib::Hoge'. # Error: Global symbol "$VERSION" requires explicit package name at /home/ryo/MyLib-Hoge/blib/lib/MyLib/Hoge.pm line 7. # Compilation failed in require at (eval 3) line 2. # BEGIN failed--compilation aborted at t/00.load.t line 4. Use of uninitialized value in concatenation (.) or string at t/00.load.t line 7. # Testing MyLib::Hoge # Looks like you failed 1 test of 1. t/00.load.........dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 1 Failed 1/1 tests, 0.00% okay t/perlcritic......ok t/pod-coverage....ok t/pod.............ok Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/00.load.t 1 256 1 1 100.00% 1 Failed 1/4 test scripts, 75.00% okay. 1/4 subtests failed, 75.00% okay.
なんてエラーが出て最初のビルドが通らず。環境はCentOS5.0(x86_64)。
何はともあれググってみると、「Module::Starter::PBP v0.0.3のエラー (Weblog on mebius.tokaichiba.jp)」というエントリにたどり着いたので、作ったモジュールの7行目
use version; $VERSION = qv('0.0.3');
となっている部分を
use version; our $VERSION = qv('0.0.3');
に変更したら無事にテストが通りました。元のファイルを修正するのはあまり気が進まないので、ひとまずモジュールを作る度にこの手順を踏むことにしよう。今のところ単体のモジュールをそんなにガリガリ書く雰囲気でもないし。