Arkで書いたアプリケーションの開発者テスト(author test)でTest::Perl::Criticを使う際には、use strict;が実効コードより以前に書かれていなければならないというPerl::Critic::Policy::TestingAndDebugging::RequireUseStrictのポリシーに留意します。
具体的には、use Arkによってstrictがインポートされる(のでPBP違反ではない)ことを、Perl::Criticに教えてあげなければなりません。
書き方の一例は以下の通りです。
リソースファイルなどを記述
1.094以降のPerl::Criticでは、equivalent_modulesを設定することで、容易に実現出来ます。use Mooseやuse Moose::Roleなどがuse strictやuse warningsと等価であることは既にポリシーモジュールに書かれているので、それと同様のことをしてもらいましょう。また、Any::Mooseも同様とします。
まず、xt/perlcriticrcというリソースファイルに以下のように設定を切っておいて、
[TestingAndDebugging::RequireUseStrict]
equivalent_modules = Any::Moose Ark
[TestingAndDebugging::RequireUseWarnings]
equivalent_modules = Any::Moose Ark
テストxt/perlcritic.tでそのリソースファイルを読むように設定します。
#!perl -T
eval {
require Perl::Critic;
Perl::Critic->import;
die if Perl::Critic->VERSION < 1.094; # for equivalent_modules
require Test::Perl::Critic;
# 'use Any::Moose' and 'use Ark' are same as 'use strict' and 'use warnings'
Test::Perl::Critic->import(
-profile => 'xt/perlcriticrc',
);
};
Test::More::plan( skip_all =>
"Perl::Critic 1.094 and Test::Perl::Critic required " .
"for testing PBP compliance"
) if $@;
all_critic_ok();
これだけです。他にもTest::Perl::Critic周りには色々面白そうな機能がありますが、取り敢えずテストケースとアプリケーションコードの実装を優先することにします。
コメントする