In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/9716828a5efa3dfaa833945494a045a5c3f711a6?hp=89d84ff965b644c21c4c0633253e4cb21f72b62c>

- Log -----------------------------------------------------------------
commit 9716828a5efa3dfaa833945494a045a5c3f711a6
Author: Chris 'BinGOs' Williams <[email protected]>
Date:   Thu Jun 11 16:38:00 2015 +0100

    Update Parse-CPAN-Meta to CPAN release 1.4417
    
      [DELTA]
    
    1.4417    2015-06-09 16:19:41-06:00 America/Denver
    
        - No changes from 1.4416
    
    1.4416    2015-05-19 11:11:47-04:00 America/New_York (TRIAL RELEASE)
    
        [FIXED]
    
        - Minimum Perl was inadvertently set to v5.10.0.  Now back to v5.8.1.
    
    1.4415    2015-04-28 11:29:52-04:00 America/New_York (TRIAL RELEASE)
    
        [TESTS]
    
        - Outputs the version of backends used
    
        [META]
    
        - Updated repo metadata and boilerplate files
    
        - Pointed issue tracker to the Perl-Toolchain-Gang Github repo

M       MANIFEST
M       Porting/Maintainers.pl
A       cpan/Parse-CPAN-Meta/corpus/BadMETA.yml
A       cpan/Parse-CPAN-Meta/corpus/META-VR.json
A       cpan/Parse-CPAN-Meta/corpus/META-VR.yml
A       cpan/Parse-CPAN-Meta/corpus/bareyaml.meta
A       cpan/Parse-CPAN-Meta/corpus/json.meta
A       cpan/Parse-CPAN-Meta/corpus/yaml.meta
M       cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
M       cpan/Parse-CPAN-Meta/t/02_api.t
D       cpan/Parse-CPAN-Meta/t/data/BadMETA.yml
D       cpan/Parse-CPAN-Meta/t/data/META-VR.json
D       cpan/Parse-CPAN-Meta/t/data/META-VR.yml
D       cpan/Parse-CPAN-Meta/t/data/bareyaml.meta
D       cpan/Parse-CPAN-Meta/t/data/json.meta
D       cpan/Parse-CPAN-Meta/t/data/yaml.meta
M       cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm

commit 181e5cbaddfed0068a152bd22980ceb987010260
Author: Chris 'BinGOs' Williams <[email protected]>
Date:   Thu Jun 11 16:34:35 2015 +0100

    Regen META files after CPAN-Meta update
    
    Note for future:
    
    Looks like there is an x_serialization now, so if CPAN::Meta::YAML
    and/or JSON::PP get updated then these META files will need regenerating
    too.

M       META.json
M       META.yml

commit 2b771c51706b5815f1928ec88c49b535095adea6
Author: Chris 'BinGOs' Williams <[email protected]>
Date:   Thu Jun 11 16:28:11 2015 +0100

    Update CPAN-Meta to CPAN release 2.150005
    
      [DELTA]
    
    2.150005  2015-06-09 19:08:44-06:00 America/Denver
    
      [TESTING]
    
      - Changed some test data from UTF-8 to ASCII
    
    2.150004  2015-05-19 11:25:53-04:00 America/New_York (TRIAL RELEASE)
    
      [DOCUMENTED]
    
      - Noted explicitly that historical META spec files are licensed under
        the same terms as Perl
    
      [TESTING]
    
      - Added test for 'x_deprecated' field in "provides"
    
      [META]
    
      - declared extra developer prereq
    
    2.150003  2015-04-21 19:41:15-04:00 America/New_York (TRIAL RELEASE)
    
      [CHANGED]
    
      - Serialized CPAN::Meta objects now include a x_serialization_backend
        entry
    
    2.150002  2015-04-19 01:00:10+02:00 Europe/Berlin (TRIAL RELEASE)
    
      [CHANGED]
    
      - Metadata merging now does deep hash merging as long as keys
        don't conflict

M       MANIFEST
M       Porting/Maintainers.pl
M       cpan/CPAN-Meta/lib/CPAN/Meta.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod
M       cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod
M       cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod
M       cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod
M       cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod
M       cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
M       cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
M       cpan/CPAN-Meta/t/converter-bad.t
M       cpan/CPAN-Meta/t/converter-fail.t
M       cpan/CPAN-Meta/t/converter-fragments.t
M       cpan/CPAN-Meta/t/converter.t
A       cpan/CPAN-Meta/t/data-test/preserve-release-status.yml
M       cpan/CPAN-Meta/t/load-bad.t
M       cpan/CPAN-Meta/t/merge.t
M       cpan/CPAN-Meta/t/meta-obj.t
M       cpan/CPAN-Meta/t/no-index.t
M       cpan/CPAN-Meta/t/optional_feature-merge.t
M       cpan/CPAN-Meta/t/prereqs-finalize.t
M       cpan/CPAN-Meta/t/prereqs-merge.t
M       cpan/CPAN-Meta/t/prereqs.t
M       cpan/CPAN-Meta/t/repository.t
M       cpan/CPAN-Meta/t/save-load.t
M       cpan/CPAN-Meta/t/validator.t
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           | 13 +++--
 META.json                                          |  5 +-
 META.yml                                           |  3 +-
 Porting/Maintainers.pl                             |  4 +-
 cpan/CPAN-Meta/lib/CPAN/Meta.pm                    | 35 ++++++++++--
 cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm          | 10 ++--
 cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm            | 11 ++--
 cpan/CPAN-Meta/lib/CPAN/Meta/History.pm            |  4 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod  |  3 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod  |  3 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod  |  3 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod  |  3 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod  |  3 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm              | 25 ++++++++-
 cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm            | 15 +++--
 cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm               |  4 +-
 cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm          | 11 ++--
 cpan/CPAN-Meta/t/converter-bad.t                   |  2 +-
 cpan/CPAN-Meta/t/converter-fail.t                  |  2 +-
 cpan/CPAN-Meta/t/converter-fragments.t             |  4 +-
 cpan/CPAN-Meta/t/converter.t                       | 12 ++++
 .../{META-1_0.yml => preserve-release-status.yml}  |  1 +
 cpan/CPAN-Meta/t/load-bad.t                        |  8 +--
 cpan/CPAN-Meta/t/merge.t                           | 64 +++++++++++++++++++---
 cpan/CPAN-Meta/t/meta-obj.t                        |  1 +
 cpan/CPAN-Meta/t/no-index.t                        |  1 +
 cpan/CPAN-Meta/t/optional_feature-merge.t          |  8 +--
 cpan/CPAN-Meta/t/prereqs-finalize.t                |  5 +-
 cpan/CPAN-Meta/t/prereqs-merge.t                   |  1 +
 cpan/CPAN-Meta/t/prereqs.t                         |  2 +-
 cpan/CPAN-Meta/t/repository.t                      |  1 +
 cpan/CPAN-Meta/t/save-load.t                       | 22 ++++++++
 cpan/CPAN-Meta/t/validator.t                       |  3 +-
 .../Parse-CPAN-Meta/{t/data => corpus}/BadMETA.yml |  0
 .../{t/data => corpus}/META-VR.json                |  0
 .../Parse-CPAN-Meta/{t/data => corpus}/META-VR.yml |  0
 .../{t/data => corpus}/bareyaml.meta               |  0
 cpan/Parse-CPAN-Meta/{t/data => corpus}/json.meta  |  0
 cpan/Parse-CPAN-Meta/{t/data => corpus}/yaml.meta  |  0
 cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm        | 19 +++++--
 cpan/Parse-CPAN-Meta/t/02_api.t                    | 33 ++++++++---
 cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm |  2 +-
 42 files changed, 258 insertions(+), 88 deletions(-)
 copy cpan/CPAN-Meta/t/data-test/{META-1_0.yml => preserve-release-status.yml} 
