The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use xt::Util;

note explain my $meta_data = make_meta_data(*DATA);

subtest build_requires => sub {
    my $build_requires = $meta_data->{build_requires};
    is $build_requires->{'Test::More'}, '0.96';
};

subtest requires => sub {
    my $requires = $meta_data->{requires};
    is $requires->{Plack}, '0.9986';
    is $requires->{'SQL::Maker'}, 0;
};

subtest recommends => sub {
    my $recommends = $meta_data->{recommends};
    is $recommends->{'JSON::XS'}, '2.0';
    is $recommends->{'Test::TCP'}, '1.12';
};

done_testing;

__DATA__
@@ Makefile.PL
use inc::Module::Install;

cpanfile;

name 'Dummy';
all_from 'lib/Dummy.pm';
tests 't/*.t';
WriteAll;

@@ cpanfile
requires 'Plack' => '0.9986';
requires 'SQL::Maker';

recommends 'JSON::XS', '2.0';

on 'test' => sub {
    requires 'Test::More', '>= 0.96, < 2.0';
    recommends 'Test::TCP', '1.12';
};

@@ lib/Dummy.pm
package Dummy;
use 5.006;
our $VERSION = '0.1';
1;
__END__
=pod

=head1 AUTHOR

Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt>

=head1 COPYRIGHT

Copyright 2012- Tatsuhiko Miyagawa

=head1 LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut