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