2013/02/11

Test::NoLoad あるモジュールが use されてたらこける

うちのプロジェクトではとあるモジュール使用禁止、とか、Moose 読まれんの嫌、とか。 なんかそういうのをテストで担保するためのモジュール Test::NoLoad 書いてみました。

test でやるんじゃなくて、実働してるアプリケーションでやる(もちろん開発環境だけとかですが)ようなアプローチもあるかと思いましたが、まあとりいそぎテストで実施。

check_no_load function was exported from Test::NoLoad

use strict;
use Test::AllModules;
use Test::NoLoad;

BEGIN {
    all_ok(
        search_path => 'MyApp',
        check => sub {
            my $class = shift;
            eval "use $class;1;";
        },
    );
}

check_no_load(qw/
    Class::ISA
    Pod::Plainer
    Switch
    Moose
    Template
/);

上記の通り、Test::AllModules あたりとセットで使うのを想定してます。

See Also

サイト内検索