cpants_lint.plがCannot unpackというエラーを吐く
- 参考リンク:CPANTSテストをローカルで実行する - ヒルズで働く@robarioの技ログ
- ワンポイント:Archive::Tar(Archive::Any::Tar)がgzip圧縮されたファイルを扱うためにはIO::Zlibが必要。
今日、いつもと違うマシンでcpants_lint.plを実行したら
% cpants_lint.pl MyApp-0.01.tar.gz Cannot unpack MyApp-0.01.tar.gz
というエラー。で、どないせいっちゅうんじゃい(#゚Д゚) プンスコ!
MyApp-0.01.tar.gzはgunzip+tarでちゃんと展開でき、問題は無い模様。
ドキュメントにもそれらしい記述は無いし、cpants_lint.plのデバッグモード(-d)も役に立たず。。。
仕方なく軽くデバッグ。
% perl -d /usr/bin/cpants_lint.pl MyApp-0.01.tar.gz (ごにょごにょ) main::(/usr/bin/cpants_lint.pl:21): 21: my $cannot_unpack=$mca->unpack; (ごにょごにょ) Module::CPANTS::Analyse::unpack(/usr/lib/perl5/site_perl/5.8/Module/CPANTS/Analyse.pm:50): 50: eval { DB<1> Module::CPANTS::Analyse::unpack(/usr/lib/perl5/site_perl/5.8/Module/CPANTS/Analyse.pm:51): 51: $archive=Archive::Any->new($me->testfile); DB<1> Cannot read compressed format in tar-mode at /usr/lib/perl5/site_perl/5.8/Archive/Any/Tar.pm line 36 at /usr/lib/perl5/site_perl/5.8/Archive/Tar.pm line 1230 Archive::Tar::_error('Archive::Tar=HASH(0x10dd8904)', 'Cannot read compressed format in tar-mode') called at /usr/lib/perl5/site_perl/5.8/Archive/Tar.pm line 258 (省略)
うはwwwキタコレwww evalでエラー黙殺www
cpants_lint.pl =>Module::CPANTS::Analyse ←エラー黙殺犯 =>Archive::Any =>Archive::Any::Tar =>Archive::Tar ←圧縮フォーマットが読めないというエラーを投げる
Archive::Tarがエラーを起こしていることが分かったのでドキュメントを見てみると、gzipフォーマットを読むためにはIO::Zlibが必要らしい。IO::Zlibを入れて再挑戦。
% cpan IO::Zlib % cpants_lint.pl MyApp-0.01.tar.gz Checked dist MyApp-0.01.tar.gz Kwalitee rating 100.00% (18/18) Congratulations for building a 'perfect' distribution!
うまく行きました。例外が起きたら黙殺せずに警告ぐらいは出して欲しいものです。