use strict;
use warnings;
use CPAN::Meta::Requirements;
use version;
use Test::More 0.88;
sub dies_ok (&@) {
my ($code, $qr, $comment) = @_;
my $lived = eval { $code->(); 1 };
if ($lived) {
fail("$comment: did not die");
} else {
like($@, $qr, $comment);
}
}
sub _fixit { return version->new(42) }
{
my $req = CPAN::Meta::Requirements->new( {bad_version_hook => \&_fixit} );
$req->add_minimum('Foo::Bar' => 10);
$req->add_minimum('Foo::Baz' => 'invalid_version');
is_deeply(
$req->as_string_hash,
{
'Foo::Bar' => 10,
'Foo::Baz' => 42,
},
"hook fixes invalid version",
);
}
{
my $req = CPAN::Meta::Requirements->new( {bad_version_hook => sub { 0 }} );
dies_ok { $req->add_minimum('Foo::Baz' => 'invalid_version') }
qr/Invalid version/,
"dies if hook doesn't return version object";
}
done_testing;