1use strict; 2use warnings; 3no warnings qw/once/; 4 5use Test::More; 6use lib qw(t/lib); 7use Scalar::Util; # load before we break require() 8 9use_ok 'DBIx::Class::Optional::Dependencies'; 10 11my $sqlt_dep = DBIx::Class::Optional::Dependencies->req_list_for ('deploy'); 12is_deeply ( 13 [ keys %$sqlt_dep ], 14 [ 'SQL::Translator' ], 15 'Correct deploy() dependency list', 16); 17 18# make module loading impossible, regardless of actual libpath contents 19@INC = (sub { die('Optional Dep Test') } ); 20 21ok ( 22 ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), 23 'deploy() deps missing', 24); 25 26like ( 27 DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'), 28 qr/^SQL::Translator \>\= \d/, 29 'expected missing string contents', 30); 31 32like ( 33 DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy')->{'SQL::Translator'}, 34 qr/Optional Dep Test/, 35 'custom exception found in errorlist', 36); 37 38 39#make it so module appears loaded 40$INC{'SQL/Translator.pm'} = 1; 41$SQL::Translator::VERSION = 999; 42 43ok ( 44 ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), 45 'deploy() deps missing cached properly', 46); 47 48#reset cache 49%DBIx::Class::Optional::Dependencies::req_availability_cache = (); 50 51 52ok ( 53 DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), 54 'deploy() deps present', 55); 56 57is ( 58 DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'), 59 '', 60 'expected null missing string', 61); 62 63is_deeply ( 64 DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy'), 65 {}, 66 'expected empty errorlist', 67); 68 69 70done_testing; 71