tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

スクリプトのテスト

ふつうは、Test::Scriptをつかうのだけど、このモジュールは CPAN レイアウトじゃないとうまく動いてくれない。(blib とかみてるので、CPAN レイアウトにして、make test じゃないと動かないみたいです)

ただ、どうしても「コンパイルエラーくらいはしらべたいなー」と思って*1、こんな感じのものをでっち上げた。

#!/usr/bin/perl
use strict;
use warnings;

use Test::More;
use Capture::Tiny qw(capture);

my $script_dir = "./bin";
my @scripts = grep { $_ =~ qr/\.pl$/ } glob "$script_dir/*";

for my $script ( @scripts ) {
    my $status = 0;
    my ($out, $err) = capture {
        $status = system("perl -I ./lib -cw $script");
    };

    ok( $status == 0, $script) or diag $err;
}

done_testing();

問題は解決できたけど、ちょっと遅いなー、というのが難点です。。。

*1:正確には、コンパイルエラーだけでなく、local::lib の参照がちゃんとできてないスクリプトをみつけたかったので、perl コマンドの前に、「env PERL5LIB=none」とかつけてる