(94%)
 rename cpan/Parse-CPAN-Meta/{t/data => corpus}/BadMETA.yml (100%)
 rename cpan/Parse-CPAN-Meta/{t/data => corpus}/META-VR.json (100%)
 rename cpan/Parse-CPAN-Meta/{t/data => corpus}/META-VR.yml (100%)
 rename cpan/Parse-CPAN-Meta/{t/data => corpus}/bareyaml.meta (100%)
 rename cpan/Parse-CPAN-Meta/{t/data => corpus}/json.meta (100%)
 rename cpan/Parse-CPAN-Meta/{t/data => corpus}/yaml.meta (100%)

diff --git a/MANIFEST b/MANIFEST
index 64529d9..7122981 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -299,6 +299,7 @@ cpan/CPAN-Meta/t/data-test/META-1_3.yml
 cpan/CPAN-Meta/t/data-test/META-1_4.yml
 cpan/CPAN-Meta/t/data-test/META-2.json
 cpan/CPAN-Meta/t/data-test/META-2.meta
+cpan/CPAN-Meta/t/data-test/preserve-release-status.yml
 cpan/CPAN-Meta/t/data-test/provides-version-missing.json
 cpan/CPAN-Meta/t/data-test/resources.yml
 cpan/CPAN-Meta/t/data-test/restricted-2.json
@@ -1696,17 +1697,17 @@ cpan/parent/t/parent-classfromfile.t            tests 
for parent.pm
 cpan/parent/t/parent-pmc.t                     tests for parent.pm
 cpan/parent/t/parent-returns-false.t           tests for parent.pm
 cpan/parent/t/parent.t                         tests for parent.pm
+cpan/Parse-CPAN-Meta/corpus/BadMETA.yml
+cpan/Parse-CPAN-Meta/corpus/bareyaml.meta
+cpan/Parse-CPAN-Meta/corpus/json.meta
+cpan/Parse-CPAN-Meta/corpus/META-VR.json
+cpan/Parse-CPAN-Meta/corpus/META-VR.yml
+cpan/Parse-CPAN-Meta/corpus/yaml.meta
 cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
 cpan/Parse-CPAN-Meta/t/02_api.t
 cpan/Parse-CPAN-Meta/t/03_functions.t
 cpan/Parse-CPAN-Meta/t/04_export.t
 cpan/Parse-CPAN-Meta/t/05_errors.t
-cpan/Parse-CPAN-Meta/t/data/BadMETA.yml
-cpan/Parse-CPAN-Meta/t/data/bareyaml.meta
-cpan/Parse-CPAN-Meta/t/data/json.meta
-cpan/Parse-CPAN-Meta/t/data/META-VR.json
-cpan/Parse-CPAN-Meta/t/data/META-VR.yml
-cpan/Parse-CPAN-Meta/t/data/yaml.meta
 cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
 cpan/perlfaq/lib/perlfaq1.pod          General Questions About Perl
 cpan/perlfaq/lib/perlfaq2.pod  Obtaining and Learning about Perl
diff --git a/META.json b/META.json
index d485354..3dce54f 100644
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
       "[email protected]"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "CPAN::Meta version 2.150001",
+   "generated_by" : "CPAN::Meta version 2.150005",
    "license" : [
       "perl_5"
    ],
@@ -125,5 +125,6 @@
          "url" : "http://perl5.git.perl.org/";
       }
    },
-   "version" : "5.023000"
+   "version" : "5.023000",
+   "x_serialization_backend" : "JSON::PP version 2.27300"
 }
diff --git a/META.yml b/META.yml
index c444698..9dc74ff 100644
--- a/META.yml
+++ b/META.yml
@@ -4,7 +4,7 @@ author:
   - [email protected]
 build_requires: {}
 dynamic_config: 1
-generated_by: 'CPAN::Meta version 2.150001, CPAN::Meta::Converter version 
2.150001'
+generated_by: 'CPAN::Meta version 2.150005, CPAN::Meta::Converter version 
2.150005'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -113,3 +113,4 @@ resources:
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
 version: '5.023000'
+x_serialization_backend: 'CPAN::Meta::YAML version 0.016'
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 5cc75c5..bccc88a 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -281,7 +281,7 @@ use File::Glob qw(:case);
     # Note: When updating CPAN-Meta the META.* files will need to be 
