Commit | Line | Data |
---|---|---|
b6ae0ea7 CBW |
1 | use strict; |
2 | use warnings; | |
3 | ||
4 | use CPAN::Meta::Requirements; | |
5 | use version; | |
6 | ||
7 | use Test::More 0.88; | |
8 | ||
9 | sub dies_ok (&@) { | |
10 | my ($code, $qr, $comment) = @_; | |
11 | ||
12 | my $lived = eval { $code->(); 1 }; | |
13 | ||
14 | if ($lived) { | |
15 | fail("$comment: did not die"); | |
16 | } else { | |
17 | like($@, $qr, $comment); | |
18 | } | |
19 | } | |
20 | ||
21 | sub _fixit { return version->new(42) } | |
22 | ||
23 | { | |
24 | my $req = CPAN::Meta::Requirements->new( {bad_version_hook => \&_fixit} ); | |
25 | ||
26 | $req->add_minimum('Foo::Bar' => 10); | |
27 | $req->add_minimum('Foo::Baz' => 'invalid_version'); | |
28 | ||
29 | is_deeply( | |
30 | $req->as_string_hash, | |
31 | { | |
32 | 'Foo::Bar' => 10, | |
33 | 'Foo::Baz' => 42, | |
34 | }, | |
35 | "hook fixes invalid version", | |
36 | ); | |
37 | } | |
38 | ||
39 | { | |
40 | my $req = CPAN::Meta::Requirements->new( {bad_version_hook => sub { 0 }} ); | |
41 | ||
42 | dies_ok { $req->add_minimum('Foo::Baz' => 'invalid_version') } | |
43 | qr/Invalid version/, | |
44 | "dies if hook doesn't return version object"; | |
45 | ||
46 | } | |
47 | ||
48 | ||
49 | done_testing; |