Commit | Line | Data |
05c0614b |
1 | use strict; |
2 | use warnings; |
3 | no warnings qw/once/; |
4 | |
5 | use Test::More; |
6 | use lib qw(t/lib); |
7 | use Scalar::Util; # load before we break require() |
d8799bab |
8 | use Carp (); # Carp is not used in the test, but we want to have it loaded for proper %INC comparison |
3c3e76bd |
9 | |
10 | # a dummy test which lazy-loads more modules (so we can compare INC below) |
11 | ok (1); |
12 | |
13 | # record contents of %INC - makes sure there are no extra deps slipping into |
14 | # Opt::Dep. |
15 | my $inc_before = [ keys %INC ]; |
16 | ok ( (! grep { $_ =~ m|DBIx/Class| } @$inc_before ), 'Nothing DBIC related is yet loaded'); |
05c0614b |
17 | |
18 | use_ok 'DBIx::Class::Optional::Dependencies'; |
19 | |
3c3e76bd |
20 | my $inc_after = [ keys %INC ]; |
21 | |
22 | is_deeply ( |
23 | [ sort @$inc_after], |
24 | [ sort (@$inc_before, 'DBIx/Class/Optional/Dependencies.pm') ], |
25 | 'Nothing loaded other than DBIx::Class::OptDeps', |
26 | ); |
27 | |
05c0614b |
28 | my $sqlt_dep = DBIx::Class::Optional::Dependencies->req_list_for ('deploy'); |
29 | is_deeply ( |
30 | [ keys %$sqlt_dep ], |
31 | [ 'SQL::Translator' ], |
32 | 'Correct deploy() dependency list', |
33 | ); |
34 | |
35 | # make module loading impossible, regardless of actual libpath contents |
d8799bab |
36 | { |
37 | local @INC = (sub { die('Optional Dep Test') } ); |
38 | |
39 | ok ( |
40 | ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), |
41 | 'deploy() deps missing', |
42 | ); |
43 | |
44 | like ( |
45 | DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'), |
46 | qr/^SQL::Translator \>\= \d/, |
47 | 'expected missing string contents', |
48 | ); |
49 | |
50 | like ( |
51 | DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy')->{'SQL::Translator'}, |
52 | qr/Optional Dep Test/, |
53 | 'custom exception found in errorlist', |
54 | ); |
55 | } |
05c0614b |
56 | |
57 | #make it so module appears loaded |
58 | $INC{'SQL/Translator.pm'} = 1; |
59 | $SQL::Translator::VERSION = 999; |
60 | |
61 | ok ( |
62 | ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), |
63 | 'deploy() deps missing cached properly', |
64 | ); |
65 | |
66 | #reset cache |
67 | %DBIx::Class::Optional::Dependencies::req_availability_cache = (); |
68 | |
69 | |
70 | ok ( |
71 | DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), |
72 | 'deploy() deps present', |
73 | ); |
74 | |
75 | is ( |
76 | DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'), |
77 | '', |
78 | 'expected null missing string', |
79 | ); |
80 | |
81 | is_deeply ( |
82 | DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy'), |
83 | {}, |
84 | 'expected empty errorlist', |
85 | ); |
86 | |
05c0614b |
87 | done_testing; |