regenerated
     # perl -Icpan/CPAN-Meta/lib Porting/makemeta
     'CPAN::Meta' => {
-        'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.150001.tar.gz',
+        'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.150005.tar.gz',
         'FILES'        => q[cpan/CPAN-Meta],
         'EXCLUDED'     => [
             qw[t/00-report-prereqs.t],
@@ -874,7 +874,7 @@ use File::Glob qw(:case);
     },
 
     'Parse::CPAN::Meta' => {
-        'DISTRIBUTION' => 'DAGOLDEN/Parse-CPAN-Meta-1.4414.tar.gz',
+        'DISTRIBUTION' => 'DAGOLDEN/Parse-CPAN-Meta-1.4417.tar.gz',
         'FILES'        => q[cpan/Parse-CPAN-Meta],
         'EXCLUDED'     => [
             qw[t/00-report-prereqs.t],
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta.pm b/cpan/CPAN-Meta/lib/CPAN/Meta.pm
index 2a78691..afbb221 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 package CPAN::Meta;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 #pod =head1 SYNOPSIS
 #pod
@@ -591,6 +591,10 @@ sub as_struct {
 #pod both cases, the same rules are followed as in the C<save()> method for 
choosing
 #pod a serialization backend.
 #pod
+#pod The serialized structure will include a C<x_serialization_backend> entry 
giving
+#pod the package and version used to serialize.  Any existing key in the given
+#pod C<$meta> object will be clobbered.
+#pod
 #pod =cut
 
 sub as_string {
@@ -610,10 +614,14 @@ sub as_string {
   my ($data, $backend);
   if ( $version ge '2' ) {
     $backend = Parse::CPAN::Meta->json_backend();
+    local $struct->{x_serialization_backend} = sprintf '%s version %s',
+      $backend, $backend->VERSION;
     $data = $backend->new->pretty->canonical->encode($struct);
   }
   else {
     $backend = Parse::CPAN::Meta->yaml_backend();
+    local $struct->{x_serialization_backend} = sprintf '%s version %s',
+      $backend, $backend->VERSION;
     $data = eval { no strict 'refs'; &{"$backend\::Dump"}($struct) };
     if ( $@ ) {
       croak $backend->can('errstr') ? $backend->errstr : $@
@@ -632,8 +640,6 @@ sub TO_JSON {
 
 # ABSTRACT: the distribution metadata for a CPAN dist
 
-__END__
-
 =pod
 
 =encoding UTF-8
@@ -644,7 +650,7 @@ CPAN::Meta - the distribution metadata for a CPAN dist
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 SYNOPSIS
 
@@ -859,6 +865,10 @@ JSON.  For C<version> less than 2, the string will be 
serialized as YAML.  In
 both cases, the same rules are followed as in the C<save()> method for choosing
 a serialization backend.
 
+The serialized structure will include a C<x_serialization_backend> entry giving
+the package and version used to serialize.  Any existing key in the given
+C<$meta> object will be clobbered.
+
 =head1 STRING DATA
 
 The following methods return a single value, which is the value for the
@@ -1025,7 +1035,7 @@ Ricardo Signes <[email protected]>
 
 =head1 CONTRIBUTORS
 
-=for stopwords Ansgar Burchardt Avar Arnfjord Bjarmason Christopher J. Madsen 
Chuck Adams Cory G Watson Damyan Ivanov Eric Wilhelm Graham Knop Gregor Hermann 
Karen Etheridge Kenichi Ishigaki Ken Will ... [140 chars truncated]
+=for stopwords Ansgar Burchardt Avar Arnfjord Bjarmason Christopher J. Madsen 
Chuck Adams Cory G Watson Damyan Ivanov Eric Wilhelm Graham Knop Gregor Hermann 
Karen Etheridge Kenichi Ishigaki Ken Will ... [167 chars truncated]
 
 =over 4
 
@@ -1111,16 +1121,24 @@ moznion <[email protected]>
 
 =item *
 
+Niko Tyni <[email protected]>
+
+=item *
+
 Olaf Alders <[email protected]>
 
 =item *
 
-Olivier Mengue <[email protected]>
+Olivier Mengué <[email protected]>
 
 =item *
 
 Randy Sims <[email protected]>
 
+=item *
+
+Tomohiro Hosaka <[email protected]>
+
 =back
 
 =head1 COPYRIGHT AND LICENSE
@@ -1131,3 +1149,8 @@ This is free software; you can redistribute it and/or 
modify it under
 the same terms as the Perl 5 programming language system itself.
 
 =cut
+
+__END__
+
+
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
index 8b32b13..03806bc 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 package CPAN::Meta::Converter;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 #pod =head1 SYNOPSIS
 #pod
@@ -388,6 +388,8 @@ sub _clean_version {
 
 sub _bad_version_hook {
   my ($v) = @_;
+  $v =~ s{^\s*}{};
+  $v =~ s{\s*$}{};
   $v =~ s{[a-z]+$}{}; # strip trailing alphabetics
   my $vobj = eval { version->new($v) };
   return defined($vobj) ? $vobj : version->new(0); # or give up
@@ -803,7 +805,7 @@ my %up_convert = (
     # CHANGED TO MANDATORY
     'dynamic_config'      => \&_keep_or_one,
     # ADDED MANDATORY
-    'release_status'      => \&_release_status_from_version,
+    'release_status'      => \&_release_status,
     # PRIOR OPTIONAL
     'keywords'            => \&_keep,
     'no_index'            => \&_no_index_directory,
@@ -1497,7 +1499,7 @@ CPAN::Meta::Converter - Convert CPAN distribution 
metadata structures
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 SYNOPSIS
 
@@ -1634,4 +1636,4 @@ the same terms as the Perl 5 programming language system 
itself.
 __END__
 
 
-# vim: ts=2 sts=2 sw=2 et:
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
index 4bfbb19..9dac4f4 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 package CPAN::Meta::Feature;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 use CPAN::Meta::Prereqs;
 
@@ -67,8 +67,6 @@ sub prereqs     { $_[0]{prereqs} }
 
 # ABSTRACT: an optional feature provided by a CPAN distribution
 
-__END__
-
 =pod
 
 =encoding UTF-8
@@ -79,7 +77,7 @@ CPAN::Meta::Feature - an optional feature provided by a CPAN 
distribution
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 DESCRIPTION
 
@@ -144,3 +142,8 @@ This is free software; you can redistribute it and/or 
modify it under
 the same terms as the Perl 5 programming language system itself.
 
 =cut
+
+__END__
+
+
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
index 3d7e558..f4cac5e 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 package CPAN::Meta::History;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 1;
 
@@ -22,7 +22,7 @@ CPAN::Meta::History - history of CPAN Meta Spec changes
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 DESCRIPTION
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod 
b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod
index 1052c3e..cd3bb9c 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod
@@ -7,7 +7,8 @@ CPAN::Meta::History::Meta_1_0 - Version 1.0 metadata 
specification for META.yml
 =head1 PREFACE
 
 This is a historical copy of the version 1.0 specification for F<META.yml>
-files, copyright by Ken Williams.
+files, copyright by Ken Williams and licensed under the same terms as Perl
+itself.
 
 Modifications from the original:
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod 
b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod
index 69f3411..7b4b2f4 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod
@@ -7,7 +7,8 @@ CPAN::Meta::History::Meta_1_1 - Version 1.1 metadata 
specification for META.yml
 =head1 PREFACE
 
 This is a historical copy of the version 1.1 specification for F<META.yml>
-files, copyright by Ken Williams.
+files, copyright by Ken Williams and licensed under the same terms as Perl
+itself.
 
 Modifications from the original:
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod 
b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod
index 69cd5bb..48867b2 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod
@@ -7,7 +7,8 @@ CPAN::Meta::History::Meta_1_2 - Version 1.2 metadata 
specification for META.yml
 =head1 PREFACE
 
 This is a historical copy of the version 1.2 specification for F<META.yml>
-files, copyright by Ken Williams.
+files, copyright by Ken Williams and licensed under the same terms as Perl
+itself.
 
 Modifications from the original:
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod 
b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod
index deff28d..b075adc 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod
@@ -7,7 +7,8 @@ CPAN::Meta::History::Meta_1_3 - Version 1.3 metadata 
specification for META.yml
 =head1 PREFACE
 
 This is a historical copy of the version 1.3 specification for F<META.yml>
-files, copyright by Ken Williams.
+files, copyright by Ken Williams and licensed under the same terms as Perl
+itself.
 
 Modifications from the original:
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod 
b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod
index a84fb3d..471296c 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod
@@ -7,7 +7,8 @@ CPAN::Meta::History::Meta_1_4 - Version 1.4 metadata 
specification for META.yml
 =head1 PREFACE
 
 This is a historical copy of the version 1.4 specification for F<META.yml>
-files, copyright by Ken Williams.
+files, copyright by Ken Williams and licensed under the same terms as Perl
+itself.
 
 Modifications from the original:
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
index f4c1286..05a18ea 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
@@ -3,15 +3,24 @@ use warnings;
 
 package CPAN::Meta::Merge;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 use Carp qw/croak/;
 use Scalar::Util qw/blessed/;
 use CPAN::Meta::Converter 2.141170;
 
+sub _is_identical {
+  my ($left, $right) = @_;
+  return
+    (not defined $left and not defined $right)
+    # if either of these are references, we compare the serialized value
+    || (defined $left and defined $right and $left eq $right);
+}
+
 sub _identical {
   my ($left, $right, $path) = @_;
-  croak sprintf "Can't merge attribute %s: '%s' does not equal '%s'", 
join('.', @{$path}), $left, $right unless $left eq $right;
+  croak sprintf "Can't merge attribute %s: '%s' does not equal '%s'", 
join('.', @{$path}), $left, $right
+    unless _is_identical($left, $right);
   return $left;
 }
 
@@ -50,6 +59,13 @@ sub _uniq_map {
     if (not exists $left->{$key}) {
       $left->{$key} = $right->{$key};
     }
+    # identical strings or references are merged identically
+    elsif (_is_identical($left->{$key}, $right->{$key})) {
+      1; # do nothing - keep left
+    }
+    elsif (ref $left->{$key} eq 'HASH' and ref $right->{$key} eq 'HASH') {
+      $left->{$key} = _uniq_map($left->{$key}, $right->{$key}, [ @{$path}, 
$key ]);
+    }
     else {
       croak 'Duplication of element ' . join '.', @{$path}, $key;
     }
@@ -219,6 +235,9 @@ sub merge {
 
 # ABSTRACT: Merging CPAN Meta fragments
 
+
+# vim: ts=2 sts=2 sw=2 et :
+
 __END__
 
 =pod
@@ -231,7 +250,7 @@ CPAN::Meta::Merge - Merging CPAN Meta fragments
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 SYNOPSIS
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
index 7503510..8a13eb1 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 package CPAN::Meta::Prereqs;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 #pod =head1 DESCRIPTION
 #pod
@@ -163,7 +163,7 @@ sub with_merged_prereqs {
 #pod
 #pod     my $new_reqs = $prereqs->merged_requirements( \@phases, \@types );
 #pod     my $new_reqs = $prereqs->merged_requirements( \@phases );
-#pod     my $new_reqs = $preerqs->merged_requirements();
+#pod     my $new_reqs = $prereqs->merged_requirements();
 #pod
 #pod This method joins together all requirements across a number of phases
 #pod and types into a new L<CPAN::Meta::Requirements> object.  If arguments
@@ -275,8 +275,6 @@ sub clone {
 
 # ABSTRACT: a set of distribution prerequisites by phase and type
 
-__END__
-
 =pod
 
 =encoding UTF-8
@@ -287,7 +285,7 @@ CPAN::Meta::Prereqs - a set of distribution prerequisites 
by phase and type
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 DESCRIPTION
 
@@ -353,7 +351,7 @@ will not alter them.
 
     my $new_reqs = $prereqs->merged_requirements( \@phases, \@types );
     my $new_reqs = $prereqs->merged_requirements( \@phases );
-    my $new_reqs = $preerqs->merged_requirements();
+    my $new_reqs = $prereqs->merged_requirements();
 
 This method joins together all requirements across a number of phases
 and types into a new L<CPAN::Meta::Requirements> object.  If arguments
@@ -417,3 +415,8 @@ This is free software; you can redistribute it and/or 
modify it under
 the same terms as the Perl 5 programming language system itself.
 
 =cut
+
+__END__
+
+
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
index ec68f17..9056940 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
@@ -8,7 +8,7 @@ use strict;
 use warnings;
 package CPAN::Meta::Spec;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 1;
 
@@ -29,7 +29,7 @@ CPAN::Meta::Spec - specification for CPAN distribution 
metadata
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 SYNOPSIS
 
diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm 
b/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
index cc0409e..eddaa10 100644
--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
+++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 package CPAN::Meta::Validator;
 
-our $VERSION = '2.150001';
+our $VERSION = '2.150005';
 
 #pod =head1 SYNOPSIS
 #pod
@@ -986,8 +986,6 @@ sub _error {
 
 # ABSTRACT: validate CPAN distribution metadata structures
 
-__END__
-
 =pod
 
 =encoding UTF-8
@@ -998,7 +996,7 @@ CPAN::Meta::Validator - validate CPAN distribution metadata 
structures
 
 =head1 VERSION
 
-version 2.150001
+version 2.150005
 
 =head1 SYNOPSIS
 
@@ -1205,3 +1203,8 @@ This is free software; you can redistribute it and/or 
modify it under
 the same terms as the Perl 5 programming language system itself.
 
 =cut
+
+__END__
+
+
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/converter-bad.t b/cpan/CPAN-Meta/t/converter-bad.t
index f9e7d59..7cce934 100644
--- a/cpan/CPAN-Meta/t/converter-bad.t
+++ b/cpan/CPAN-Meta/t/converter-bad.t
@@ -73,4 +73,4 @@ for my $f ( reverse sort @files ) {
 }
 
 done_testing;
-
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/converter-fail.t 
b/cpan/CPAN-Meta/t/converter-fail.t
index b9cfedd..dfda1ae 100644
--- a/cpan/CPAN-Meta/t/converter-fail.t
+++ b/cpan/CPAN-Meta/t/converter-fail.t
@@ -38,4 +38,4 @@ for my $f ( reverse sort @files ) {
 }
 
 done_testing;
-
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/converter-fragments.t 
b/cpan/CPAN-Meta/t/converter-fragments.t
index 18dad14..a9b78de 100644
--- a/cpan/CPAN-Meta/t/converter-fragments.t
+++ b/cpan/CPAN-Meta/t/converter-fragments.t
@@ -151,8 +151,8 @@ for my $c (@cases) {
     my $got = $cmc->upgrade_fragment;
     my $exp = $c->{expect};
     is_deeply( $got, $exp, $c->{label} )
-      or diag "GOT:\n" . explain($got) . "\nEXPECTED:\n" . explain($exp);
+      or diag "GOT:\n", explain($got), "EXPECTED:\n", explain($exp);
 }
 
 done_testing;
-# vim: ts=4 sts=4 sw=4 et:
+# vim: ts=8 sts=4 sw=4 et :
diff --git a/cpan/CPAN-Meta/t/converter.t b/cpan/CPAN-Meta/t/converter.t
index 10c6a48..87cdbd6 100644
--- a/cpan/CPAN-Meta/t/converter.t
+++ b/cpan/CPAN-Meta/t/converter.t
@@ -34,6 +34,7 @@ my @files = sort grep { /^\w/ } $data_dir->read;
 #use Data::Dumper;
 
 for my $f ( reverse sort @files ) {
+  note '';
   my $path = File::Spec->catfile('t','data-test',$f);
   my $original = Parse::CPAN::Meta->load_file( $path  );
   ok( $original, "loaded $f" );
@@ -294,4 +295,15 @@ sub _normalize_reqs {
   );
 }
 
+# specific test for preserving release_status on upconversion
+{
+  my $path = 
File::Spec->catfile('t','data-test','preserve-release-status.yml');
+  my $original = Parse::CPAN::Meta->load_file( $path  );
+  ok( $original, "loaded META-2.json" );
+  my $cmc = CPAN::Meta::Converter->new( $original );
+  my $cleaned_up = $cmc->convert( version => "2" );
+  is( $cleaned_up->{release_status}, 'unstable', "release_status preserved" );
+}
+
 done_testing;
+# vim: ts=2 sts=2 sw=2 et:
diff --git a/cpan/CPAN-Meta/t/data-test/META-1_0.yml 
b/cpan/CPAN-Meta/t/data-test/preserve-release-status.yml
similarity index 94%
copy from cpan/CPAN-Meta/t/data-test/META-1_0.yml
copy to cpan/CPAN-Meta/t/data-test/preserve-release-status.yml
index e72d9ed..9468b86 100644
--- a/cpan/CPAN-Meta/t/data-test/META-1_0.yml
+++ b/cpan/CPAN-Meta/t/data-test/preserve-release-status.yml
@@ -10,3 +10,4 @@ requires:
     Template:                      2.15
 distribution_type: module
 generated_by: ExtUtils::MakeMaker version 6.17
+release_status: unstable
diff --git a/cpan/CPAN-Meta/t/load-bad.t b/cpan/CPAN-Meta/t/load-bad.t
index c3df3ea..7cae168 100644
--- a/cpan/CPAN-Meta/t/load-bad.t
+++ b/cpan/CPAN-Meta/t/load-bad.t
@@ -15,13 +15,11 @@ my @files = sort grep { /^\w/ } $data_dir->read;
 
 for my $f ( sort @files ) {
   my $path = File::Spec->catfile('t','data-fixable',$f);
-  my $meta = eval { CPAN::Meta->load_file( $path ) };
-  ok( defined $meta, "load_file('$f')" ) or diag $@;
+  ok( eval { CPAN::Meta->load_file( $path ) }, "load_file('$f')" ) or diag $@;
   my $string = _slurp($path);
   my $method =  $path =~ /\.json/ ? "load_json_string" : "load_yaml_string";
-  my $meta2 = eval { CPAN::Meta->$method( $string, { fix_errors => 1 } ) };
-  ok( defined $meta2, "$method(slurp('$f'))" ) or diag $@;
+  ok( eval { CPAN::Meta->$method( $string, { fix_errors => 1 } ) }, 
"$method(slurp('$f'))" ) or diag $@;
 }
 
 done_testing;
-
+# vim: ts=2 sts=2 sw=2 et:
diff --git a/cpan/CPAN-Meta/t/merge.t b/cpan/CPAN-Meta/t/merge.t
index f58e8c6..39e8124 100644
--- a/cpan/CPAN-Meta/t/merge.t
+++ b/cpan/CPAN-Meta/t/merge.t
@@ -1,5 +1,3 @@
-#! perl
-
 use strict;
 use warnings;
 
@@ -14,6 +12,7 @@ my %base = (
        license => [ 'perl_5' ],
        resources => {
                license => [ 'http://dev.perl.org/licenses/' ],
+                bugtracker => { web => 
'https://rt.cpan.org/Dist/Display.html?Foo-Bar' },
        },
        prereqs => {
                runtime => {
@@ -70,6 +69,7 @@ my %first_expected = (
        license => [ 'perl_5', 'bsd' ],
        resources => {
                license => [ 'http://dev.perl.org/licenses/', 
'http://opensource.org/licenses/bsd-license.php' ],
+                bugtracker => { web => 
'https://rt.cpan.org/Dist/Display.html?Foo-Bar' },
        },
        prereqs => {
                runtime => {
@@ -100,6 +100,34 @@ my %first_expected = (
                version => 2,
        },
 );
+my %provides_merge_expected = (
+       abstract => 'This is a test',
+       author => ['A.U. Thor'],
+       generated_by => 'Myself',
+       license => [ 'perl_5' ],
+       resources => {
+               license => [ 'http://dev.perl.org/licenses/' ],
+               bugtracker => { web => 
'https://rt.cpan.org/Dist/Display.html?Foo-Bar' },
+       },
+       prereqs => {
+               runtime => {
+                       requires => {
+                               Foo => '0',
+                       },
+               },
+       },
+       dynamic_config => 0,
+       provides => {
+               Baz => {
+                       file => 'lib/Baz.pm',
+                       version => '0.001',         # same as %base, but for 
this extra key
+               },
+       },
+       'meta-spec' => {
+               url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec";,
+               version => 2,
+       },
+);
 
 my $merger = CPAN::Meta::Merge->new(default_version => '2');
 
@@ -108,13 +136,34 @@ my $first_result = $merger->merge(\%base, \%first);
 is_deeply($first_result, \%first_expected, 'First result is as expected');
 
 is_deeply($merger->merge(\%base, { abstract => 'This is a test' }), \%base, 
'Can merge in identical abstract');
-my $failure = eval { $merger->merge(\%base, { abstract => 'And now for 
something else' }) };
-is($failure, undef, 'Trying to merge different author gives an exception');
+is(
+    eval { $merger->merge(\%base, { abstract => 'And now for something else' 
}) },
+    undef,
+    'Trying to merge different author gives an exception',
+);
 like $@, qr/^Can't merge attribute abstract/, 'Exception looks right';
 
-my $failure2 = eval { $merger->merge(\%base, { provides => { Baz => { file => 
'Baz.pm' } } }) };
-is($failure2, undef, 'Trying to merge different author gives an exception');
-like $@, qr/^Duplication of element provides\.Baz /, 'Exception looks right';
+is(
+    eval { $merger->merge(\%base, { resources => { bugtracker => { web => 
'http://foo.com' } } } ) },
+    undef,
+    'Trying to merge a different bugtracker URL gives an exception',
+);
+like $@, qr/^Duplication of element resources\.bugtracker\.web /, 'Exception 
looks right';
+
+is(
+    eval { $merger->merge(\%base, { provides => { Baz => { file => 'Baz.pm' } 
} }) },
+    undef,
+    'Trying to merge different provides.$module.file gives an exception',
+);
+like $@, qr/^Duplication of element provides\.Baz\.file /, 'Exception looks 
right';
+
+my $provides_result = $merger->merge(\%base, { provides => { Baz => { file => 
'lib/Baz.pm', version => '0.001' } } });
+is_deeply(
+       $provides_result,
+       \%provides_merge_expected,
+       'Trying to merge a new key for provides.$module is permitted; identical 
values are preserved',
+);
+
 
 # issue 67
 @base{qw/name version release_status/} = qw/Foo-Bar 0.01 testing/;
@@ -122,3 +171,4 @@ my $base_obj = CPAN::Meta->create(\%base);
 ok my $first_result_obj = $merger->merge($base_obj, \%first), 'merging 
CPAN::Meta objects succeeds';
 
 done_testing();
+# vim: ts=4 sts=4 sw=4 tw=78 noet :
diff --git a/cpan/CPAN-Meta/t/meta-obj.t b/cpan/CPAN-Meta/t/meta-obj.t
index bb39c46..fa3c703 100644
--- a/cpan/CPAN-Meta/t/meta-obj.t
+++ b/cpan/CPAN-Meta/t/meta-obj.t
@@ -240,3 +240,4 @@ $chk_feature->($features[0]);
 $chk_feature->( $meta->feature('domination') );
 
 done_testing;
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/no-index.t b/cpan/CPAN-Meta/t/no-index.t
index 456633a..554e921 100644
--- a/cpan/CPAN-Meta/t/no-index.t
+++ b/cpan/CPAN-Meta/t/no-index.t
@@ -86,3 +86,4 @@ my %distmeta = (
 }
 
 done_testing;
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/optional_feature-merge.t 
b/cpan/CPAN-Meta/t/optional_feature-merge.t
index 15aa621..76ea964 100644
--- a/cpan/CPAN-Meta/t/optional_feature-merge.t
+++ b/cpan/CPAN-Meta/t/optional_feature-merge.t
@@ -1,6 +1,5 @@
 use strict;
 use warnings;
-# vim: set ts=4 sw=4 noet nolist :
 
 use Test::More;
 use CPAN::Meta;
@@ -92,8 +91,7 @@ my $fragment3 = {
        }
 };
 
-my $result = eval { $merger->merge($meta1, $fragment3) };
-is($result, undef, 'Trying to merge optional_features with same feature name 
and different descriptions gives an exception');
+is( eval { $merger->merge($meta1, $fragment3) }, undef, 'Trying to merge 
optional_features with same feature name and different descriptions gives an 
exception');
 like $@, qr/^Cannot merge two optional_features named 'FeatureName' with 
different 'description' values/, 'Exception looks right';
 
 my $fragment4 = {
@@ -106,8 +104,7 @@ my $fragment4 = {
        }
 };
 
-$result = eval { $merger->merge($meta1, $fragment4) };
-is($result, undef, 'Trying to merge optional_features with same feature name 
and differences in other keys gives an exception');
+is( eval { $merger->merge($meta1, $fragment4) }, undef, 'Trying to merge 
optional_features with same feature name and differences in other keys gives an 
exception');
 like $@, qr/^Cannot merge two optional_features named 'FeatureName' with 
different 'x_default' values/, 'Exception looks right';
 
 my $fragment5 = {
@@ -140,3 +137,4 @@ is_deeply(
 );
 
 done_testing;
+# vim: ts=4 sts=4 sw=4 noet :
diff --git a/cpan/CPAN-Meta/t/prereqs-finalize.t 
b/cpan/CPAN-Meta/t/prereqs-finalize.t
index e974f99..ac4aea8 100644
--- a/cpan/CPAN-Meta/t/prereqs-finalize.t
+++ b/cpan/CPAN-Meta/t/prereqs-finalize.t
@@ -9,9 +9,7 @@ delete $ENV{$_} for qw/PERL_JSON_BACKEND PERL_YAML_BACKEND/; # 
use defaults
 sub dies_ok (&@) {
   my ($code, $qr, $comment) = @_;
 
-  my $lived = eval { $code->(); 1 };
-
-  if ($lived) {
+  if (eval { $code->(); 1 }) {
     fail("$comment: did not die");
   } else {
     like($@, $qr, $comment);
@@ -91,3 +89,4 @@ $clone->requirements_for(qw(develop 
suggests))->add_minimum(Foo => 1);
 pass('...and we can add stuff to it');
 
 done_testing;
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/prereqs-merge.t b/cpan/CPAN-Meta/t/prereqs-merge.t
index 37bca7d..e15c9f2 100644
--- a/cpan/CPAN-Meta/t/prereqs-merge.t
+++ b/cpan/CPAN-Meta/t/prereqs-merge.t
@@ -104,3 +104,4 @@ is_deeply(
 );
 
 done_testing;
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/prereqs.t b/cpan/CPAN-Meta/t/prereqs.t
index ad21caa..b4a3c95 100644
--- a/cpan/CPAN-Meta/t/prereqs.t
+++ b/cpan/CPAN-Meta/t/prereqs.t
@@ -161,4 +161,4 @@ is_deeply($prereq->as_string_hash, $prereq_struct, 
"round-trip okay");
 }
 
 done_testing;
-
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/repository.t b/cpan/CPAN-Meta/t/repository.t
index 8bb1da7c..0cd2c24 100644
--- a/cpan/CPAN-Meta/t/repository.t
+++ b/cpan/CPAN-Meta/t/repository.t
@@ -225,3 +225,4 @@ delete $ENV{$_} for qw/PERL_JSON_BACKEND 
PERL_YAML_BACKEND/; # use defaults
   );
 }
 done_testing;
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/save-load.t b/cpan/CPAN-Meta/t/save-load.t
index 5399305..8093344 100644
--- a/cpan/CPAN-Meta/t/save-load.t
+++ b/cpan/CPAN-Meta/t/save-load.t
@@ -83,6 +83,16 @@ 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');
 
+like(
+  $loaded->{x_serialization_backend},
+  qr/\AJSON::PP version [0-9]/,
+  "x_serialization_backend",
+);
+
+ok(
+  ! exists $meta->{x_serialization_backend},
+  "we didn't leak x_serialization_backend up into the saved struct",
+);
 
 ok( $loaded = Parse::CPAN::Meta->load_file('t/data-test/META-1_4.yml'), 'load 
META-1.4' );
 is($loaded->{name},     'Module-Build', 'name correct');
@@ -98,6 +108,17 @@ 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' );
 
+like(
+  $loaded->{x_serialization_backend},
+  qr/\ACPAN::Meta::YAML version [0-9]/,
+  "x_serialization_backend",
+);
+
+ok(
+  ! exists $meta->{x_serialization_backend},
+  "we didn't leak x_serialization_backend up into the saved struct",
+);
+
 # file without suffix
 
 ok( $loaded = CPAN::Meta->load_file('t/data-test/META-2.meta'), 'load_file 
META-2.meta' );
@@ -106,3 +127,4 @@ my $string = do { open my $fh, '<', 
't/data-test/META-2.meta'; local $/; <$fh> }
 ok( $loaded = CPAN::Meta->load_string($string), 'load META-2.meta from string' 
);
 
 done_testing;
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/CPAN-Meta/t/validator.t b/cpan/CPAN-Meta/t/validator.t
index 4fce192..0145073 100644
--- a/cpan/CPAN-Meta/t/validator.t
+++ b/cpan/CPAN-Meta/t/validator.t
@@ -36,8 +36,9 @@ delete $ENV{$_} for qw/PERL_JSON_BACKEND PERL_YAML_BACKEND/; 
# use defaults
     my $meta = Parse::CPAN::Meta->load_file( File::Spec->catfile($f) );
     my $cmv = CPAN::Meta::Validator->new({%$meta});
     ok( ! $cmv->is_valid, "$f shouldn't validate" );
+    note 'validation error: ', $_ foreach $cmv->errors;
   }
 }
 
 done_testing;
-
+# vim: ts=2 sts=2 sw=2 et :
diff --git a/cpan/Parse-CPAN-Meta/t/data/BadMETA.yml 
b/cpan/Parse-CPAN-Meta/corpus/BadMETA.yml
similarity index 100%
rename from cpan/Parse-CPAN-Meta/t/data/BadMETA.yml
rename to cpan/Parse-CPAN-Meta/corpus/BadMETA.yml
diff --git a/cpan/Parse-CPAN-Meta/t/data/META-VR.json 
b/cpan/Parse-CPAN-Meta/corpus/META-VR.json
similarity index 100%
rename from cpan/Parse-CPAN-Meta/t/data/META-VR.json
rename to cpan/Parse-CPAN-Meta/corpus/META-VR.json
diff --git a/cpan/Parse-CPAN-Meta/t/data/META-VR.yml 
b/cpan/Parse-CPAN-Meta/corpus/META-VR.yml
similarity index 100%
rename from cpan/Parse-CPAN-Meta/t/data/META-VR.yml
rename to cpan/Parse-CPAN-Meta/corpus/META-VR.yml
diff --git a/cpan/Parse-CPAN-Meta/t/data/bareyaml.meta 
b/cpan/Parse-CPAN-Meta/corpus/bareyaml.meta
similarity index 100%
rename from cpan/Parse-CPAN-Meta/t/data/bareyaml.meta
rename to cpan/Parse-CPAN-Meta/corpus/bareyaml.meta
diff --git a/cpan/Parse-CPAN-Meta/t/data/json.meta 
b/cpan/Parse-CPAN-Meta/corpus/json.meta
similarity index 100%
rename from cpan/Parse-CPAN-Meta/t/data/json.meta
rename to cpan/Parse-CPAN-Meta/corpus/json.meta
diff --git a/cpan/Parse-CPAN-Meta/t/data/yaml.meta 
b/cpan/Parse-CPAN-Meta/corpus/yaml.meta
similarity index 100%
rename from cpan/Parse-CPAN-Meta/t/data/yaml.meta
rename to cpan/Parse-CPAN-Meta/corpus/yaml.meta
diff --git a/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm 
b/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
index 7888d1c..77a0764 100644
--- a/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
+++ b/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
@@ -2,7 +2,8 @@ use 5.008001;
 use strict;
 package Parse::CPAN::Meta;
 # ABSTRACT: Parse META.yml and META.json CPAN metadata files
-our $VERSION = '1.4414'; # VERSION
+
+our $VERSION = '1.4417';
 
 use Exporter;
 use Carp 'croak';
@@ -110,12 +111,12 @@ sub _can_load {
 
 # Kept for backwards compatibility only
 # Create an object from a file
-sub LoadFile ($) {
+sub LoadFile ($) { ## no critic
   return Load(_slurp(shift));
 }
 
 # Parse a document from a string.
-sub Load ($) {
+sub Load ($) { ## no critic
   require CPAN::Meta::YAML;
   my $object = eval { CPAN::Meta::YAML::Load(shift) };
   croak $@ if $@;
@@ -136,7 +137,7 @@ Parse::CPAN::Meta - Parse META.yml and META.json CPAN 
metadata files
 
 =head1 VERSION
 
-version 1.4414
+version 1.4417
 
 =head1 SYNOPSIS
 
@@ -283,7 +284,7 @@ will be thrown.
 =head2 Bugs / Feature Requests
 
 Please report any bugs or feature requests through the issue tracker
-at L<http://rt.cpan.org/Public/Dist/Display.html?Name=Parse-CPAN-Meta>.
+at L<https://github.com/Perl-Toolchain-Gang/Parse-CPAN-Meta/issues>.
 You will be notified automatically of any progress on your issue.
 
 =head2 Source Code
@@ -311,6 +312,8 @@ David Golden <[email protected]>
 
 =head1 CONTRIBUTORS
 
+=for stopwords Graham Knop Joshua ben Jore Karen Etheridge Neil Bowers Ricardo 
Signes Steffen Mueller
+
 =over 4
 
 =item *
@@ -323,6 +326,10 @@ Joshua ben Jore <[email protected]>
 
 =item *
 
+Karen Etheridge <[email protected]>
+
+=item *
+
 Neil Bowers <[email protected]>
 
 =item *
@@ -337,7 +344,7 @@ Steffen Mueller <[email protected]>
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2014 by Adam Kennedy and Contributors.
+This software is copyright (c) 2015 by Adam Kennedy and Contributors.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff --git a/cpan/Parse-CPAN-Meta/t/02_api.t b/cpan/Parse-CPAN-Meta/t/02_api.t
index 72bfccf..5f94bc7 100644
--- a/cpan/Parse-CPAN-Meta/t/02_api.t
+++ b/cpan/Parse-CPAN-Meta/t/02_api.t
@@ -54,12 +54,13 @@ my $meta_yaml = catfile( test_data_directory(), 
'META-VR.yml' );
 my $yaml_meta = catfile( test_data_directory(), 'yaml.meta' );
 my $json_meta = catfile( test_data_directory(), 'json.meta' );
 my $bare_yaml_meta = catfile( test_data_directory(), 'bareyaml.meta' );
+my $bad_yaml_meta = catfile( test_data_directory(), 'BadMETA.yml' );
 
 ### YAML tests
 {
   local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
 
-  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend()');
+  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): 
CPAN::Meta::YAML');
   my $from_yaml = Parse::CPAN::Meta->load_file( $meta_yaml );
   is_deeply($from_yaml, $want, "load from YAML file results in expected data");
 }
@@ -67,7 +68,8 @@ my $bare_yaml_meta = catfile( test_data_directory(), 
'bareyaml.meta' );
 {
   local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
 
-  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend()');
+  note '';
+  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): 
CPAN::Meta::YAML');
   my $from_yaml = Parse::CPAN::Meta->load_file( $yaml_meta );
   is_deeply($from_yaml, $want, "load from YAML .meta file results in expected 
data");
 }
@@ -75,7 +77,8 @@ my $bare_yaml_meta = catfile( test_data_directory(), 
'bareyaml.meta' );
 {
   local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
 
-  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend()');
+  note '';
+  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): 
CPAN::Meta::YAML');
   my $from_yaml = Parse::CPAN::Meta->load_file( $bare_yaml_meta );
   is_deeply($from_yaml, $want, "load from bare YAML .meta file results in 
expected data");
 }
@@ -83,6 +86,8 @@ my $bare_yaml_meta = catfile( test_data_directory(), 
'bareyaml.meta' );
 {
   local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
 
+  note '';
+  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): 
CPAN::Meta::YAML');
   my $yaml   = load_ok( 'META-VR.yml', $meta_yaml, 100);
   my $from_yaml = Parse::CPAN::Meta->load_yaml_string( $yaml );
   is_deeply($from_yaml, $want, "load from YAML str results in expected data");
@@ -91,17 +96,20 @@ my $bare_yaml_meta = catfile( test_data_directory(), 
'bareyaml.meta' );
 {
   local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
 
-  my @yaml   = Parse::CPAN::Meta::LoadFile( 't/data/BadMETA.yml' );
+  note '';
+  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): 
CPAN::Meta::YAML');
+  my @yaml   = Parse::CPAN::Meta::LoadFile( $bad_yaml_meta );
   is($yaml[0]{author}[0], 'Olivier Mengu\xE9', "Bad UTF-8 is replaced");
 }
 
 
 SKIP: {
+  note '';
   skip "YAML module not installed", 2
     unless eval "require YAML; 1";
   local $ENV{PERL_YAML_BACKEND} = 'YAML';
 
-  is(Parse::CPAN::Meta->yaml_backend(), 'YAML', 'yaml_backend()');
+  is(Parse::CPAN::Meta->yaml_backend(), 'YAML', 'yaml_backend(): YAML');
   my $yaml   = load_ok( 'META-VR.yml', $meta_yaml, 100);
   my $from_yaml = Parse::CPAN::Meta->load_yaml_string( $yaml );
   is_deeply($from_yaml, $want, "load_yaml_string using PERL_YAML_BACKEND");
@@ -112,7 +120,8 @@ SKIP: {
   # JSON tests with JSON::PP
   local $ENV{PERL_JSON_BACKEND}; # ensure we get JSON::PP
 
-  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend()');
+  note '';
+  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): 
JSON::PP');
   my $from_json = Parse::CPAN::Meta->load_file( $meta_json );
   is_deeply($from_json, $want, "load from JSON file results in expected data");
 }
@@ -121,7 +130,8 @@ SKIP: {
   # JSON tests with JSON::PP
   local $ENV{PERL_JSON_BACKEND}; # ensure we get JSON::PP
 
-  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend()');
+  note '';
+  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): 
JSON::PP');
   my $from_json = Parse::CPAN::Meta->load_file( $json_meta );
   is_deeply($from_json, $want, "load from JSON .meta file results in expected 
data");
 }
@@ -130,6 +140,8 @@ SKIP: {
   # JSON tests with JSON::PP
   local $ENV{PERL_JSON_BACKEND}; # ensure we get JSON::PP
 
+  note '';
+  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): 
JSON::PP');
   my $json   = load_ok( 'META-VR.json', $meta_json, 100);
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load from JSON str results in expected data");
@@ -139,6 +151,8 @@ SKIP: {
   # JSON tests with JSON::PP, take 2
   local $ENV{PERL_JSON_BACKEND} = 0; # request JSON::PP
 
+  note '';
+  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): 
JSON::PP');
   my $json   = load_ok( 'META-VR.json', $meta_json, 100);
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load_json_string with PERL_JSON_BACKEND = 0");
@@ -148,17 +162,20 @@ SKIP: {
   # JSON tests with JSON::PP, take 3
   local $ENV{PERL_JSON_BACKEND} = 'JSON::PP'; # request JSON::PP
 
+  note '';
+  is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): 
JSON::PP');
   my $json   = load_ok( 'META-VR.json', $meta_json, 100);
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load_json_string with PERL_JSON_BACKEND = 
'JSON::PP'");
 }
 
 SKIP: {
+  note '';
   skip "JSON module version 2.5 not installed", 2
     unless eval "require JSON; JSON->VERSION(2.5); 1";
   local $ENV{PERL_JSON_BACKEND} = 1;
 
-  is(Parse::CPAN::Meta->json_backend(), 'JSON', 'json_backend()');
+  is(Parse::CPAN::Meta->json_backend(), 'JSON', 'json_backend(): JSON');
   my $json   = load_ok( 'META-VR.json', $meta_json, 100);
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load_json_string with PERL_JSON_BACKEND = 1");
diff --git a/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm 
b/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
index 46024db..b6bb4f7 100644
--- a/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
+++ b/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
@@ -16,7 +16,7 @@ BEGIN {
 }
 
 sub test_data_directory {
-       return( File::Spec->catdir(qw(t data)) );
+       return( "corpus" );
 }
 
 # 22 tests per call to yaml_ok

--
Perl5 Master Repository

Reply via email to