Blame t/merge.t

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;