|
Packit |
f40462 |
use strict;
|
|
Packit |
f40462 |
use warnings;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
use CPAN::Meta::Requirements;
|
|
Packit |
f40462 |
|
|
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 |
{
|
|
Packit |
f40462 |
my $req_1 = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$req_1->add_minimum(Left => 10);
|
|
Packit |
f40462 |
$req_1->add_minimum(Shared => 2);
|
|
Packit |
f40462 |
$req_1->add_exclusion(Shared => 7);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
my $req_2 = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$req_2->add_minimum(Shared => 1);
|
|
Packit |
f40462 |
$req_2->add_maximum(Shared => 9);
|
|
Packit |
f40462 |
$req_2->add_minimum(Right => 18);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
$req_1->add_requirements($req_2);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$req_1->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Left => 10,
|
|
Packit |
f40462 |
Shared => '>= 2, <= 9, != 7',
|
|
Packit |
f40462 |
Right => 18,
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"add requirements to an existing set of requirements",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
my $req_1 = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$req_1->add_minimum(Left => 10);
|
|
Packit |
f40462 |
$req_1->add_minimum(Shared => 2);
|
|
Packit |
f40462 |
$req_1->add_exclusion(Shared => 7);
|
|
Packit |
f40462 |
$req_1->exact_version(Exact => 8);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
my $req_2 = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$req_2->add_minimum(Shared => 1);
|
|
Packit |
f40462 |
$req_2->add_maximum(Shared => 9);
|
|
Packit |
f40462 |
$req_2->add_minimum(Right => 18);
|
|
Packit |
f40462 |
$req_2->exact_version(Exact => 8);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
my $clone = $req_1->clone->add_requirements($req_2);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$req_1->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Left => 10,
|
|
Packit |
f40462 |
Shared => '>= 2, != 7',
|
|
Packit |
f40462 |
Exact => '== 8',
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"clone/add_requirements does not affect lhs",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$req_2->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Shared => '>= 1, <= 9',
|
|
Packit |
f40462 |
Right => 18,
|
|
Packit |
f40462 |
Exact => '== 8',
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"clone/add_requirements does not affect rhs",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$clone->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Left => 10,
|
|
Packit |
f40462 |
Shared => '>= 2, <= 9, != 7',
|
|
Packit |
f40462 |
Right => 18,
|
|
Packit |
f40462 |
Exact => '== 8',
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"clone and add_requirements",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
$clone->clear_requirement('Shared');
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$clone->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Left => 10,
|
|
Packit |
f40462 |
Right => 18,
|
|
Packit |
f40462 |
Exact => '== 8',
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"cleared the shared requirement",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
my $req_1 = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$req_1->add_maximum(Foo => 1);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
my $req_2 = $req_1->clone;
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$req_2->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
'Foo' => '<= 1',
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
'clone with only max',
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
my $left = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$left->add_minimum(Foo => 0);
|
|
Packit |
f40462 |
$left->add_minimum(Bar => 1);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
my $right = CPAN::Meta::Requirements->new;
|
|
Packit |
f40462 |
$right->add_requirements($left);
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
is_deeply(
|
|
Packit |
f40462 |
$right->as_string_hash,
|
|
Packit |
f40462 |
{
|
|
Packit |
f40462 |
Foo => 0,
|
|
Packit |
f40462 |
Bar => 1,
|
|
Packit |
f40462 |
},
|
|
Packit |
f40462 |
"we do not lose 0-min reqs on merge",
|
|
Packit |
f40462 |
);
|
|
Packit |
f40462 |
}
|
|
Packit |
f40462 |
|
|
Packit |
f40462 |
done_testing;
|