This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Devel::Peek docs with Dump changes
[perl5.git] / cpan / CPAN-Meta-Requirements / t / bad_version_hook.t
CommitLineData
b6ae0ea7
CBW
1use strict;
2use warnings;
3
4use CPAN::Meta::Requirements;
5use version;
6
7use Test::More 0.88;
8
9sub 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
21sub _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
49done_testing;