blob: dd113a9a146376b8f4b7acece020dcb9400e0419 [file] [log] [blame]
#!/usr/bin/perl -w
# Things like the CPAN shell rely on the "MakeMaker Parameters" section of the
# Makefile to learn a module's dependencies so we'd damn well better test it.
BEGIN {
unshift @INC, 't/lib';
}
use strict;
use warnings;
use ExtUtils::MakeMaker;
use Test::More;
my $mm = bless {}, "MM";
sub extract_params {
my $text = join "\n", @_;
$text =~ s{^\s* \# \s+ MakeMaker\ Parameters: \s*\n}{}x;
$text =~ s{^#}{}gms;
$text =~ s{\n}{,\n}g;
no strict 'subs';
return { eval "$text" };
}
sub test_round_trip {
my $args = shift;
my $want = @_ ? shift : $args;
my $have = extract_params($mm->_MakeMaker_Parameters_section($args));
local $Test::Builder::Level = $Test::Builder::Level + 1;
is_deeply $have, $want or diag explain $have, "\n", $want;
}
is join("", $mm->_MakeMaker_Parameters_section()), <<'EXPECT', "nothing";
# MakeMaker Parameters:
EXPECT
test_round_trip({ NAME => "Foo" });
test_round_trip({ NAME => "Foo", PREREQ_PM => { "Foo::Bar" => 0 } });
test_round_trip({ NAME => "Foo", PREREQ_PM => { "Foo::Bar" => 1.23 } });
# Test the special case for BUILD_REQUIRES
{
my $have = {
NAME => "Foo",
PREREQ_PM => { "Foo::Bar" => 1.23 },
BUILD_REQUIRES => { "Baz" => 0.12 },
};
my $want = {
NAME => "Foo",
PREREQ_PM => {
"Foo::Bar" => 1.23,
"Baz" => 0.12,
},
BUILD_REQUIRES => { "Baz" => 0.12 },
};
test_round_trip( $have, $want );
}
done_testing();