Test::Perl::Critic その2
今日はサブルーチンについて。
critic_ok( $FILE [, $TEST_NAME ] )
# t/991_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 $@; critic_ok( 'bin/get_tweet.pl' ); done_testing;
$ perl t/991_perlcritic.t ok 1 - Test::Perl::Critic for "bin/get_tweet.pl" 1..1
ファイルを指定してテストする場合に使う。
複数のファイルを指定することはできない模様。
最も気をつけるべき点は、テスト数を明示して上げる必要がある。もしくはdone_testing;を記述する。
なお、第二引数にテスト名を指定することが可能。
デフォルトでは、"Perl::Critic test for $FILE"。
テスト名を'MyTest'とした場合は、以下のようになる。
perl t/991_perlcritic.t ok 1 - MyTest 1..1
all_critic_ok( [ @DIRECTORIES ] )
# t/992_perlcriti_all_critic_ok.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();
指定したディレクトリ内のPerlファイルに対してテストを実行する。
ディレクトリが指定されなかった場合はblib以下ののPerlファイルを、
blibが存在しない場合は、lib以下のPerlファイルに対してテストを行う。
その1で書いたとおり、このサブルーチンを使用する場合はテスト数を明示する必要がない。
all_code_files ( [@DIRECTORIES] )
非推奨!
[12/7追記]
そもそもimportされないのでパッケージ名から指定しないと使えません。
Perlファイルのリストを返す。
ディレクトリを指定しない場合、blib以下から、
blibが存在しない場合は、lib以下から。
CVSやSubversionディレクトリ内のファイルはスキップされる。
ソースコードを見てみると、all_critic_okから呼び出されている。
また、このサブルーチン自体はディレクトリの設定をしてPerl::Critic::Utils::all_perl_filesを呼び出しているだけ。
したがって、このサブルーチンを使いたい場合は、ドキュメントに書いてあるとおりPerl::Critic::Utils::all_perl_filesを使うべき。
なお、Perlファイルの判断条件は以下の2つ
- 拡張子が .PL .pl .pm .t
- シバンに'perl'を含む