diff options
Diffstat (limited to 'cpan/CPAN-Meta/t/save-load.t')
-rw-r--r-- | cpan/CPAN-Meta/t/save-load.t | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/cpan/CPAN-Meta/t/save-load.t b/cpan/CPAN-Meta/t/save-load.t new file mode 100644 index 0000000000..73cac57ea9 --- /dev/null +++ b/cpan/CPAN-Meta/t/save-load.t @@ -0,0 +1,99 @@ +use strict; +use warnings; +use Test::More 0.88; + +use CPAN::Meta; +use File::Temp 0.20 (); +use Parse::CPAN::Meta 1.4400; + +my $distmeta = { + name => 'Module-Build', + abstract => 'Build and install Perl modules', + description => "Module::Build is a system for building, testing, " + . "and installing Perl modules. It is meant to be an " + . "alternative to ExtUtils::MakeMaker... blah blah blah", + version => '0.36', + author => [ + 'Ken Williams <kwilliams@cpan.org>', + 'Module-Build List <module-build@perl.org>', # additional contact + ], + release_status => 'stable', + license => [ 'perl_5' ], + prereqs => { + runtime => { + requires => { + 'perl' => '5.006', + 'Config' => '0', + 'Cwd' => '0', + 'Data::Dumper' => '0', + 'ExtUtils::Install' => '0', + 'File::Basename' => '0', + 'File::Compare' => '0', + 'File::Copy' => '0', + 'File::Find' => '0', + 'File::Path' => '0', + 'File::Spec' => '0', + 'IO::File' => '0', + }, + recommends => { + 'Archive::Tar' => '1.00', + 'ExtUtils::Install' => '0.3', + 'ExtUtils::ParseXS' => '2.02', + 'Pod::Text' => '0', + 'YAML' => '0.35', + }, + }, + build => { + requires => { + 'Test::More' => '0', + }, + } + }, + resources => { + license => ['http://dev.perl.org/licenses/'], + }, + optional_features => { + domination => { + description => 'Take over the world', + prereqs => { + develop => { requires => { 'Genius::Evil' => '1.234' } }, + runtime => { requires => { 'Machine::Weather' => '2.0' } }, + }, + }, + }, + dynamic_config => 1, + keywords => [ qw/ toolchain cpan dual-life / ], + 'meta-spec' => { + version => '2', + url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec', + }, + generated_by => 'Module::Build version 0.36', +}; + +my $meta = CPAN::Meta->new( $distmeta ); + +my $tmpdir = File::Temp->newdir(); +my $metafile = File::Spec->catfile( $tmpdir, 'META.json' ); + +ok( $meta->save($metafile), "save returns true" ); +ok( -f $metafile, "save meta to file" ); + +ok( my $loaded = Parse::CPAN::Meta->load_file($metafile), 'load saved file' ); +is($loaded->{name}, 'Module-Build', 'name correct'); + + +ok( $loaded = Parse::CPAN::Meta->load_file('t/data/META-1_4.yml'), 'load META-1.4' ); +is($loaded->{name}, 'Module-Build', 'name correct'); + +# Test saving with conversion + +my $metayml = File::Spec->catfile( $tmpdir, 'META.yml' ); + +$meta->save($metayml, {version => "1.4"}); +ok( -f $metayml, "save meta to META.yml with conversion" ); + +ok( $loaded = Parse::CPAN::Meta->load_file($metayml), 'load saved file' ); +is( $loaded->{name}, 'Module-Build', 'name correct'); +is( $loaded->{requires}{perl}, "5.006", 'prereq correct' ); + +done_testing; |