Blame t/strings.t

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;