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

use Module::CPANfile;
use t::Utils;

{
    my $r = write_cpanfile(<<FILE);
requires 'perl', '5.008001';
requires 'DBI';
requires 'Plack', '1.0001';
test_requires 'Test::More', '0.90, != 0.91';
FILE

    my $prereqs = Module::CPANfile->load->prereqs;
    my $file = Module::CPANfile->from_prereqs($prereqs->as_string_hash);

    is_deeply $file->prereq_specs, $prereqs->as_string_hash;

    is $file->to_string, <<FILE;
requires 'DBI';
requires 'Plack', '1.0001';
requires 'perl', '5.008001';

on test => sub {
    requires 'Test::More', '>= 0.90, != 0.91';
};
FILE

    $file->save('cpanfile');

    my $content = do { local $/; open my $in, 'cpanfile'; <$in> };
    is $content, $file->to_string;
}

done_testing;