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() |
3c3e76bd |
8 | use Carp (); # Carp is not used in the test, but we want to have it loaded for proper %INC comparison |
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 |
36 | @INC = (sub { die('Optional Dep Test') } ); |
37 | |
38 | ok ( |
39 | ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), |
40 | 'deploy() deps missing', |
41 | ); |
42 | |
43 | like ( |
44 | DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'), |
45 | qr/^SQL::Translator \>\= \d/, |
46 | 'expected missing string contents', |
47 | ); |
48 | |
49 | like ( |
50 | DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy')->{'SQL::Translator'}, |
51 | qr/Optional Dep Test/, |
52 | 'custom exception found in errorlist', |
53 | ); |
54 | |
55 | |
56 | #make it so module appears loaded |
57 | $INC{'SQL/Translator.pm'} = 1; |
58 | $SQL::Translator::VERSION = 999; |
59 | |
60 | ok ( |
61 | ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), |
62 | 'deploy() deps missing cached properly', |
63 | ); |
64 | |
65 | #reset cache |
66 | %DBIx::Class::Optional::Dependencies::req_availability_cache = (); |
67 | |
68 | |
69 | ok ( |
70 | DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'), |
71 | 'deploy() deps present', |
72 | ); |
73 | |
74 | is ( |
75 | DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'), |
76 | '', |
77 | 'expected null missing string', |
78 | ); |
79 | |
80 | is_deeply ( |
81 | DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy'), |
82 | {}, |
83 | 'expected empty errorlist', |
84 | ); |
85 | |
86 | |
87 | done_testing; |