use strict; use warnings; use Test::More 0.88; use CPAN::Meta; delete $ENV{$_} for qw/PERL_JSON_BACKEND PERL_YAML_BACKEND/; # use defaults # 1.4 repository upgrade { my $label = "(version 1.4) old repository winds up in 'url'"; my $meta = CPAN::Meta->new( { name => 'Module-Billed', abstract => 'inscrutable', version => '1', author => 'Joe', release_status => 'stable', license => 'perl_5', dynamic_config => 1, generated_by => 'hand', 'meta-spec' => { version => '1.4', url => 'http://module-build.sourceforge.net/META-spec-v1.4.html', }, resources => { repository => 'http://example.com/', }, }, { lazy_validation => 1 }, ); is_deeply( $meta->resources, { repository => { url => 'http://example.com/', }, }, $label, ); } { my $label = "(version 2 ) http in web passed through unchanged"; my $meta = CPAN::Meta->new( { name => 'Module-Billed', abstract => 'inscrutable', version => '1', author => 'Joe', release_status => 'stable', license => 'perl_5', dynamic_config => 1, generated_by => 'hand', 'meta-spec' => { version => '2', }, resources => { repository => { web => 'http://example.com/', }, }, }, { lazy_validation => 1 }, ); is_deeply( $meta->{resources}, { repository => { web => 'http://example.com/', }, }, $label ); } { my $label = "(version 2 ) http in url passed through unchanged"; my $meta = CPAN::Meta->new( { name => 'Module-Billed', abstract => 'inscrutable', version => '1', author => 'Joe', release_status => 'stable', license => 'perl_5', dynamic_config => 1, generated_by => 'hand', 'meta-spec' => { version => '2', }, resources => { repository => { url => 'http://example.com/', }, }, }, { lazy_validation => 1 }, ); is_deeply( $meta->{resources}, { repository => { url => 'http://example.com/', }, }, $label ); } { my $label = "(version 2 ) svn in url adds svn type"; my $meta = CPAN::Meta->new( { name => 'Module-Billed', abstract => 'inscrutable', version => '1', author => 'Joe', release_status => 'stable', license => 'perl_5', dynamic_config => 1, generated_by => 'hand', 'meta-spec' => { version => '2', }, resources => { repository => { url => 'svn://example.com/', }, }, }, { lazy_validation => 1 }, ); is_deeply( $meta->{resources}, { repository => { url => 'svn://example.com/', type => 'svn', }, }, $label ); } { my $label = "(version 2 ) git in url adds svn type"; my $meta = CPAN::Meta->new( { name => 'Module-Billed', abstract => 'inscrutable', version => '1', author => 'Joe', release_status => 'stable', license => 'perl_5', dynamic_config => 1, generated_by => 'hand', 'meta-spec' => { version => '2', }, resources => { repository => { url => 'git://example.com/', }, }, }, { lazy_validation => 1 }, ); is_deeply( $meta->{resources}, { repository => { url => 'git://example.com/', type => 'git', }, }, $label ); } { my $label = "(version 2 ) pre-existing type preserved"; my $meta = CPAN::Meta->new( { name => 'Module-Billed', abstract => 'inscrutable', version => '1', author => 'Joe', release_status => 'stable', license => 'perl_5', dynamic_config => 1, generated_by => 'hand', 'meta-spec' => { version => '2', }, resources => { repository => { url => 'git://example.com/', type => 'msysgit', }, }, }, { lazy_validation => 1 }, ); is_deeply( $meta->{resources}, { repository => { url => 'git://example.com/', type => 'msysgit', }, }, $label ); } done_testing;