Test::Perl::Critic その1

社内勉強会で発表するためのメモその1

概要

Test::Perl::Critic wraps the Perl::Critic engine in a convenient subroutine suitable for test programs written using the Test::More framework.

Test::Perl::Critic - Use Perl::Critic in test programs - metacpan.org

(超意訳)Test::Perl::CriticはTest::More向けの、Perl::Criticのラッパーだよ!

このモジュールはテスト対象のコードがPBPに準拠しているかどうかをテストしてくれるモジュールです。 PBPとはDamian Conway氏の提唱するPerl Best PracticesというPerlのコードを書く際のスタイルです。

第4回 Test::Perl::Critic, Test::Pod, Test::Pod::Coverage, Test::Exception, Test::Warn, Devel::Coverの紹介:Happy Testing Perl|gihyo.jp … 技術評論社

使ってみる

# t/99_perlcritic.t
use strict;
use Test::More;

eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => "t/perlcriticrc") };
plan skip_all => "Test::Perl::Critic is not installed." if $@;

all_critic_ok( qw/ bin lib /);

はじめ、done_testingをつけて実行したところ、テスト数が合わないと言われパスしなかった。
ドキュメントを見てみると、Test::Moreのテスト数はTest::Perl::Criticが設定してくれる云々と書いてある。


また、t/perlcriticrcを作ってない場合は、空ファイルでいいので作らないとパスしない。
もしくは、以下のようにコードを変更するか。

#eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => "t/perlcriticrc") };
eval { require Test::Perl::Critic; Test::Perl::Critic->import };


とりあえず、自分が書いたコードでテストしてみたが、なんとパスした。
ちょっと驚いた。それほど難しいことしてないためだろうが。