1use strict; 2use warnings; 3use Test::More 0.88; 4 5use CPAN::Meta; 6 7delete $ENV{PERL_YAML_BACKEND}; 8delete $ENV{PERL_JSON_BACKEND}; 9delete $ENV{CPAN_META_JSON_BACKEND}; 10delete $ENV{CPAN_META_JSON_DECODER}; 11 12# 1.4 repository upgrade 13{ 14 my $label = "(version 1.4) old repository winds up in 'url'"; 15 my $meta = CPAN::Meta->new( 16 { 17 name => 'Module-Billed', 18 abstract => 'inscrutable', 19 version => '1', 20 author => 'Joe', 21 release_status => 'stable', 22 license => 'perl_5', 23 dynamic_config => 1, 24 generated_by => 'hand', 25 'meta-spec' => { 26 version => '1.4', 27 url => 'http://module-build.sourceforge.net/META-spec-v1.4.html', 28 }, 29 resources => { 30 repository => 'http://example.com/', 31 }, 32 }, 33 { lazy_validation => 1 }, 34 ); 35 36 is_deeply( 37 $meta->resources, 38 { 39 repository => { 40 url => 'http://example.com/', 41 }, 42 }, 43 $label, 44 ); 45} 46 47{ 48 my $label = "(version 2 ) http in web passed through unchanged"; 49 my $meta = CPAN::Meta->new( 50 { 51 name => 'Module-Billed', 52 abstract => 'inscrutable', 53 version => '1', 54 author => 'Joe', 55 release_status => 'stable', 56 license => 'perl_5', 57 dynamic_config => 1, 58 generated_by => 'hand', 59 'meta-spec' => { 60 version => '2', 61 }, 62 resources => { 63 repository => { 64 web => 'http://example.com/', 65 }, 66 }, 67 }, 68 { lazy_validation => 1 }, 69 ); 70 71 72 is_deeply( 73 $meta->{resources}, 74 { 75 repository => { 76 web => 'http://example.com/', 77 }, 78 }, 79 $label 80 ); 81} 82 83{ 84 my $label = "(version 2 ) http in url passed through unchanged"; 85 my $meta = CPAN::Meta->new( 86 { 87 name => 'Module-Billed', 88 abstract => 'inscrutable', 89 version => '1', 90 author => 'Joe', 91 release_status => 'stable', 92 license => 'perl_5', 93 dynamic_config => 1, 94 generated_by => 'hand', 95 'meta-spec' => { 96 version => '2', 97 }, 98 resources => { 99 repository => { 100 url => 'http://example.com/', 101 }, 102 }, 103 }, 104 { lazy_validation => 1 }, 105 ); 106 107 108 is_deeply( 109 $meta->{resources}, 110 { 111 repository => { 112 url => 'http://example.com/', 113 }, 114 }, 115 $label 116 ); 117} 118 119{ 120 my $label = "(version 2 ) svn in url adds svn type"; 121 my $meta = CPAN::Meta->new( 122 { 123 name => 'Module-Billed', 124 abstract => 'inscrutable', 125 version => '1', 126 author => 'Joe', 127 release_status => 'stable', 128 license => 'perl_5', 129 dynamic_config => 1, 130 generated_by => 'hand', 131 'meta-spec' => { 132 version => '2', 133 }, 134 resources => { 135 repository => { 136 url => 'svn://example.com/', 137 }, 138 }, 139 }, 140 { lazy_validation => 1 }, 141 ); 142 143 144 is_deeply( 145 $meta->{resources}, 146 { 147 repository => { 148 url => 'svn://example.com/', 149 type => 'svn', 150 }, 151 }, 152 $label 153 ); 154} 155 156{ 157 my $label = "(version 2 ) git in url adds svn type"; 158 my $meta = CPAN::Meta->new( 159 { 160 name => 'Module-Billed', 161 abstract => 'inscrutable', 162 version => '1', 163 author => 'Joe', 164 release_status => 'stable', 165 license => 'perl_5', 166 dynamic_config => 1, 167 generated_by => 'hand', 168 'meta-spec' => { 169 version => '2', 170 }, 171 resources => { 172 repository => { 173 url => 'git://example.com/', 174 }, 175 }, 176 }, 177 { lazy_validation => 1 }, 178 ); 179 180 181 is_deeply( 182 $meta->{resources}, 183 { 184 repository => { 185 url => 'git://example.com/', 186 type => 'git', 187 }, 188 }, 189 $label 190 ); 191} 192 193{ 194 my $label = "(version 2 ) pre-existing type preserved"; 195 my $meta = CPAN::Meta->new( 196 { 197 name => 'Module-Billed', 198 abstract => 'inscrutable', 199 version => '1', 200 author => 'Joe', 201 release_status => 'stable', 202 license => 'perl_5', 203 dynamic_config => 1, 204 generated_by => 'hand', 205 'meta-spec' => { 206 version => '2', 207 }, 208 resources => { 209 repository => { 210 url => 'git://example.com/', 211 type => 'msysgit', 212 }, 213 }, 214 }, 215 { lazy_validation => 1 }, 216 ); 217 218 219 is_deeply( 220 $meta->{resources}, 221 { 222 repository => { 223 url => 'git://example.com/', 224 type => 'msysgit', 225 }, 226 }, 227 $label 228 ); 229} 230done_testing; 231# vim: ts=2 sts=2 sw=2 et : 232