|
Packit |
f40462 |
use strict;
|
|
Packit |
f40462 |
use warnings;
|
|
Packit |
f40462 |
use Test::More 0.88;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
sub dies_ok (&@) {
|
|
Packit |
f40462 |
my ($code, $qr, $comment) = @_;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
no warnings 'redefine';
|
|
Packit |
f40462 |
local *Regexp::CARP_TRACE = sub { "<regexp>" };
|
|
Packit |
f40462 |
my $lived = eval { $code->(); 1 };
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
if ($lived) {
|
|
Packit |
f40462 |
fail("$comment: did not die");
|
|
Packit |
f40462 |
} else {
|
|
Packit |
f40462 |
like($@, $qr, $comment);
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
use CPAN::Meta::Requirements;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
my $req = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test ==
|
|
Packit |
f40462 |
$req->add_string_requirement('Foo::Bar', '== 1.3');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Bar' => '1.3'), 'exact version (==)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('Foo::Bar' => '1.2'), 'lower version (==)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('Foo::Bar' => '1.4'), 'higher version (==)');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test !=
|
|
Packit |
f40462 |
$req->add_string_requirement('Foo::Baz', '!= 1.3');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('Foo::Baz' => '1.3'), 'exact version (!=)');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Baz' => '1.2'), 'lower version (!=)');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Baz' => '1.4'), 'higher version (!=)');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test >=
|
|
Packit |
f40462 |
$req->add_string_requirement('Foo::Gorch', '>= 1.3');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Gorch' => '1.3'), 'exact version (>=)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('Foo::Gorch' => '1.2'), 'lower version (>=)');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Gorch' => '1.4'), 'higher version (>=)');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test <=
|
|
Packit |
f40462 |
$req->add_string_requirement('Foo::Graz', '<= 1.3');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Graz' => '1.3'), 'exact version (<=)');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Graz' => '1.2'), 'lower version (<=)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('Foo::Graz' => '1.4'), 'higher version (<=)');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test ""
|
|
Packit |
f40462 |
$req->add_string_requirement('Foo::Blurb', '>= 1.3');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Blurb' => '1.3'), 'exact version (>=)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('Foo::Blurb' => '1.2'), 'lower version (>=)');
|
|
Packit |
f40462 |
ok($req->accepts_module('Foo::Blurb' => '1.4'), 'higher version (>=)');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test multiple requirements
|
|
Packit |
f40462 |
$req->add_string_requirement('A::Tribe::Called', '>= 1.3, <= 2.0, != 1.6');
|
|
Packit |
f40462 |
ok($req->accepts_module('A::Tribe::Called' => '1.5'), 'middle version (>=, <=, !)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('A::Tribe::Called' => '1.2'), 'lower version (>=, <=, !)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('A::Tribe::Called' => '2.1'), 'higher version (>=, <=, !)');
|
|
Packit |
f40462 |
ok(!$req->accepts_module('A::Tribe::Called' => '1.6'), 'excluded version (>=, <=, !)');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test precision
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
my $req = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
$req->add_string_requirement(Foo => "0.00");
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$req->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Foo => '0.00'
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"0.00 precision preserved",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
# Test fatal errors
|
|
Packit |
f40462 |
dies_ok { $req->add_string_requirement('Foo::Bar', "not really a version") }
|
|
Packit |
f40462 |
qr/Can't convert/,
|
|
Packit |
f40462 |
"conversion failure caught";
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
done_testing;
|