Skip to content

Commit 108980d

Browse files
haargbingos
authored andcommitted
META_ADD/MERGE default meta version based on each other (#280)
Prior to commit 91b7ff8 (released in v7.05_13), META_ADD and META_MERGE will be erroneously mixed together when processing. This essentially means that if a meta-spec version is specified in one, it will be used for the other as well. Now that META_ADD and META_MERGE are properly kept separate, they can specify data in different spec versions. But if a version is only specified in one, it makes sense to use it for the other as well. This also matches the old behavior, even if it was at the time unintentional.
1 parent d7341f0 commit 108980d

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

lib/ExtUtils/MM_Any.pm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1319,7 +1319,8 @@ sub metafile_data {
13191319
my $v1_add = _metaspec_version($meta_add) !~ /^2/;
13201320

13211321
for my $frag ($meta_add, $meta_merge) {
1322-
$frag = CPAN::Meta::Converter->new($frag, default_version => "1.4")->upgrade_fragment;
1322+
my $def_v = _metaspec_version($frag == $meta_add ? $meta_merge : $meta_add);
1323+
$frag = CPAN::Meta::Converter->new($frag, default_version => $def_v)->upgrade_fragment;
13231324
}
13241325

13251326
# if we upgraded a 1.x _ADD fragment, we gave it a prereqs key that

t/metafile_data.t

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use File::Temp;
1717
use Cwd;
1818
use MakeMaker::Test::Utils;
1919

20-
plan tests => 31;
20+
plan tests => 33;
2121
require ExtUtils::MM_Any;
2222

2323
sub mymeta_ok {
@@ -262,6 +262,62 @@ my @GENERIC_OUT = (
262262
},'TEST_REQUIRES meta-spec 2.0';
263263
}
264264

265+
{
266+
my $mm = $new_mm->(
267+
@GENERIC_IN,
268+
);
269+
is_deeply $mm->metafile_data(
270+
{
271+
'configure_requires' => {
272+
'Fake::Module1' => 1,
273+
},
274+
'prereqs' => {
275+
@REQ20,
276+
'test' => {
277+
'requires' => {
278+
'Fake::Module2' => 2,
279+
},
280+
},
281+
},
282+
},
283+
{ 'meta-spec' => { 'version' => 2 }, }
284+
), {
285+
prereqs => {
286+
@REQ20,
287+
test => { requires => { "Fake::Module2" => 2, }, },
288+
},
289+
@GENERIC_OUT,
290+
}, 'META_ADD takes meta version from META_MERGE';
291+
}
292+
293+
{
294+
my $mm = $new_mm->(
295+
@GENERIC_IN,
296+
);
297+
is_deeply $mm->metafile_data(
298+
{ 'meta-spec' => { 'version' => 2 }, },
299+
{
300+
'configure_requires' => {
301+
'Fake::Module1' => 1,
302+
},
303+
'prereqs' => {
304+
@REQ20,
305+
'test' => {
306+
'requires' => {
307+
'Fake::Module2' => 2,
308+
},
309+
},
310+
},
311+
},
312+
), {
313+
prereqs => {
314+
@REQ20,
315+
test => { requires => { "Fake::Module2" => 2, }, },
316+
},
317+
@GENERIC_OUT,
318+
}, 'META_MERGE takes meta version from META_ADD';
319+
}
320+
265321
# Test _REQUIRES key priority over META_ADD
266322
{
267323
my $mm = $new_mm->(

0 commit comments

Comments
 (0)