This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Devel::Peek docs with Dump changes
[perl5.git] / cpan / CPAN-Meta-Requirements / t / from-hash.t
CommitLineData
b6ae0ea7
CBW
1use strict;
2use warnings;
3
4use CPAN::Meta::Requirements;
5
6use Test::More 0.88;
7
8sub dies_ok (&@) {
9 my ($code, $qr, $comment) = @_;
10
11 my $lived = eval { $code->(); 1 };
12
13 if ($lived) {
14 fail("$comment: did not die");
15 } else {
16 like($@, $qr, $comment);
17 }
18}
19
20{
21 my $string_hash = {
22 Left => 10,
23 Shared => '>= 2, <= 9, != 7',
24 Right => 18,
25 };
26
27 my $req = CPAN::Meta::Requirements->from_string_hash($string_hash);
28
29 is_deeply(
30 $req->as_string_hash,
31 $string_hash,
32 "we can load from a string hash",
33 );
34}
35
36{
37 my $string_hash = {
38 Left => 10,
39 Shared => '= 2',
40 Right => 18,
41 };
42
43 dies_ok { CPAN::Meta::Requirements->from_string_hash($string_hash) }
44 qr/Can't convert/,
45 "we die when we can't understand a version spec";
46}
47
48{
49 my $string_hash = {
50 Left => 10,
51 Shared => undef,
52 Right => 18,
53 };
54
55 my $warning;
56 local $SIG{__WARN__} = sub { $warning = join("\n",@_) };
57
58 my $req = CPAN::Meta::Requirements->from_string_hash($string_hash);
59
60 is(
61 $req->as_string_hash->{Shared}, 0,
62 "undef requirement treated as '0'",
63 );
64
65 like ($warning, qr/Undefined requirement.*treated as '0'/, "undef requirement warns");
66
67}
68
69done_testing;