This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Updated Parse::CPAN::Meta to CPAN version 1.4401
authorDavid Golden <dagolden@cpan.org>
Tue, 8 Feb 2011 01:30:35 +0000 (20:30 -0500)
committerDavid Golden <dagolden@cpan.org>
Tue, 8 Feb 2011 01:30:35 +0000 (20:30 -0500)
[DELTA]

1.4401 Fri Feb 04 2011
      - Removed Module::Load::Conditional dependency

1.4400 Fri Feb 04 2011
      - Added 'json_backend' and 'yaml_backend' methods to provide
        the names of modules used for deserialization

1.4200 Mon Jan 24 2011
      - No changes from 1.41_04

1.41_04 Mon Jan 3 2011
      - Support PERL_JSON_BACKEND environment (defaulting to JSON::PP)
      - Support PERL_YAML_BACKEND environment (defaulting to CPAN::Meta:YAML)
      - Update Makefile.PL to install to sitelib on Perl 5.12+

1.41_03 Fri Dec 17 2010
- Throw exception when CPAN::Meta::YAML has a parse error
  (RT#47608)

1.41_02 Fri Dec 17 2010
- Convert to using CPAN::Meta::YAML instead of YAML::Tiny

1.41_01 Fri Dec 10 2010
- add support for JSON metafiles and load_* methods (RJBS)
- Move binary file unpacking to test file from Makefile.PL so tests
  will pass in the Perl core using a generated Makefile.PL
- Move bundled uupacktool.pl to t/bin/

35 files changed:
MANIFEST
Porting/Maintainers.pl
cpan/Parse-CPAN-Meta/Changes
cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
cpan/Parse-CPAN-Meta/t/01_compile.t
cpan/Parse-CPAN-Meta/t/02_api.t [new file with mode: 0644]
cpan/Parse-CPAN-Meta/t/02_basic.t [deleted file]
cpan/Parse-CPAN-Meta/t/03_functions.t [moved from cpan/Parse-CPAN-Meta/t/04_scalar.t with 100% similarity]
cpan/Parse-CPAN-Meta/t/03_regression.t [deleted file]
cpan/Parse-CPAN-Meta/t/04_export.t [moved from cpan/Parse-CPAN-Meta/t/05_export.t with 100% similarity]
cpan/Parse-CPAN-Meta/t/05_errors.t [new file with mode: 0644]
cpan/Parse-CPAN-Meta/t/11_meta_yml.t [deleted file]
cpan/Parse-CPAN-Meta/t/12_plagger.t [deleted file]
cpan/Parse-CPAN-Meta/t/13_perl_smith.t [deleted file]
cpan/Parse-CPAN-Meta/t/14_yaml_org.t [deleted file]
cpan/Parse-CPAN-Meta/t/15_multibyte.t [deleted file]
cpan/Parse-CPAN-Meta/t/16_nullrefs.t [deleted file]
cpan/Parse-CPAN-Meta/t/17_toolbar.t [deleted file]
cpan/Parse-CPAN-Meta/t/18_tap.t [deleted file]
cpan/Parse-CPAN-Meta/t/19_errors.t [deleted file]
cpan/Parse-CPAN-Meta/t/21_bom.t [deleted file]
cpan/Parse-CPAN-Meta/t/data/HTML-WebDAO.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/Spreadsheet-Read.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/Template-Provider-Unicode-Japanese.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/VR-META.json [new file with mode: 0644]
cpan/Parse-CPAN-Meta/t/data/VR-META.yml [new file with mode: 0644]
cpan/Parse-CPAN-Meta/t/data/multibyte.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/sample.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/toolbar.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml [deleted file]
cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml.packed [deleted file]
cpan/Parse-CPAN-Meta/t/data/vanilla.yml [deleted file]
cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
cpan/Parse-CPAN-Meta/uupacktool.pl [deleted file]
pod/perldelta.pod

index b7c88f8..a3da56d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1693,34 +1693,16 @@ 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/Changes                           Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm            Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/01_compile.t                    Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/02_basic.t                      Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/03_regression.t                 Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/04_scalar.t                     Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/05_export.t                     Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/11_meta_yml.t                   Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/12_plagger.t                    Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/13_perl_smith.t                 Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/14_yaml_org.t                   Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/15_multibyte.t                  Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/16_nullrefs.t                   Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/17_toolbar.t                    Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/18_tap.t                                Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/19_errors.t                     Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/21_bom.t                                Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/HTML-WebDAO.yml            Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/multibyte.yml              Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/sample.yml                 Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/Spreadsheet-Read.yml       Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/Template-Provider-Unicode-Japanese.yml     Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/toolbar.yml                        Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml  Parse::CPAN::Meta - manually generated; see Porting/Maintainers.pl
-cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml.packed   Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/data/vanilla.yml                        Parse::CPAN::Meta
-cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm     Parse::CPAN::Meta testing library
-cpan/Parse-CPAN-Meta/uupacktool.pl                     Parse::CPAN::Meta
+cpan/Parse-CPAN-Meta/Changes
+cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
+cpan/Parse-CPAN-Meta/t/01_compile.t
+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/VR-META.json
+cpan/Parse-CPAN-Meta/t/data/VR-META.yml
+cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
 cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm      PerlIO::via::QuotedPrint
 cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t                    PerlIO::via::QuotedPrint
 cpan/Perl-OSType/lib/Perl/OSType.pm                    Perl::OSType
index ec0c275..9f03eba 100755 (executable)
@@ -1128,14 +1128,11 @@ use File::Glob qw(:case);
 
     'Parse::CPAN::Meta' =>
        {
-       'MAINTAINER'    => 'smueller',
-       'DISTRIBUTION'  => 'SMUELLER/Parse-CPAN-Meta-1.40.tar.gz',
+       'MAINTAINER'    => 'dagolden',
+       'DISTRIBUTION'  => 'DAGOLDEN/Parse-CPAN-Meta-1.4401.tar.gz',
        'FILES'         => q[cpan/Parse-CPAN-Meta],
-       'EXCLUDED'      => [ qw( t/97_meta.t t/98_pod.t t/99_pmv.t ) ],
+       'EXCLUDED'      => [ ],
        'UPSTREAM'      => 'cpan',
-       # NOTE: 'perl uupacktool.pl t/data/utf_16_le_bom.yml.packed'
-       # run by hand after import, as the core's test harness doesn't
-       # run dists' "make test" steps
        },
 
     'PathTools' =>
index 0ba34c5..68ac154 100644 (file)
@@ -1,5 +1,33 @@
 Changes for Perl programming language extension Parse-CPAN-Meta
 
+1.4401 Fri Feb 04 2011
+      - Removed Module::Load::Conditional dependency
+
+1.4400 Fri Feb 04 2011
+      - Added 'json_backend' and 'yaml_backend' methods to provide
+        the names of modules used for deserialization
+
+1.4200 Mon Jan 24 2011
+      - No changes from 1.41_04
+
+1.41_04 Mon Jan 3 2011
+      - Support PERL_JSON_BACKEND environment (defaulting to JSON::PP)
+      - Support PERL_YAML_BACKEND environment (defaulting to CPAN::Meta:YAML)
+      - Update Makefile.PL to install to sitelib on Perl 5.12+
+
+1.41_03 Fri Dec 17 2010
+       - Throw exception when CPAN::Meta::YAML has a parse error
+         (RT#47608)
+
+1.41_02 Fri Dec 17 2010
+       - Convert to using CPAN::Meta::YAML instead of YAML::Tiny
+
+1.41_01 Fri Dec 10 2010
+       - add support for JSON metafiles and load_* methods (RJBS)
+       - Move binary file unpacking to test file from Makefile.PL so tests
+         will pass in the Perl core using a generated Makefile.PL
+       - Move bundled uupacktool.pl to t/bin/
+
 1.40 Sat 25 Jul 2009
        - Add core perl 5.10.1's uupacktool.pl
        - Repackage t/data/utf_16_le_bom.yml as ASCII for https://rt.cpan.org/Ticket/Display.html?id=47844
index e7d5851..f7d717c 100644 (file)
@@ -5,6 +5,8 @@ use Carp 'croak';
 
 # UTF Support?
 sub HAVE_UTF8 () { $] >= 5.007003 }
+sub IO_LAYER () { $] >= 5.008001 ? ":utf8" : "" }
+
 BEGIN {
        if ( HAVE_UTF8 ) {
                # The string eval helps hide this from Test::MinimumVersion
@@ -15,400 +17,242 @@ BEGIN {
        # Class structure
        require 5.004;
        require Exporter;
-       $Parse::CPAN::Meta::VERSION   = '1.40';
+       $Parse::CPAN::Meta::VERSION   = '1.4401';
        @Parse::CPAN::Meta::ISA       = qw{ Exporter      };
        @Parse::CPAN::Meta::EXPORT_OK = qw{ Load LoadFile };
 }
 
-# Prototypes
-sub LoadFile ($);
-sub Load     ($);
-sub _scalar  ($$$);
-sub _array   ($$$);
-sub _hash    ($$$);
+sub load_file {
+  my ($class, $filename) = @_;
 
-# Printable characters for escapes
-my %UNESCAPES = (
-       z => "\x00", a => "\x07", t    => "\x09",
-       n => "\x0a", v => "\x0b", f    => "\x0c",
-       r => "\x0d", e => "\x1b", '\\' => '\\',
-);
+  if ($filename =~ /\.ya?ml$/) {
+    return $class->load_yaml_string(_slurp($filename));
+  }
 
+  if ($filename =~ /\.json$/) {
+    return $class->load_json_string(_slurp($filename));
+  }
 
+  croak("file type cannot be determined by filename");
+}
 
+sub load_yaml_string {
+  my ($class, $string) = @_;
+  my $backend = $class->yaml_backend();
+  my $data = eval { no strict 'refs'; &{"$backend\::Load"}($string) };
+  if ( $@ ) {
+    croak $backend->can('errstr') ? $backend->errstr : $@
+  }
+  return $data || {}; # in case document was valid but empty
+}
+
+sub load_json_string {
+  my ($class, $string) = @_;
+  return $class->json_backend()->new->decode($string);
+}
+
+sub yaml_backend {
+  local $Module::Load::Conditional::CHECK_INC_HASH = 1;
+  if (! defined $ENV{PERL_YAML_BACKEND} ) {
+    _can_load( 'CPAN::Meta::YAML', 0.002 )
+      or croak "CPAN::Meta::YAML 0.002 is not available\n";
+    return "CPAN::Meta::YAML";
+  }
+  else {
+    my $backend = $ENV{PERL_YAML_BACKEND};
+    _can_load( $backend )
+      or croak "Could not load PERL_YAML_BACKEND '$backend'\n";
+    $backend->can("Load")
+      or croak "PERL_YAML_BACKEND '$backend' does not implement Load()\n";
+    return $backend;
+  }
+}
+
+sub json_backend {
+  local $Module::Load::Conditional::CHECK_INC_HASH = 1;
+  if (! $ENV{PERL_JSON_BACKEND} or $ENV{PERL_JSON_BACKEND} eq 'JSON::PP') {
+    _can_load( 'JSON::PP' => 2.27103 )
+      or croak "JSON::PP 2.27103 is not available\n";
+    return 'JSON::PP';
+  }
+  else {
+    _can_load( 'JSON' => 2.5 )
+      or croak  "JSON 2.5 is required for " .
+                "\$ENV{PERL_JSON_BACKEND} = '$ENV{PERL_JSON_BACKEND}'\n";
+    return "JSON";
+  }
+}
 
+sub _slurp {
+  open my $fh, "<" . IO_LAYER, "$_[0]"
+    or die "can't open $_[0] for reading: $!";
+  return do { local $/; <$fh> };
+}
 
-#####################################################################
-# Implementation
+sub _can_load {
+  my ($module, $version) = @_;
+  (my $file = $module) =~ s{::}{/}g;
+  $file .= ".pm";
+  return 1 if $INC{$file};
+  return 0 if exists $INC{$file}; # prior load failed
+  eval { require $file; 1 }
+    or return 0;
+  if ( defined $version ) {
+    eval { $module->VERSION($version); 1 }
+      or return 0;
+  }
+  return 1;
+}
 
+# Kept for backwards compatibility only
 # Create an object from a file
 sub LoadFile ($) {
-       # Check the file
-       my $file = shift;
-       croak('You did not specify a file name')            unless $file;
-       croak( "File '$file' does not exist" )              unless -e $file;
-       croak( "'$file' is a directory, not a file" )       unless -f _;
-       croak( "Insufficient permissions to read '$file'" ) unless -r _;
-
-       # Slurp in the file
-       local $/ = undef;
-       local *CFG;
-       unless ( open( CFG, $file ) ) {
-               croak("Failed to open file '$file': $!");
-       }
-       my $yaml = <CFG>;
-       unless ( close(CFG) ) {
-               croak("Failed to close file '$file': $!");
-       }
-
-       # Hand off to the actual parser
-       Load( $yaml );
+  require CPAN::Meta::YAML;
+  return CPAN::Meta::YAML::LoadFile(shift)
+    or die CPAN::Meta::YAML->errstr;
 }
 
 # Parse a document from a string.
-# Doing checks on $_[0] prevents us having to do a string copy.
 sub Load ($) {
-       my $string = $_[0];
-       unless ( defined $string ) {
-               croak("Did not provide a string to load");
-       }
+  require CPAN::Meta::YAML;
+  return CPAN::Meta::YAML::Load(shift)
+    or die CPAN::Meta::YAML->errstr;
+}
 
-       # Byte order marks
-       if ( $string =~ /^(?:\376\377|\377\376|\377\376\0\0|\0\0\376\377)/ ) {
-               croak("Stream has a non UTF-8 Unicode Byte Order Mark");
-       } else {
-               # Strip UTF-8 bom if found, we'll just ignore it
-               $string =~ s/^\357\273\277//;
-       }
+1;
 
-       # Try to decode as utf8
-       utf8::decode($string) if HAVE_UTF8;
+__END__
 
-       # Check for some special cases
-       return () unless length $string;
-       unless ( $string =~ /[\012\015]+\z/ ) {
-               croak("Stream does not end with newline character");
-       }
+=pod
 
-       # Split the file into lines
-       my @lines = grep { ! /^\s*(?:\#.*)?\z/ }
-                   split /(?:\015{1,2}\012|\015|\012)/, $string;
-
-       # Strip the initial YAML header
-       @lines and $lines[0] =~ /^\%YAML[: ][\d\.]+.*\z/ and shift @lines;
-
-       # A nibbling parser
-       my @documents = ();
-       while ( @lines ) {
-               # Do we have a document header?
-               if ( $lines[0] =~ /^---\s*(?:(.+)\s*)?\z/ ) {
-                       # Handle scalar documents
-                       shift @lines;
-                       if ( defined $1 and $1 !~ /^(?:\#.+|\%YAML[: ][\d\.]+)\z/ ) {
-                               push @documents, _scalar( "$1", [ undef ], \@lines );
-                               next;
-                       }
-               }
-
-               if ( ! @lines or $lines[0] =~ /^(?:---|\.\.\.)/ ) {
-                       # A naked document
-                       push @documents, undef;
-                       while ( @lines and $lines[0] !~ /^---/ ) {
-                               shift @lines;
-                       }
-
-               } elsif ( $lines[0] =~ /^\s*\-/ ) {
-                       # An array at the root
-                       my $document = [ ];
-                       push @documents, $document;
-                       _array( $document, [ 0 ], \@lines );
-
-               } elsif ( $lines[0] =~ /^(\s*)\S/ ) {
-                       # A hash at the root
-                       my $document = { };
-                       push @documents, $document;
-                       _hash( $document, [ length($1) ], \@lines );
-
-               } else {
-                       croak("Parse::CPAN::Meta failed to classify line '$lines[0]'");
-               }
-       }
+=head1 NAME
 
-       if ( wantarray ) {
-               return @documents;
-       } else {
-               return $documents[-1];
-       }
-}
+Parse::CPAN::Meta - Parse META.yml and META.json CPAN metadata files
 
-# Deparse a scalar string to the actual scalar
-sub _scalar ($$$) {
-       my ($string, $indent, $lines) = @_;
+=head1 SYNOPSIS
 
-       # Trim trailing whitespace
-       $string =~ s/\s*\z//;
+    #############################################
+    # In your file
 
-       # Explitic null/undef
-       return undef if $string eq '~';
+    ---
+    name: My-Distribution
+    version: 1.23
+    resources:
+      homepage: "http://example.com/dist/My-Distribution"
 
-       # Quotes
-       if ( $string =~ /^\'(.*?)\'\z/ ) {
-               return '' unless defined $1;
-               $string = $1;
-               $string =~ s/\'\'/\'/g;
-               return $string;
-       }
-       if ( $string =~ /^\"((?:\\.|[^\"])*)\"\z/ ) {
-               # Reusing the variable is a little ugly,
-               # but avoids a new variable and a string copy.
-               $string = $1;
-               $string =~ s/\\"/"/g;
-               $string =~ s/\\([never\\fartz]|x([0-9a-fA-F]{2}))/(length($1)>1)?pack("H2",$2):$UNESCAPES{$1}/gex;
-               return $string;
-       }
 
-       # Special cases
-       if ( $string =~ /^[\'\"!&]/ ) {
-               croak("Parse::CPAN::Meta does not support a feature in line '$lines->[0]'");
-       }
-       return {} if $string eq '{}';
-       return [] if $string eq '[]';
+    #############################################
+    # In your program
 
-       # Regular unquoted string
-       return $string unless $string =~ /^[>|]/;
+    use Parse::CPAN::Meta;
 
-       # Error
-       croak("Parse::CPAN::Meta failed to find multi-line scalar content") unless @$lines;
+    my $distmeta = Parse::CPAN::Meta->load_file('META.yml');
 
-       # Check the indent depth
-       $lines->[0]   =~ /^(\s*)/;
-       $indent->[-1] = length("$1");
-       if ( defined $indent->[-2] and $indent->[-1] <= $indent->[-2] ) {
-               croak("Parse::CPAN::Meta found bad indenting in line '$lines->[0]'");
-       }
+    # Reading properties
+    my $name     = $distmeta->{name};
+    my $version  = $distmeta->{version};
+    my $homepage = $distmeta->{resources}{homepage};
 
-       # Pull the lines
-       my @multiline = ();
-       while ( @$lines ) {
-               $lines->[0] =~ /^(\s*)/;
-               last unless length($1) >= $indent->[-1];
-               push @multiline, substr(shift(@$lines), length($1));
-       }
+=head1 DESCRIPTION
 
-       my $j = (substr($string, 0, 1) eq '>') ? ' ' : "\n";
-       my $t = (substr($string, 1, 1) eq '-') ? ''  : "\n";
-       return join( $j, @multiline ) . $t;
-}
+B<Parse::CPAN::Meta> is a parser for F<META.json> and F<META.yml> files, using
+L<JSON::PP> and/or L<CPAN::Meta::YAML>.
 
-# Parse an array
-sub _array ($$$) {
-       my ($array, $indent, $lines) = @_;
-
-       while ( @$lines ) {
-               # Check for a new document
-               if ( $lines->[0] =~ /^(?:---|\.\.\.)/ ) {
-                       while ( @$lines and $lines->[0] !~ /^---/ ) {
-                               shift @$lines;
-                       }
-                       return 1;
-               }
-
-               # Check the indent level
-               $lines->[0] =~ /^(\s*)/;
-               if ( length($1) < $indent->[-1] ) {
-                       return 1;
-               } elsif ( length($1) > $indent->[-1] ) {
-                       croak("Parse::CPAN::Meta found bad indenting in line '$lines->[0]'");
-               }
-
-               if ( $lines->[0] =~ /^(\s*\-\s+)[^\'\"]\S*\s*:(?:\s+|$)/ ) {
-                       # Inline nested hash
-                       my $indent2 = length("$1");
-                       $lines->[0] =~ s/-/ /;
-                       push @$array, { };
-                       _hash( $array->[-1], [ @$indent, $indent2 ], $lines );
-
-               } elsif ( $lines->[0] =~ /^\s*\-(\s*)(.+?)\s*\z/ ) {
-                       # Array entry with a value
-                       shift @$lines;
-                       push @$array, _scalar( "$2", [ @$indent, undef ], $lines );
-
-               } elsif ( $lines->[0] =~ /^\s*\-\s*\z/ ) {
-                       shift @$lines;
-                       unless ( @$lines ) {
-                               push @$array, undef;
-                               return 1;
-                       }
-                       if ( $lines->[0] =~ /^(\s*)\-/ ) {
-                               my $indent2 = length("$1");
-                               if ( $indent->[-1] == $indent2 ) {
-                                       # Null array entry
-                                       push @$array, undef;
-                               } else {
-                                       # Naked indenter
-                                       push @$array, [ ];
-                                       _array( $array->[-1], [ @$indent, $indent2 ], $lines );
-                               }
-
-                       } elsif ( $lines->[0] =~ /^(\s*)\S/ ) {
-                               push @$array, { };
-                               _hash( $array->[-1], [ @$indent, length("$1") ], $lines );
-
-                       } else {
-                               croak("Parse::CPAN::Meta failed to classify line '$lines->[0]'");
-                       }
-
-               } elsif ( defined $indent->[-2] and $indent->[-1] == $indent->[-2] ) {
-                       # This is probably a structure like the following...
-                       # ---
-                       # foo:
-                       # - list
-                       # bar: value
-                       #
-                       # ... so lets return and let the hash parser handle it
-                       return 1;
-
-               } else {
-                       croak("Parse::CPAN::Meta failed to classify line '$lines->[0]'");
-               }
-       }
+B<Parse::CPAN::Meta> provides three methods: C<load_file>, C<load_json_string>,
+and C<load_yaml_string>.  These will read and deserialize CPAN metafiles, and
+are described below in detail.
 
-       return 1;
-}
+B<Parse::CPAN::Meta> provides a legacy API of only two functions,
+based on the YAML functions of the same name. Wherever possible,
+identical calling semantics are used.  These may only be used with YAML sources.
 
-# Parse an array
-sub _hash ($$$) {
-       my ($hash, $indent, $lines) = @_;
-
-       while ( @$lines ) {
-               # Check for a new document
-               if ( $lines->[0] =~ /^(?:---|\.\.\.)/ ) {
-                       while ( @$lines and $lines->[0] !~ /^---/ ) {
-                               shift @$lines;
-                       }
-                       return 1;
-               }
-
-               # Check the indent level
-               $lines->[0] =~ /^(\s*)/;
-               if ( length($1) < $indent->[-1] ) {
-                       return 1;
-               } elsif ( length($1) > $indent->[-1] ) {
-                       croak("Parse::CPAN::Meta found bad indenting in line '$lines->[0]'");
-               }
-
-               # Get the key
-               unless ( $lines->[0] =~ s/^\s*([^\'\" ][^\n]*?)\s*:(\s+|$)// ) {
-                       if ( $lines->[0] =~ /^\s*[?\'\"]/ ) {
-                               croak("Parse::CPAN::Meta does not support a feature in line '$lines->[0]'");
-                       }
-                       croak("Parse::CPAN::Meta failed to classify line '$lines->[0]'");
-               }
-               my $key = $1;
-
-               # Do we have a value?
-               if ( length $lines->[0] ) {
-                       # Yes
-                       $hash->{$key} = _scalar( shift(@$lines), [ @$indent, undef ], $lines );
-               } else {
-                       # An indent
-                       shift @$lines;
-                       unless ( @$lines ) {
-                               $hash->{$key} = undef;
-                               return 1;
-                       }
-                       if ( $lines->[0] =~ /^(\s*)-/ ) {
-                               $hash->{$key} = [];
-                               _array( $hash->{$key}, [ @$indent, length($1) ], $lines );
-                       } elsif ( $lines->[0] =~ /^(\s*)./ ) {
-                               my $indent2 = length("$1");
-                               if ( $indent->[-1] >= $indent2 ) {
-                                       # Null hash entry
-                                       $hash->{$key} = undef;
-                               } else {
-                                       $hash->{$key} = {};
-                                       _hash( $hash->{$key}, [ @$indent, length($1) ], $lines );
-                               }
-                       }
-               }
-       }
+All error reporting is done with exceptions (die'ing).
 
-       return 1;
-}
+Note that META files are expected to be in UTF-8 encoding, only.  When
+converted string data, it must first be decoded from UTF-8.
 
-1;
+=head1 METHODS
 
-__END__
+=head2 load_file
 
-=pod
+  my $metadata_structure = Parse::CPAN::Meta->load_file('META.json');
 
-=head1 NAME
+  my $metadata_structure = Parse::CPAN::Meta->load_file('META.yml');
 
-Parse::CPAN::Meta - Parse META.yml and other similar CPAN metadata files
+This method will read the named file and deserialize it to a data structure,
+determining whether it should be JSON or YAML based on the filename.  On
+Perl 5.8.1 or later, the file will be read using the ":utf8" IO layer.
 
-=head1 SYNOPSIS
+=head2 load_yaml_string
 
-    #############################################
-    # In your file
-    
-    ---
-    rootproperty: blah
-    section:
-      one: two
-      three: four
-      Foo: Bar
-      empty: ~
-    
-    
-    
-    #############################################
-    # In your program
-    
-    use Parse::CPAN::Meta;
-    
-    # Create a YAML file
-    my @yaml = Parse::CPAN::Meta::LoadFile( 'Meta.yml' );
-    
-    # Reading properties
-    my $root = $yaml[0]->{rootproperty};
-    my $one  = $yaml[0]->{section}->{one};
-    my $Foo  = $yaml[0]->{section}->{Foo};
+  my $metadata_structure = Parse::CPAN::Meta->load_yaml_string($yaml_string);
 
-=head1 DESCRIPTION
+This method deserializes the given string of YAML and returns the first
+document in it.  (CPAN metadata files should always have only one document.)
+If the source was UTF-8 encoded, the string must be decoded before calling
+C<load_yaml_string>.
 
-B<Parse::CPAN::Meta> is a parser for F<META.yml> files, based on the
-parser half of L<YAML::Tiny>.
+=head2 load_json_string
 
-It supports a basic subset of the full YAML specification, enough to
-implement parsing of typical F<META.yml> files, and other similarly simple
-YAML files.
+  my $metadata_structure = Parse::CPAN::Meta->load_json_string($json_string);
 
-If you need something with more power, move up to a full YAML parser such
-as L<YAML>, L<YAML::Syck> or L<YAML::LibYAML>.
+This method deserializes the given string of JSON and the result.
+If the source was UTF-8 encoded, the string must be decoded before calling
+C<load_json_string>.
 
-B<Parse::CPAN::Meta> provides a very simply API of only two functions,
-based on the YAML functions of the same name. Wherever possible,
-identical calling semantics are used.
+=head2 yaml_backend
 
-All error reporting is done with exceptions (die'ing).
+  my $backend = Parse::CPAN::Meta->yaml_backend;
+
+Returns the module name of the YAML serializer. See L</ENVIRONMENT>
+for details.
+
+=head2 json_backend
+
+  my $backend = Parse::CPAN::Meta->json_backend;
+
+Returns the module name of the JSON serializer.  This will either
+be L<JSON::PP> or L<JSON>.  Even if C<PERL_JSON_BACKEND> is set,
+this will return L<JSON> as further delegation is handled by
+the L<JSON> module.  See L</ENVIRONMENT> for details.
 
 =head1 FUNCTIONS
 
-For maintenance clarity, no functions are exported.
+For maintenance clarity, no functions are exported.  These functions are
+available for backwards compatibility only and are best avoided in favor of
+C<load_file>.
 
 =head2 Load
 
-  my @yaml = Load( $string );
+  my @yaml = Parse::CPAN::Meta::Load( $string );
 
 Parses a string containing a valid YAML stream into a list of Perl data
 structures.
 
 =head2 LoadFile
 
-  my @yaml = LoadFile( 'META.yml' );
+  my @yaml = Parse::CPAN::Meta::LoadFile( 'META.yml' );
 
 Reads the YAML stream from a file instead of a string.
 
+=head1 ENVIRONMENT
+
+=head2 PERL_JSON_BACKEND
+
+By default, L<JSON::PP> will be used for deserializing JSON data. If the
+C<PERL_JSON_BACKEND> environment variable exists, is true and is not
+"JSON::PP", then the L<JSON> module (version 2.5 or greater) will be loaded and
+used to interpret C<PERL_JSON_BACKEND>.  If L<JSON> is not installed or is too
+old, an exception will be thrown.
+
+=head2 PERL_YAML_BACKEND
+
+By default, L<CPAN::Meta::YAML> will be used for deserializing YAML data. If
+the C<PERL_YAML_BACKEND> environment variable is defined, then it is intepreted
+as a module to use for deserialization.  The given module must be installed,
+must load correctly and must implement the C<Load()> function or an exception
+will be thrown.
+
 =head1 SUPPORT
 
 Bugs should be reported via the CPAN bug tracker at
@@ -419,14 +263,9 @@ L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Parse-CPAN-Meta>
 
 Adam Kennedy E<lt>adamk@cpan.orgE<gt>
 
-=head1 SEE ALSO
-
-L<YAML>, L<YAML::Syck>, L<Config::Tiny>, L<CSS::Tiny>,
-L<http://use.perl.org/~Alias/journal/29427>, L<http://ali.as/>
-
 =head1 COPYRIGHT
 
-Copyright 2006 - 2009 Adam Kennedy.
+Copyright 2006 - 2010 Adam Kennedy.
 
 This program is free software; you can redistribute
 it and/or modify it under the same terms as Perl itself.
index 7e64db7..6bfc2c9 100644 (file)
@@ -1,7 +1,5 @@
 #!/usr/bin/perl
 
-# Load testing for YAML::Tiny
-
 BEGIN {
        if( $ENV{PERL_CORE} ) {
                chdir 't';
diff --git a/cpan/Parse-CPAN-Meta/t/02_api.t b/cpan/Parse-CPAN-Meta/t/02_api.t
new file mode 100644 (file)
index 0000000..f812394
--- /dev/null
@@ -0,0 +1,136 @@
+#!/usr/bin/perl
+
+# Testing of a known-bad file from an editor
+
+BEGIN {
+       if( $ENV{PERL_CORE} ) {
+               chdir 't';
+               @INC = ('../lib', 'lib');
+       }
+       else {
+               unshift @INC, 't/lib/';
+       }
+}
+
+use strict;
+BEGIN {
+       $|  = 1;
+       $^W = 1;
+}
+
+use File::Spec::Functions ':ALL';
+use Parse::CPAN::Meta;
+use Parse::CPAN::Meta::Test;
+# use Test::More skip_all => 'Temporarily ignoring failing test';
+use Test::More 'no_plan';
+
+#####################################################################
+# Testing that Perl::Smith config files work
+
+my $want = {
+  "abstract" => "a set of version requirements for a CPAN dist",
+  "author"   => [ 'Ricardo Signes <rjbs@cpan.org>' ],
+  "build_requires" => {
+     "Test::More" => "0.88"
+  },
+  "configure_requires" => {
+     "ExtUtils::MakeMaker" => "6.31"
+  },
+  "generated_by" => "Dist::Zilla version 2.100991",
+  "license" => "perl",
+  "meta-spec" => {
+     "url" => "http://module-build.sourceforge.net/META-spec-v1.4.html",
+     "version" => 1.4
+  },
+  "name" => "Version-Requirements",
+  "recommends" => {},
+  "requires" => {
+     "Carp" => "0",
+     "Scalar::Util" => "0",
+     "version" => "0.77"
+  },
+  "resources" => {
+     "repository" => "git://git.codesimply.com/Version-Requirements.git"
+  },
+  "version" => "0.101010",
+};
+
+my $meta_json = catfile( test_data_directory(), 'VR-META.json' );
+my $meta_yaml = catfile( test_data_directory(), 'VR-META.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()');
+  my $from_yaml = Parse::CPAN::Meta->load_file( $meta_yaml );
+  is_deeply($from_yaml, $want, "load from YAML file results in expected data");
+}
+
+{
+  local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
+
+  my $yaml   = load_ok( 'VR-META.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");
+}
+
+SKIP: {
+  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()');
+  my $yaml   = load_ok( 'VR-META.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");
+}
+
+### JSON tests
+{
+  # 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()');
+  my $from_json = Parse::CPAN::Meta->load_file( $meta_json );
+  is_deeply($from_json, $want, "load from JSON file results in expected data");
+}
+
+{
+  # JSON tests with JSON::PP
+  local $ENV{PERL_JSON_BACKEND}; # ensure we get JSON::PP
+
+  my $json   = load_ok( 'VR-META.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");
+}
+
+{
+  # JSON tests with JSON::PP, take 2
+  local $ENV{PERL_JSON_BACKEND} = 0; # request JSON::PP
+
+  my $json   = load_ok( 'VR-META.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");
+}
+
+{
+  # JSON tests with JSON::PP, take 3
+  local $ENV{PERL_JSON_BACKEND} = 'JSON::PP'; # request JSON::PP
+
+  my $json   = load_ok( 'VR-META.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: {
+  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()');
+  my $json   = load_ok( 'VR-META.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/02_basic.t b/cpan/Parse-CPAN-Meta/t/02_basic.t
deleted file mode 100644 (file)
index f6a91c1..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of basic document structures
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(30);
-
-
-
-
-
-#####################################################################
-# Sample Testing
-
-# Test a completely empty document
-yaml_ok(
-       '',
-       [  ],
-       'empty',
-);
-
-# Just a newline
-### YAML.pm has a bug where it dies on a single newline
-yaml_ok(
-       "\n\n",
-       [ ],
-       'only_newlines',
-);
-
-# Just a comment
-yaml_ok(
-       "# comment\n",
-       [ ],
-       'only_comment',
-);
-
-# Empty documents
-yaml_ok(
-       "---\n",
-       [ undef ],
-       'only_header',
-       noyamlperl => 1,
-);
-yaml_ok(
-       "---\n---\n",
-       [ undef, undef ],
-       'two_header',
-       noyamlperl => 1,
-);
-yaml_ok(
-       "--- ~\n",
-       [ undef ],
-       'one_undef',
-       noyamlperl => 1,
-);
-yaml_ok(
-       "---  ~\n",
-       [ undef ],
-       'one_undef2',
-       noyamlperl => 1,
-);
-yaml_ok(
-       "--- ~\n---\n",
-       [ undef, undef ],
-       'two_undef',
-       noyamlperl => 1,
-);
-
-# Just a scalar
-yaml_ok(
-       "--- foo\n",
-       [ 'foo' ],
-       'one_scalar',
-);
-yaml_ok(
-       "---  foo\n",
-       [ 'foo' ],
-       'one_scalar2',
-);
-yaml_ok(
-       "--- foo\n--- bar\n",
-       [ 'foo', 'bar' ],
-       'two_scalar',
-);
-
-# Simple lists
-yaml_ok(
-       "---\n- foo\n",
-       [ [ 'foo' ] ],
-       'one_list1',
-);
-yaml_ok(
-       "---\n- foo\n- bar\n",
-       [ [ 'foo', 'bar' ] ],
-       'one_list2',
-);
-yaml_ok(
-       "---\n- ~\n- bar\n",
-       [ [ undef, 'bar' ] ],
-       'one_listundef',
-       noyamlperl => 1,
-);
-
-# Simple hashs
-yaml_ok(
-       "---\nfoo: bar\n",
-       [ { foo => 'bar' } ],
-       'one_hash1',
-);
-
-yaml_ok(
-       "---\nfoo: bar\nthis: ~\n",
-       [ { this => undef, foo => 'bar' } ],
-       'one_hash2',
-       noyamlperl => 1,
-);
-
-# Simple array inside a hash with an undef
-yaml_ok(
-       <<'END_YAML',
----
-foo:
-  - bar
-  - ~
-  - baz
-END_YAML
-       [ { foo => [ 'bar', undef, 'baz' ] } ],
-       'array_in_hash',
-       noyamlperl => 1,
-);
-
-# Simple hash inside a hash with an undef
-yaml_ok(
-       <<'END_YAML',
----
-foo: ~
-bar:
-  foo: bar
-END_YAML
-       [ { foo => undef, bar => { foo => 'bar' } } ],
-       'hash_in_hash',
-       noyamlperl => 1,
-);
-
-# Mixed hash and scalars inside an array
-yaml_ok(
-       <<'END_YAML',
----
--
-  foo: ~
-  this: that
-- foo
-- ~
--
-  foo: bar
-  this: that
-END_YAML
-       [ [
-               { foo => undef, this => 'that' },
-               'foo',
-               undef,
-               { foo => 'bar', this => 'that' },
-       ] ],
-       'hash_in_array',
-       noyamlperl => 1,
-);
-
-# Simple single quote
-yaml_ok(
-       "---\n- 'foo'\n",
-       [ [ 'foo' ] ],
-       'single_quote1',
-);
-yaml_ok(
-       "---\n- '  '\n",
-       [ [ '  ' ] ],
-       'single_spaces',
-);
-yaml_ok(
-       "---\n- ''\n",
-       [ [ '' ] ],
-       'single_null',
-);
-
-# Double quotes
-yaml_ok(
-       "--- \"  \"\n",
-       [ '  ' ],
-       "only_spaces",
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-yaml_ok(
-       "--- \"  foo\"\n--- \"bar  \"\n",
-       [ "  foo", "bar  " ],
-       "leading_trailing_spaces",
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-# Implicit document start
-yaml_ok(
-       "foo: bar\n",
-       [ { foo => 'bar' } ],
-       'implicit_hash',
-);
-yaml_ok(
-       "- foo\n",
-       [ [ 'foo' ] ],
-       'implicit_array',
-);
-
-# Inline nested hash
-yaml_ok(
-       <<'END_YAML',
----
-- ~
-- foo: bar
-  this: that
-- baz
-END_YAML
-       [ [ undef, { foo => 'bar', this => 'that' }, 'baz' ] ],
-       'inline_nested_hash',
-       noyamlperl => 1,
-);
-
-# Empty comments
-yaml_ok(
-       "---\n- foo\n#\n- bar\n",
-       [ [ 'foo', 'bar' ] ],
-       'empty_comment_in_list',
-);
-
-yaml_ok(
-       "---\nfoo: bar\n# foo\none: two\n",
-       [ { foo => 'bar', one => 'two' } ],
-       'empty_comment_in_hash',
-);
-
-# Complex keys
-yaml_ok(
-       "---\na b: c d\n",
-       [ { 'a b' => 'c d' } ],
-       'key_with_whitespace',
-);
diff --git a/cpan/Parse-CPAN-Meta/t/03_regression.t b/cpan/Parse-CPAN-Meta/t/03_regression.t
deleted file mode 100644 (file)
index e9fb70a..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of common META.yml examples
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(37);
-
-
-
-
-
-#####################################################################
-# In META.yml files, some hash keys contain module names
-
-# Hash key legally containing a colon
-yaml_ok(
-       "---\nFoo::Bar: 1\n",
-       [ { 'Foo::Bar' => 1 } ],
-       'module_hash_key',
-);
-
-# Hash indented
-yaml_ok(
-         "---\n"
-       . "  foo: bar\n",
-       [ { foo => "bar" } ],
-       'hash_indented',
-);
-
-
-
-
-
-#####################################################################
-# Support for literal multi-line scalars
-
-# Declarative multi-line scalar
-yaml_ok(
-         "---\n"
-       . "  foo: >\n"
-       . "     bar\n"
-       . "     baz\n",
-       [ { foo => "bar baz\n" } ],
-       'simple_multiline',
-);
-
-# Piped multi-line scalar
-yaml_ok(
-       <<'END_YAML',
----
-- |
-  foo
-  bar
-- 1
-END_YAML
-       [ [ "foo\nbar\n", 1 ] ],
-       'indented',
-);
-
-# ... with a pointless hyphen
-yaml_ok( <<'END_YAML',
----
-- |-
-  foo
-  bar
-- 1
-END_YAML
-       [ [ "foo\nbar", 1 ] ],
-       'indented',
-);
-
-
-
-
-
-#####################################################################
-# Support for YAML version directives
-
-# Simple inline case (comment variant)
-yaml_ok(
-       <<'END_YAML',
---- #YAML:1.0
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'simple_doctype_comment',
-       nosyck   => 1,
-);
-
-# Simple inline case (percent variant)
-yaml_ok(
-       <<'END_YAML',
---- %YAML:1.0
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'simple_doctype_percent',
-       noyamlpm   => 1,
-       noxs       => 1,
-       noyamlperl => 1,
-);
-
-# Simple header (comment variant)
-yaml_ok(
-       <<'END_YAML',
-%YAML:1.0
----
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'predocument_1_0',
-       noyamlpm   => 1,
-       nosyck     => 1,
-       noxs       => 1,
-       noyamlperl => 1,
-);
-
-# Simple inline case (comment variant)
-yaml_ok(
-       <<'END_YAML',
-%YAML 1.1
----
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'predocument_1_1',
-       noyamlpm   => 1,
-       nosyck     => 1,
-       noyamlperl => 1,
-);
-
-# Multiple inline documents (comment variant)
-yaml_ok(
-       <<'END_YAML',
---- #YAML:1.0
-foo: bar
---- #YAML:1.0
-- 1
---- #YAML:1.0
-foo: bar
-END_YAML
-       [ { foo => 'bar' }, [ 1 ], { foo => 'bar' } ],
-       'multi_doctype_comment',
-);
-
-# Simple pre-document case (comment variant)
-yaml_ok(
-       <<'END_YAML',
-%YAML 1.1
----
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'predocument_percent',
-       noyamlpm   => 1,
-       nosyck     => 1,
-       noyamlperl => 1,
-);
-
-# Simple pre-document case (comment variant)
-yaml_ok(
-       <<'END_YAML',
-#YAML 1.1
----
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'predocument_comment',
-);
-
-
-
-
-
-#####################################################################
-# Hitchhiker Scalar
-
-yaml_ok(
-       <<'END_YAML',
---- 42
-END_YAML
-       [ 42 ],
-       'hitchhiker scalar',
-       serializes => 1,
-);
-
-
-
-
-
-#####################################################################
-# Null HASH/ARRAY
-
-yaml_ok(
-       <<'END_YAML',
----
-- foo
-- {}
-- bar
-END_YAML
-       [ [ 'foo', {}, 'bar' ] ],
-       'null hash in array',
-);
-
-yaml_ok(
-       <<'END_YAML',
----
-- foo
-- []
-- bar
-END_YAML
-       [ [ 'foo', [], 'bar' ] ],
-       'null array in array',
-);
-
-yaml_ok(
-       <<'END_YAML',
----
-foo: {}
-bar: 1
-END_YAML
-       [  { foo => {}, bar => 1 } ],
-       'null hash in hash',
-);
-
-yaml_ok(
-       <<'END_YAML',
----
-foo: []
-bar: 1
-END_YAML
-       [  { foo => [], bar => 1 } ],
-       'null array in hash',
-);
-
-
-
-
-#####################################################################
-# Trailing Whitespace
-
-yaml_ok(
-       <<'END_YAML',
----
-abstract: Generate fractal curves 
-foo: ~ 
-arr:
-  - foo 
-  - ~
-  - 'bar'  
-END_YAML
-       [ {
-               abstract => 'Generate fractal curves',
-               foo      => undef,
-               arr      => [ 'foo', undef, 'bar' ],
-       } ],
-       'trailing whitespace',
-       noyamlperl => 1,
-);
-
-
-
-
-
-#####################################################################
-# Quote vs Hash
-
-yaml_ok(
-       <<'END_YAML',
----
-author:
-  - 'mst: Matt S. Trout <mst@shadowcatsystems.co.uk>'
-END_YAML
-       [ { author => [ 'mst: Matt S. Trout <mst@shadowcatsystems.co.uk>' ] } ],
-       'hash-like quote',
-);
-
-
-
-
-
-#####################################################################
-# Quote and Escaping Idiosyncracies
-
-yaml_ok(
-       <<'END_YAML',
----
-name1: 'O''Reilly'
-name2: 'O''Reilly O''Tool'
-name3: 'Double '''' Quote'
-END_YAML
-       [ {
-               name1 => "O'Reilly",
-               name2 => "O'Reilly O'Tool",
-               name3 => "Double '' Quote",
-       } ],
-       'single quote subtleties',
-);
-
-yaml_ok(
-       <<'END_YAML',
----
-slash1: '\\'
-slash2: '\\foo'
-slash3: '\\foo\\\\'
-END_YAML
-       [ {
-               slash1 => "\\\\",
-               slash2 => "\\\\foo",
-               slash3 => "\\\\foo\\\\\\\\",
-       } ],
-       'single quote subtleties',
-);
-
-
-
-
-
-#####################################################################
-# Empty Values and Premature EOF
-
-yaml_ok(
-       <<'END_YAML',
----
-foo:    0
-requires:
-build_requires:
-END_YAML
-       [ { foo => 0, requires => undef, build_requires => undef } ],
-       'empty hash keys',
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-yaml_ok(
-       <<'END_YAML',
----
-- foo
--
--
-END_YAML
-       [ [ 'foo', undef, undef ] ],
-       'empty array keys',
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-
-
-
-
-#####################################################################
-# Comment on the Document Line
-
-yaml_ok(
-       <<'END_YAML',
---- # Comment
-foo: bar
-END_YAML
-       [ { foo => 'bar' } ],
-       'comment header',
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-
-
-
-
-
-#####################################################################
-# Newlines and tabs
-
-yaml_ok(
-       <<'END_YAML',
-foo: "foo\\\n\tbar"
-END_YAML
-       [ { foo => "foo\\\n\tbar" } ],
-       'special characters',
-);
-
-
-
-
-
-#####################################################################
-# Confirm we can read the synopsis
-
-yaml_ok(
-       <<'END_YAML',
----
-rootproperty: blah
-section:
-  one: two
-  three: four
-  Foo: Bar
-  empty: ~
-END_YAML
-       [ {
-               rootproperty => 'blah',
-               section      => {
-                       one   => 'two',
-                       three => 'four',
-                       Foo   => 'Bar',
-                       empty => undef,
-               },
-       } ],
-       'synopsis',
-       noyamlperl => 1,
-);
-
-
-
-
-
-#####################################################################
-# Unprintable Characters
-
-yaml_ok(
-       "--- \"foo\\n\\x00\"\n",
-       [ "foo\n\0" ],
-       'unprintable',
-);
-
-
-
-
-
-#####################################################################
-# Empty Quote Line
-
-yaml_ok(
-       <<'END_YAML',
----
-- foo
-#
-- bar
-END_YAML
-       [ [ "foo", "bar" ] ],
-);
-
-
-
-
-
-#####################################################################
-# Indentation after empty hash value
-
-yaml_ok(
-       <<'END_YAML',
----
-Test:
-  optmods:
-    Bad: 0
-    Foo: 1
-    Long: 0
-  version: 5
-Test_IncludeA:
-  optmods:
-Test_IncludeB:
-  optmods:
-_meta:
-  name: 'test profile'
-  note: 'note this test profile'
-END_YAML
-       [ {
-               Test => {
-                       optmods => {
-                               Bad => 0,
-                               Foo => 1,
-                               Long => 0,
-                       },
-                       version => 5,
-               },
-               Test_IncludeA => {
-                       optmods => undef,
-               },
-               Test_IncludeB => {
-                       optmods => undef,
-               },
-               _meta => {
-                       name => 'test profile',
-                       note => 'note this test profile',
-               },
-       } ],
-       'Indentation after empty hash value',
-       noyamlperl => 1,
-);
-
-
-
-
-
-#####################################################################
-# Spaces in the Key
-
-yaml_ok(
-       <<'END_YAML',
----
-the key: the value
-END_YAML
-       [ { 'the key' => 'the value' } ],
-);
-
-
-
-
-
-#####################################################################
-# Ticker #32402
-
-# Tests a particular pathological case
-
-yaml_ok(
-       <<'END_YAML',
----
-- value
-- '><'
-END_YAML
-       [ [ 'value', '><' ] ],
-       'Pathological >< case',
-);
-
-
-
-
-
-#####################################################################
-# Special Characters
-
-#yaml_ok(
-#      <<'END_YAML',
-#---
-#- "Ingy d\xC3\xB6t Net"
-#END_YAML
-#      [ [ "Ingy d\xC3\xB6t Net" ] ],
-#);
-
-
-
-
-
-
-######################################################################
-# Non-Indenting Sub-List
-
-yaml_ok(
-       <<'END_YAML',
----
-foo:
-- list
-bar: value
-END_YAML
-       [ { foo => [ 'list' ], bar => 'value' } ],
-       'Non-indenting sub-list',
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-
-
-
-
-
-#####################################################################
-# Check Multiple-Escaping
-
-# RT #42119: write of two single quotes
-yaml_ok(
-       "--- \"A'B'C\"\n",
-       [ "A'B'C" ],
-       'Multiple escaping of quote ok',
-);
-
-# Escapes without whitespace
-yaml_ok(
-       "--- A\\B\\C\n",
-       [ "A\\B\\C" ],
-       'Multiple escaping of escape ok',
-);
-
-# Escapes with whitespace
-yaml_ok(
-       "--- 'A\\B \\C'\n",
-       [ "A\\B \\C" ],
-       'Multiple escaping of escape with whitespace ok',
-);
-
-
-
-
-
-######################################################################
-# Check illegal characters that are in legal places
-
-yaml_ok(
-       "--- 'Wow!'\n",
-       [ "Wow!" ],
-       'Bang in a quote',
-);
-yaml_ok(
-       "--- 'This&that'\n",
-       [ "This&that" ],
-       'Ampersand in a quote',
-);
diff --git a/cpan/Parse-CPAN-Meta/t/05_errors.t b/cpan/Parse-CPAN-Meta/t/05_errors.t
new file mode 100644 (file)
index 0000000..4882d29
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Testing of basic document structures
+
+BEGIN {
+       if( $ENV{PERL_CORE} ) {
+               chdir 't';
+               @INC = ('../lib', 'lib');
+       }
+       else {
+               unshift @INC, 't/lib/';
+       }
+}
+
+use strict;
+BEGIN {
+       $|  = 1;
+       $^W = 1;
+}
+
+use Test::More tests => 1;
+use Parse::CPAN::Meta ();
+
+my $one = <<'END_YAML';
+---
+- foo: - bar
+END_YAML
+
+my $one_scalar_tiny = eval { Parse::CPAN::Meta->load_yaml_string( $one ) };
+like( $@, '/illegal characters/', "error causes exception");
+
diff --git a/cpan/Parse-CPAN-Meta/t/11_meta_yml.t b/cpan/Parse-CPAN-Meta/t/11_meta_yml.t
deleted file mode 100644 (file)
index fe95d1a..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of common META.yml examples
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(8, 3);
-
-
-
-
-
-#####################################################################
-# Testing YAML::Tiny's own META.yml file
-
-yaml_ok(
-       <<'END_YAML',
-abstract: Read/Write YAML files with as little code as possible
-author: 'Adam Kennedy <cpan@ali.as>'
-build_requires:
-  File::Spec: 0.80
-  Test::More: 0.47
-distribution_type: module
-generated_by: Module::Install version 0.63
-license: perl
-name: YAML-Tiny
-no_index:
-  directory:
-    - inc
-    - t
-requires:
-  perl: 5.005
-version: 0.03
-END_YAML
-       [ {
-               abstract          => 'Read/Write YAML files with as little code as possible',
-               author            => 'Adam Kennedy <cpan@ali.as>',
-               build_requires    => {
-                       'File::Spec' => '0.80',
-                       'Test::More' => '0.47',
-               },
-               distribution_type => 'module',
-               generated_by      => 'Module::Install version 0.63',
-               license           => 'perl',
-               name              => 'YAML-Tiny',
-               no_index          => {
-                       directory    => [ qw{inc t} ],
-               },
-               requires          => {
-                       perl         => '5.005',
-               },
-               version           => '0.03',
-       } ],
-       'YAML::Tiny',
-);
-
-
-
-
-
-
-#####################################################################
-# Testing a META.yml from a commercial project that crashed
-
-yaml_ok(
-       <<'END_YAML',
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
-name:         ITS-SIN-FIDS-Content-XML
-version:      0.01
-version_from: lib/ITS/SIN/FIDS/Content/XML.pm
-installdirs:  site
-requires:
-    Test::More:                    0.45
-    XML::Simple:                   2
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.30
-END_YAML
-       [ {
-               name              => 'ITS-SIN-FIDS-Content-XML',
-               version           => "0.01",
-               version_from      => 'lib/ITS/SIN/FIDS/Content/XML.pm',
-               installdirs       => 'site',
-               requires          => {
-                       'Test::More'  => 0.45,
-                       'XML::Simple' => 2,
-                       },
-               distribution_type => 'module',
-               generated_by      => 'ExtUtils::MakeMaker version 6.30',
-       } ],
-       'YAML::Tiny',
-);
-
-
-
-
-
-
-#####################################################################
-# Testing various failing META.yml files from CPAN
-
-yaml_ok(
-       <<'END_YAML',
----
-abstract: Mii in Nintendo Wii data parser and builder
-author: Toru Yamaguchi <zigorou@cpan.org>
-distribution_type: module
-generated_by: Module::Install version 0.65
-license: perl
-meta-spec:
-  url: http://module-build.sourceforge.net/META-spec-v1.3.html
-  version: 1.3
-name: Games-Nintendo-Wii-Mii
-no_index:
-  directory:
-    - inc
-    - t
-requires:
-  Carp: 1.03
-  Class::Accessor::Fast: 0.3
-  File::Slurp: 9999.12
-  IO::File: 1.1
-  Readonly: 0
-  Tie::IxHash: 1.21
-  URI: 1.35
-  XML::LibXML: 1.62
-version: 0.02
-END_YAML
-       [ {
-               abstract => 'Mii in Nintendo Wii data parser and builder',
-               author   => 'Toru Yamaguchi <zigorou@cpan.org>',
-               distribution_type => 'module',
-               generated_by => 'Module::Install version 0.65',
-               license => 'perl',
-               'meta-spec' => {
-                       url => 'http://module-build.sourceforge.net/META-spec-v1.3.html',
-                       version => '1.3',
-               },
-               name => 'Games-Nintendo-Wii-Mii',
-               no_index => {
-                       directory => [ qw{ inc t } ],
-               },
-               requires => {
-                       'Carp' => '1.03',
-                       'Class::Accessor::Fast' => '0.3',
-                       'File::Slurp' => '9999.12',
-                       'IO::File'    => '1.1',
-                       'Readonly'    => '0',
-                       'Tie::IxHash' => '1.21',
-                       'URI'         => '1.35',
-                       'XML::LibXML' => '1.62',
-               },
-               version => '0.02',
-       } ],
-       'Games-Nintendo-Wii-Mii',
-);
-
-yaml_ok(
-       <<'END_YAML',
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
-name:         Acme-Time-Baby
-version:      2.106
-version_from: Baby.pm
-installdirs:  site
-requires:
-    warnings:
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.17
-END_YAML
-       [ {
-               name => 'Acme-Time-Baby',
-               version => '2.106',
-               version_from => 'Baby.pm',
-               installdirs => 'site',
-               requires => {
-                       warnings => undef,
-               },
-               distribution_type => 'module',
-               generated_by => 'ExtUtils::MakeMaker version 6.17',
-       } ],
-       'Acme-Time-Baby',
-       noyamlperl => 1,
-);
-
-
-
-
-
-#####################################################################
-# File with a YAML header
-
-yaml_ok(
-       <<'END_YAML',
---- #YAML:1.0
-name:     Data-Swap
-version:  0.05
-license:  perl
-distribution_type: module
-requires:
-   perl:  5.6.0
-dynamic_config: 0
-END_YAML
-       [ {
-               name => 'Data-Swap',
-               version => '0.05',
-               license => 'perl',
-               distribution_type => 'module',
-               requires => {
-                       perl => '5.6.0',
-               },
-               dynamic_config => '0',
-       } ],
-       'Data-Swap',
-       nosyck => 1,
-);
-
-
-
-
-
-#####################################################################
-# Various files that fail for unknown reasons
-
-SCOPE: {
-       my $content = load_ok(
-               'Template-Provider-Unicode-Japanese.yml',
-               catfile( test_data_directory(), 'Template-Provider-Unicode-Japanese.yml' ),
-               100
-       );
-       yaml_ok(
-               $content,
-               [ {
-                       abstract => 'Decode all templates by Unicode::Japanese',
-                       author   => 'Hironori Yoshida C<< <yoshida@cpan.org> >>',
-                       distribution_type => 'module',
-                       generated_by => 'Module::Install version 0.65',
-                       license => 'perl',
-                       'meta-spec' => {
-                               url => 'http://module-build.sourceforge.net/META-spec-v1.3.html',
-                               version => '1.3',
-                       },
-                       name => 'Template-Provider-Unicode-Japanese',
-                       no_index => {
-                               directory => [ qw{ inc t } ],
-                       },
-                       requires => {
-                               'Template::Config' => 0,
-                               'Unicode::Japanese' => 0,
-                               perl => '5.6.0',
-                               version => '0',
-                       },
-                       version => '1.2.1',
-               } ],
-               'Template-Provider-Unicode-Japanese',
-               noyamlperl => 1,
-       );
-}
-
-SCOPE: {
-       my $content = load_ok(
-               'HTML-WebDAO.yml',
-               catfile( test_data_directory(), 'HTML-WebDAO.yml' ),
-               100
-       );
-       yaml_ok(
-               $content,
-               [ {
-                       abstract => 'Perl extension for create complex web application',
-                       author   => [
-                               'Zahatski Aliaksandr, E<lt>zagap@users.sourceforge.netE<gt>',
-                       ],
-                       license  => 'perl',
-                       name     => 'HTML-WebDAO',
-                       version  => '0.04',
-               } ],
-               'HTML-WebDAO',
-               nosyck => 1,
-       );
-}
-
-SCOPE: {
-       my $content = load_ok(
-               'Spreadsheet-Read.yml',
-               catfile( test_data_directory(), 'Spreadsheet-Read.yml' ),
-               100
-       );
-       yaml_ok(
-               $content,
-               [ {
-                       'resources' => {
-                               'license' => 'http://dev.perl.org/licenses/'
-                       },
-                       'meta-spec' => {
-                               'version' => '1.4',
-                               'url' => 'http://module-build.sourceforge.net/META-spec-v1.4.html'
-                       },
-                       'distribution_type' => 'module',
-                       'generated_by' => 'Author',
-                       'version' => 'VERSION',
-                       'name' => 'Read',
-                       'author' => [
-                               'H.Merijn Brand <h.m.brand@xs4all.nl>'
-                       ],
-                       'license' => 'perl',
-                       'build_requires' => {
-                               'Test::More' => '0',
-                               'Test::Harness' => '0',
-                               'perl' => '5.006'
-                       },
-                       'provides' => {
-                               'Spreadsheet::Read' => {
-                                       'version' => 'VERSION',
-                                       'file' => 'Read.pm'
-                               }
-                       },
-                       'optional_features' => [
-                               {
-                                       'opt_csv' => {
-                                               'requires' => {
-                                                       'Text::CSV_XS' => '0.23'
-                                               },
-                                               'recommends' => {
-                                                       'Text::CSV_PP' => '1.10',
-                                                       'Text::CSV_XS' => '0.58',
-                                                       'Text::CSV' => '1.10'
-                                               },
-                                               'description' => 'Provides parsing of CSV streams'
-                                       }
-                               },
-                               {
-                                       'opt_excel' => {
-                                               'requires' => {
-                                                       'Spreadsheet::ParseExcel' => '0.26',
-                                                       'Spreadsheet::ParseExcel::FmtDefault' => '0'
-                                               },
-                                               'recommends' => {
-                                                       'Spreadsheet::ParseExcel' => '0.42'
-                                               },
-                                               'description' => 'Provides parsing of Microsoft Excel files'
-                                       }
-                               },
-                               {
-                                       'opt_excelx' => {
-                                               'requires' => {
-                                                       'Spreadsheet::XLSX' => '0.07'
-                                               },
-                                               'description' => 'Provides parsing of Microsoft Excel 2007 files'
-                                       }
-                               },
-                               {
-                                       'opt_oo' => {
-                                               'requires' => {
-                                                       'Spreadsheet::ReadSXC' => '0.2'
-                                               },
-                                               'description' => 'Provides parsing of OpenOffice spreadsheets'
-                                       }
-                               },
-                               {
-                                       'opt_tools' => {
-                                               'recommends' => {
-                                                       'Tk::TableMatrix::Spreadsheet' => '0',
-                                                       'Tk::NoteBook' => '0',
-                                                       'Tk' => '0'
-                                               },
-                                               'description' => 'Spreadsheet tools'
-                                       }
-                               }
-                       ],
-                       'requires' => {
-                               'perl' => '5.006',
-                               'Data::Dumper' => '0',
-                               'Exporter' => '0',
-                               'Carp' => '0'
-                       },
-                       'recommends' => {
-                               'perl' => '5.008005',
-                               'IO::Scalar' => '0',
-                               'File::Temp' => '0.14'
-                       },
-                       'abstract' => 'Meta-Wrapper for reading spreadsheet data'
-               } ],
-               'Spreadsheet-Read',
-               noyamlpm   => 1,
-               noyamlperl => 1,
-       );
-}
diff --git a/cpan/Parse-CPAN-Meta/t/12_plagger.t b/cpan/Parse-CPAN-Meta/t/12_plagger.t
deleted file mode 100644 (file)
index 5e186f3..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/perl
-
-# Testing Plagger config samples from Miyagawa-san's YAPC::NA 2006 talk
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(2);
-
-
-
-
-
-#####################################################################
-# Example Plagger Configuration 1
-
-yaml_ok(
-       <<'END_YAML',
-plugins:
-  - module: Subscription::Bloglines
-    config:
-      username: you@example.pl
-      password: foobar
-      mark_read: 1
-
-  - module: Publish::Gmail
-    config:
-      mailto: example@gmail.com
-      mailfrom: miyagawa@example.com
-      mailroute:
-        via: smtp
-        host: smtp.example.com
-END_YAML
-       [ { plugins => [
-               {
-                       module => 'Subscription::Bloglines',
-                       config => {
-                               username  => 'you@example.pl',
-                               password  => 'foobar',
-                               mark_read => 1,
-                       },
-               },
-               {
-                       module => 'Publish::Gmail',
-                       config => {
-                               mailto    => 'example@gmail.com',
-                               mailfrom  => 'miyagawa@example.com',
-                               mailroute => {
-                                       via  => 'smtp',
-                                       host => 'smtp.example.com',
-                               },
-                       },
-               },
-       ] } ],
-       'Plagger',
-);
-
-
-
-
-
-#####################################################################
-# Example Plagger Configuration 2
-
-yaml_ok(
-       <<'END_YAML',
-plugins:
- - module: Subscription::Config
-   config:
-     feed:
-        # Trac's feed for changesets
-        - http://plagger.org/.../rss
-
- # I don't like to be notified of the same items
- # more than once
- - module: Filter::Rule
-   rule:
-     module: Fresh
-     mtime:
-       path: /tmp/rssbot.time
-       autoupdate: 1
-
- - module: Notify::IRC
-   config:
-     daemon_port: 9999
-     nickname: plaggerbot
-     server_host: chat.freenode.net
-     server_channels:
-       - '#plagger-ja'
-       - '#plagger'
-
-   
-END_YAML
-       [ { plugins => [ {
-               module => 'Subscription::Config',
-               config => {
-                       feed => [ 'http://plagger.org/.../rss' ],
-               },
-       }, {
-               module => 'Filter::Rule',
-               rule   => {
-                       module => 'Fresh',
-                       mtime  => {
-                               path => '/tmp/rssbot.time',
-                               autoupdate => 1,
-                       },
-               },
-       }, {
-               module => 'Notify::IRC',
-               config => {
-                       daemon_port     => 9999,
-                       nickname        => 'plaggerbot',
-                       server_host     => 'chat.freenode.net',
-                       server_channels => [
-                               '#plagger-ja',
-                               '#plagger',
-                       ],
-               },
-       } ] } ],
-       'plagger2',
-);                     
diff --git a/cpan/Parse-CPAN-Meta/t/13_perl_smith.t b/cpan/Parse-CPAN-Meta/t/13_perl_smith.t
deleted file mode 100644 (file)
index 9a8b8be..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of common META.yml examples
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(1, 1);
-
-
-
-
-
-#####################################################################
-# Testing that Perl::Smith config files work
-
-my $vanilla_file = catfile( test_data_directory(), 'vanilla.yml' );
-my $vanilla      = load_ok( 'yanilla.yml', $vanilla_file, 1000 );
-
-yaml_ok(
-       $vanilla,
-       [ {
-               package_name    => 'VanillaPerl',
-               package_version => 5,
-               download_dir    => 'c:\temp\vp_sources',
-               build_dir       => 'c:\temp\vp_build',
-               image_dir       => 'c:\vanilla-perl',
-               binary          => [
-                       {
-                               name    => 'dmake',
-                               url     => 'http://search.cpan.org/CPAN/authors/id/S/SH/SHAY/dmake-4.5-20060619-SHAY.zip',
-                               license => {
-                                       'dmake/COPYING' => 'dmake/COPYING',
-                                       'dmake/readme/license.txt' => 'dmake/license.txt',
-                               },
-                               install_to => {
-                                       'dmake/dmake.exe' => 'dmake/bin/dmake.exe',
-                                       'dmake/startup' => 'dmake/bin/startup',
-                               },
-                       },
-                       {
-                               name       => 'gcc-core',
-                               url        => 'http://umn.dl.sourceforge.net/mingw/gcc-core-3.4.5-20060117-1.tar.gz',
-                               license    => {
-                                       'COPYING'     => 'gcc/COPYING',
-                                       'COPYING.lib' => 'gcc/COPYING.lib',
-                               },
-                               install_to => 'mingw',
-                       },
-                       {
-                               name       => 'gcc-g++',
-                               url        => 'http://umn.dl.sourceforge.net/mingw/gcc-g++-3.4.5-20060117-1.tar.gz',
-                               license    => undef,
-                               install_to => 'mingw',
-                       },
-                       {
-                               name       => 'binutils',
-                               url        => 'http://umn.dl.sourceforge.net/mingw/binutils-2.16.91-20060119-1.tar.gz',
-                               license    => {
-                                       'Copying'     => 'binutils/Copying',
-                                       'Copying.lib' => 'binutils/Copying.lib',
-                               },
-                               install_to => 'mingw',
-                       },
-                       {
-                               name       => 'mingw-runtime',
-                               url        => 'http://umn.dl.sourceforge.net/mingw/mingw-runtime-3.10.tar.gz',
-                               license    => {
-                                       'doc/mingw-runtime/Contributors' => 'mingw/Contributors',
-                                       'doc/mingw-runtime/Disclaimer'   => 'mingw/Disclaimer',
-                               },
-                               install_to => 'mingw',
-                       },
-                       {
-                               name       => 'w32api',
-                               url        => 'http://umn.dl.sourceforge.net/mingw/w32api-3.6.tar.gz',
-                               license    => undef,
-                               install_to => 'mingw',
-                               extra      => {
-                                       'extra\README.w32api' => 'licenses\win32api\README.w32api',
-                               },
-                       }
-               ],
-               source => [
-                       {
-                               name       => 'perl',
-                               url        => 'http://mirrors.kernel.org/CPAN/src/perl-5.8.8.tar.gz',
-                               license    => {
-                                       'perl-5.8.8/Readme'   => 'perl/Readme',
-                                       'perl-5.8.8/Artistic' => 'perl/Artistic',
-                                       'perl-5.8.8/Copying'  => 'perl/Copying',
-                               },
-                               unpack_to  => 'perl',
-                               install_to => 'perl',
-                               after      => {
-                                       'extra\Config.pm' => 'lib\CPAN\Config.pm',
-                               },
-                       }
-               ],
-               modules => [
-                       {
-                               name      => 'Win32::Job',
-                               unpack_to => {
-                                       APIFile => 'Win32API-File',
-                               },
-                       },
-                       {
-                               name  => 'IO',
-                               force => 1,
-                       },
-                       {
-                               name => 'Compress::Zlib',
-                       },
-                       {
-                               name => 'IO::Zlib',
-                       },
-                       {
-                               name => 'Archive::Tar',
-                       },
-                       {
-                               name  => 'Net::FTP',
-                               extra => {
-                                       'extra\libnet.cfg' => 'libnet.cfg',
-                               },
-                       },
-               ],
-               extra => {
-                       'README' => 'README.txt',
-                       'LICENSE.txt' => 'LICENSE.txt',
-                       'Changes' => 'Release-Notes.txt',
-                       'extra\Config.pm' => 'perl\lib\CPAN\Config.pm',
-                       'extra\links\Perl-Documentation.url' => 'links\Perl Documentation.url',
-                       'extra\links\Perl-Homepage.url' => 'links\Perl Homepage.url',
-                       'extra\links\Perl-Mailing-Lists.url' => 'links\Perl Mailing Lists.url',
-                       'extra\links\Perlmonks-Community-Forum.url' => 'links\Perlmonks Community Forum.url',
-                       'extra\links\Search-CPAN-Modules.url' => 'links\Search CPAN Modules.url',
-                       'extra\links\Vanilla-Perl-Homepage.url' => 'links\Vanilla Perl Homepage.url',
-               },
-       } ],
-       'vanilla.yml',
-       nosyck     => 1,
-       noyamlperl => 1,
-);
diff --git a/cpan/Parse-CPAN-Meta/t/14_yaml_org.t b/cpan/Parse-CPAN-Meta/t/14_yaml_org.t
deleted file mode 100644 (file)
index 254bd7a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of common META.yml examples
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(1, 1);
-
-
-
-
-
-#####################################################################
-# Testing that Perl::Smith config files work
-
-my $sample_file = catfile( test_data_directory(), 'sample.yml' );
-my $sample      = load_ok( 'sample.yml', $sample_file, 500 );
-
-yaml_ok(
-       $sample,
-       [ {
-               invoice   => 34843,
-               date      => '2001-01-23',
-               'bill-to' => {
-                       given  => 'Chris',      
-                       family => 'Dumars',
-                       address => {
-                               lines  => "458 Walkman Dr.\nSuite #292\n",
-                               city   => 'Royal Oak',
-                               state  => 'MI',
-                               postal => 48046,
-                       },
-               },
-               product => [
-                       {
-                               sku         => 'BL394D',
-                               quantity    => '4',
-                               description => 'Basketball',
-                               price       => '450.00',
-                       },
-                       {
-                               sku         => 'BL4438H',
-                               quantity    => '1',
-                               description => 'Super Hoop',
-                               price       => '2392.00',
-                       },
-               ],
-               tax      => '251.42',
-               total    => '4443.52',
-               comments => <<'END_TEXT',
-Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
-END_TEXT
-       } ],
-       'sample.yml',
-       # nosyck => 1,
-);
diff --git a/cpan/Parse-CPAN-Meta/t/15_multibyte.t b/cpan/Parse-CPAN-Meta/t/15_multibyte.t
deleted file mode 100644 (file)
index cdde728..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of META.yml containing AVAR's name
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(0, 1, 4);
-
-
-
-
-
-#####################################################################
-# Testing that Perl::Smith config files work
-
-my $sample_file = catfile( test_data_directory(), 'multibyte.yml' );
-my $sample      = load_ok( 'multibyte.yml', $sample_file, 450 );
-
-# Does the string parse to the structure
-my $name      = "multibyte";
-my $yaml_copy = $sample;
-my @yaml      = eval { Parse::CPAN::Meta::Load( $yaml_copy ); };
-is( $@, '', "$name: Parse::CPAN::Meta::Load parses without error" );
-is( $yaml_copy, $sample, "$name: Parse::CPAN::Meta::Load does not modify the input string" );
-SKIP: {
-       skip( "Shortcutting after failure", 1 ) if $@;
-       is_deeply( $yaml[0]->{build_requires}, {
-               'Config'     => 0,
-               'Test::More' => 0,
-               'XSLoader'   => 0,
-       }, 'build_requires ok' );
-}
-
-SKIP: {
-       unless ( Parse::CPAN::Meta::HAVE_UTF8() ) {
-               skip("no utf8 support", 1 );
-       }
-       eval { utf8::is_utf8('') };
-       if ( $@ ) {
-               skip("no is_utf8 to test with until 5.8.1", 1);
-       }
-       ok( utf8::is_utf8($yaml[0]->{author}), "utf8 decoded" );
-}
diff --git a/cpan/Parse-CPAN-Meta/t/16_nullrefs.t b/cpan/Parse-CPAN-Meta/t/16_nullrefs.t
deleted file mode 100644 (file)
index fa1c3e9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/perl
-
-# Testing for null references
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(1);
-
-
-
-
-
-#####################################################################
-# Example Empty References
-
-yaml_ok(
-       <<'END_YAML',
---- []
---- {}
-END_YAML
-       [ [], {} ],
-       'Empty references',
-);
diff --git a/cpan/Parse-CPAN-Meta/t/17_toolbar.t b/cpan/Parse-CPAN-Meta/t/17_toolbar.t
deleted file mode 100644 (file)
index e0d3cf9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/perl
-
-# Testing of a known-bad file from an editor
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-# use Test::More skip_all => 'Temporarily ignoring failing test';
-use Test::More tests(1, 1);
-
-
-
-
-
-#####################################################################
-# Testing that Perl::Smith config files work
-
-my $toolbar_file = catfile( test_data_directory(), 'toolbar.yml' );
-my $toolbar      = load_ok( 'toolbar.yml', $toolbar_file, 100 );
-
-yaml_ok(
-       $toolbar,
-       [ {
-               main_toolbar => [
-                       'item file-new',
-                       'item file-open',
-                       'item file-print#',
-                       'item file-close#',
-                       'item file-save-all',
-                       'item file-save',
-                       undef,
-                       'item edit-changes-undo',
-                       'item edit-changes-redo',
-                       undef,
-                       'item edit-cut',
-                       'item edit-copy',
-                       'item edit-paste',
-                       'item edit-replace',
-                       'item edit-delete',
-               ]
-       } ],
-       'toolbar.yml',
-       noyamlperl => 1,
-);
diff --git a/cpan/Parse-CPAN-Meta/t/18_tap.t b/cpan/Parse-CPAN-Meta/t/18_tap.t
deleted file mode 100644 (file)
index 62b84f9..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/perl
-
-# Testing relating to functionality in the Test Anything Protocol
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(5, 0, 0);
-use Parse::CPAN::Meta ();
-
-
-
-
-
-#####################################################################
-# TAP Tests
-
-# Make sure we support x-foo keys
-yaml_ok(
-       "---\nx-foo: 1\n",
-       [ { 'x-foo' => 1 } ],
-       'x-foo key',
-);
-
-# Document ending (hash)
-yaml_ok(
-         "---\n"
-       . "  foo: bar\n"
-       . "...\n",
-       [ { foo => "bar" } ],
-       'document_end_hash',
-       noyamlpm   => 1,
-       nosyck     => 1,
-       noyamlperl => 1,
-);
-
-# Document ending (array)
-yaml_ok(
-         "---\n"
-       . "- foo\n"
-       . "...\n",
-       [ [ 'foo' ] ],
-       'document_end_array',
-       noyamlpm => 1,
-       noyamlperl => 1,
-);
-
-# Multiple documents (simple)
-yaml_ok(
-         "---\n"
-       . "- foo\n"
-       . "...\n"
-       . "---\n"
-       . "- foo\n"
-       . "...\n",
-       [ [ 'foo' ], [ 'foo' ] ],
-       'multi_document_simple',
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
-
-# Multiple documents (whitespace-separated)
-yaml_ok(
-         "---\n"
-       . "- foo\n"
-       . "...\n"
-       . "\n"
-       . "---\n"
-       . "- foo\n"
-       . "...\n",
-       [ [ 'foo' ], [ 'foo' ] ],
-       'multi_document_space',
-       noyamlpm   => 1,
-       noyamlperl => 1,
-);
diff --git a/cpan/Parse-CPAN-Meta/t/19_errors.t b/cpan/Parse-CPAN-Meta/t/19_errors.t
deleted file mode 100644 (file)
index baa06ad..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/perl
-
-# Testing documents that should fail
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests => 1;
-
-
-
-
-
-#####################################################################
-# Missing Features
-
-# We don't support raw nodes
-yaml_error( <<'END_YAML', 'does not support a feature' );
----
-version: !!perl/hash:version 
-  original: v2.0.2
-  qv: 1
-  version: 
-    - 2
-    - 0
-    - 2
-END_YAML
-
diff --git a/cpan/Parse-CPAN-Meta/t/21_bom.t b/cpan/Parse-CPAN-Meta/t/21_bom.t
deleted file mode 100644 (file)
index 706cf77..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/perl
-
-BEGIN {
-       if( $ENV{PERL_CORE} ) {
-               chdir 't';
-               @INC = ('../lib', 'lib');
-       }
-       else {
-               unshift @INC, 't/lib/';
-       }
-}
-
-use strict;
-BEGIN {
-       $|  = 1;
-       $^W = 1;
-}
-
-use File::Spec::Functions ':ALL';
-use Parse::CPAN::Meta::Test;
-use Test::More tests(0, 1, 3);
-
-
-
-
-
-#####################################################################
-# Testing that Perl::Smith config files work
-
-my $sample_file = catfile( test_data_directory(), 'utf_16_le_bom.yml' );
-my $sample      = load_ok( 'utf_16_le_bom.yml', $sample_file, 3 );
-
-# Does the string parse to the structure
-my $name      = "utf-16";
-my $yaml_copy = $sample;
-my $yaml      = eval { Parse::CPAN::Meta::Load( $yaml_copy ); };
-is( $yaml_copy, $sample, "$name: Parse::CPAN::Meta::Load does not modify the input string" );
-is( $yaml, undef, "file not parsed" );
-ok( $@ =~ "Stream has a non UTF-8 Unicode Byte Order Mark", "correct error" );
diff --git a/cpan/Parse-CPAN-Meta/t/data/HTML-WebDAO.yml b/cpan/Parse-CPAN-Meta/t/data/HTML-WebDAO.yml
deleted file mode 100644 (file)
index c5262ff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
---- #YAML:1.0
-name: HTML-WebDAO
-version: 0.04
-author:
-  - |-
-    Zahatski Aliaksandr, E<lt>zagap@users.sourceforge.netE<gt>
-abstract: Perl extension for create complex web application
-license: perl
diff --git a/cpan/Parse-CPAN-Meta/t/data/Spreadsheet-Read.yml b/cpan/Parse-CPAN-Meta/t/data/Spreadsheet-Read.yml
deleted file mode 100644 (file)
index f402ab8..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
---- #YAML:1.1
-name:                   Read
-version:                VERSION
-abstract:               Meta-Wrapper for reading spreadsheet data
-license:                perl
-author:                 
-  - H.Merijn Brand <h.m.brand@xs4all.nl>
-generated_by:           Author
-distribution_type:      module
-provides:
-  Spreadsheet::Read:
-    file:               Read.pm
-    version:            VERSION
-requires:                       
-  perl:                 5.006
-  Exporter:             0
-  Carp:                 0
-  Data::Dumper:         0
-recommends:
-  perl:                 5.008005
-  File::Temp:           0.14
-  IO::Scalar:           0
-build_requires:
-  perl:                 5.006
-  Test::Harness:        0
-  Test::More:           0
-optional_features:
-- opt_csv:
-    description:        Provides parsing of CSV streams
-    requires:
-      Text::CSV_XS:     0.23
-    recommends:
-      Text::CSV:        1.10
-      Text::CSV_PP:     1.10
-      Text::CSV_XS:     0.58
-- opt_excel:
-    description:        Provides parsing of Microsoft Excel files
-    requires:
-      Spreadsheet::ParseExcel: 0.26
-      Spreadsheet::ParseExcel::FmtDefault: 0
-    recommends:
-      Spreadsheet::ParseExcel: 0.42
-- opt_excelx:
-    description:        Provides parsing of Microsoft Excel 2007 files
-    requires:
-      Spreadsheet::XLSX:       0.07
-- opt_oo:
-    description:        Provides parsing of OpenOffice spreadsheets
-    requires:
-      Spreadsheet::ReadSXC:    0.2
-- opt_tools:
-    description:        Spreadsheet tools
-    recommends:
-      Tk:                           0
-      Tk::NoteBook:                 0
-      Tk::TableMatrix::Spreadsheet: 0
-resources:
-  license:      http://dev.perl.org/licenses/
-meta-spec:
-  version:      1.4
-  url:          http://module-build.sourceforge.net/META-spec-v1.4.html
diff --git a/cpan/Parse-CPAN-Meta/t/data/Template-Provider-Unicode-Japanese.yml b/cpan/Parse-CPAN-Meta/t/data/Template-Provider-Unicode-Japanese.yml
deleted file mode 100644 (file)
index 66dae89..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- 
-abstract: Decode all templates by Unicode::Japanese
-author: Hironori Yoshida C<< <yoshida@cpan.org> >>
-distribution_type: module
-generated_by: Module::Install version 0.65
-license: perl
-meta-spec: 
-  url: http://module-build.sourceforge.net/META-spec-v1.3.html
-  version: 1.3
-name: Template-Provider-Unicode-Japanese
-no_index: 
-  directory: 
-    - inc
-    - t
-requires: 
-  Template::Config: 0
-  Unicode::Japanese: 0
-  perl: 5.6.0
-  version: 0
-version: 1.2.1
diff --git a/cpan/Parse-CPAN-Meta/t/data/VR-META.json b/cpan/Parse-CPAN-Meta/t/data/VR-META.json
new file mode 100644 (file)
index 0000000..fbe9eca
--- /dev/null
@@ -0,0 +1,30 @@
+{
+   "abstract" : "a set of version requirements for a CPAN dist",
+   "author" : [
+      "Ricardo Signes <rjbs@cpan.org>"
+   ],
+   "build_requires" : {
+      "Test::More" : "0.88"
+   },
+   "configure_requires" : {
+      "ExtUtils::MakeMaker" : "6.31"
+   },
+   "generated_by" : "Dist::Zilla version 2.100991",
+   "license" : "perl",
+   "meta-spec" : {
+      "url" : "http://module-build.sourceforge.net/META-spec-v1.4.html",
+      "version" : 1.4
+   },
+   "name" : "Version-Requirements",
+   "recommends" : {},
+   "requires" : {
+      "Carp" : "0",
+      "Scalar::Util" : "0",
+      "version" : "0.77"
+   },
+   "resources" : {
+      "repository" : "git://git.codesimply.com/Version-Requirements.git"
+   },
+   "version" : "0.101010"
+}
+
diff --git a/cpan/Parse-CPAN-Meta/t/data/VR-META.yml b/cpan/Parse-CPAN-Meta/t/data/VR-META.yml
new file mode 100644 (file)
index 0000000..56d50dd
--- /dev/null
@@ -0,0 +1,22 @@
+---
+abstract: 'a set of version requirements for a CPAN dist'
+author:
+  - 'Ricardo Signes <rjbs@cpan.org>'
+build_requires:
+  Test::More: 0.88
+configure_requires:
+  ExtUtils::MakeMaker: 6.31
+generated_by: 'Dist::Zilla version 2.100991'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Version-Requirements
+recommends: {}
+requires:
+  Carp: 0
+  Scalar::Util: 0
+  version: 0.77
+resources:
+  repository: git://git.codesimply.com/Version-Requirements.git
+version: 0.101010
diff --git a/cpan/Parse-CPAN-Meta/t/data/multibyte.yml b/cpan/Parse-CPAN-Meta/t/data/multibyte.yml
deleted file mode 100644 (file)
index 91f3459..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- 
-abstract: Perl-compatible regular expression engine
-author: "Ævar Arnfjörð Bjarmason <avar@cpan.org>"
-build_requires: 
-  Config: 0
-  Test::More: 0
-  XSLoader: 0
-distribution_type: module
-generated_by: Module::Install version 0.65
-license: perl
-meta-spec: 
-  url: http://module-build.sourceforge.net/META-spec-v1.3.html
-  version: 1.3
-name: re-engine-PCRE
-no_index: 
-  directory: 
-    - inc
-    - t
-requires: 
-  perl: 5.9.5
-tests: t/*.t t/*/*.t
-version: 0.10
diff --git a/cpan/Parse-CPAN-Meta/t/data/sample.yml b/cpan/Parse-CPAN-Meta/t/data/sample.yml
deleted file mode 100644 (file)
index bea4f8a..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
----
-invoice: 34843
-date   : 2001-01-23
-bill-to:
-    given  : Chris
-    family : Dumars
-    address:
-        lines: |
-            458 Walkman Dr.
-            Suite #292
-        city    : Royal Oak
-        state   : MI
-        postal  : 48046
-product:
-    - sku         : BL394D
-      quantity    : 4
-      description : Basketball
-      price       : 450.00
-    - sku         : BL4438H
-      quantity    : 1
-      description : Super Hoop
-      price       : 2392.00
-tax  : 251.42
-total: 4443.52
-comments: >
-    Late afternoon is best.
-    Backup contact is Nancy
-    Billsmer @ 338-4338.
diff --git a/cpan/Parse-CPAN-Meta/t/data/toolbar.yml b/cpan/Parse-CPAN-Meta/t/data/toolbar.yml
deleted file mode 100644 (file)
index 5219248..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-main_toolbar:
-  - item file-new
-  - item file-open
-  - item file-print#
-  - item file-close#
-  - item file-save-all
-  - item file-save
-  -
-  - item edit-changes-undo
-  - item edit-changes-redo
-  -
-  - item edit-cut
-  - item edit-copy
-  - item edit-paste
-  - item edit-replace
-  - item edit-delete
diff --git a/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml b/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml
deleted file mode 100644 (file)
index b9230eb..0000000
Binary files a/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml and /dev/null differ
diff --git a/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml.packed b/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml.packed
deleted file mode 100644 (file)
index 478c573..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#########################################################################
-This is a binary file that was packed with the 'uupacktool.pl' which
-is included in the Perl distribution.
-
-To unpack this file use the following command:
-
-     uupacktool.pl -u t/data/utf_16_le_bom.yml.packed t/data/utf_16_le_bom.yml
-
-To recreate it use the following command:
-
-     uupacktool.pl -p t/data/utf_16_le_bom.yml t/data/utf_16_le_bom.yml.packed
-
-Created at Sat Jul 25 17:27:03 2009
-#########################################################################
-__UU__
-6__XM`"T`+0`*`"T`(`!F`&\`;P`*````
diff --git a/cpan/Parse-CPAN-Meta/t/data/vanilla.yml b/cpan/Parse-CPAN-Meta/t/data/vanilla.yml
deleted file mode 100644 (file)
index dc757e1..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# VanillaPerl YAML config file
----
-# package info
-package_name:       VanillaPerl
-package_version:    5
-
-# directories
-download_dir:   c:\temp\vp_sources
-build_dir:      c:\temp\vp_build
-image_dir:      c:\vanilla-perl
-
-# Binary components
-binary:
-    -   name: dmake
-        url: http://search.cpan.org/CPAN/authors/id/S/SH/SHAY/dmake-4.5-20060619-SHAY.zip
-        license:
-            dmake/COPYING : dmake/COPYING
-            dmake/readme/license.txt: dmake/license.txt
-        install_to:
-            dmake/dmake.exe: dmake/bin/dmake.exe
-            dmake/startup: dmake/bin/startup
-
-    -   name: gcc-core
-        url: http://umn.dl.sourceforge.net/mingw/gcc-core-3.4.5-20060117-1.tar.gz
-        license:
-            COPYING: gcc/COPYING
-            COPYING.lib: gcc/COPYING.lib
-        install_to: mingw
-    
-    -   name: gcc-g++
-        url: http://umn.dl.sourceforge.net/mingw/gcc-g++-3.4.5-20060117-1.tar.gz
-        license:
-        install_to: mingw
-
-    -   name: binutils
-        url: http://umn.dl.sourceforge.net/mingw/binutils-2.16.91-20060119-1.tar.gz
-        license:
-            Copying: binutils/Copying
-            Copying.lib: binutils/Copying.lib
-        install_to: mingw
-
-    -   name: mingw-runtime
-        url: http://umn.dl.sourceforge.net/mingw/mingw-runtime-3.10.tar.gz
-        license:
-            doc/mingw-runtime/Contributors: mingw/Contributors
-            doc/mingw-runtime/Disclaimer: mingw/Disclaimer
-        install_to: mingw
-
-    -   name: w32api
-        url: http://umn.dl.sourceforge.net/mingw/w32api-3.6.tar.gz
-        license:
-        install_to: mingw
-        extra:
-            extra\README.w32api:  licenses\win32api\README.w32api
-
-# Source components
-source:
-    -   name: perl
-        url: http://mirrors.kernel.org/CPAN/src/perl-5.8.8.tar.gz
-        license: 
-            perl-5.8.8/Readme: perl/Readme
-            perl-5.8.8/Artistic: perl/Artistic
-            perl-5.8.8/Copying: perl/Copying
-        unpack_to: perl
-        install_to: perl
-        after:
-            extra\Config.pm:  lib\CPAN\Config.pm
-
-# Additional modules to bundle in site\lib
-modules:
-        # i.e. not used, but gets us the libwin32 dist
-    -   name: Win32::Job
-        unpack_to:
-            APIFile: Win32API-File
-    -   name: IO
-        force: 1
-    -   name: Compress::Zlib
-    -   name: IO::Zlib
-    -   name: Archive::Tar
-    -   name: Net::FTP
-        extra: 
-            extra\libnet.cfg: libnet.cfg
-
-# Extra files to be placed
-#    Signature.pm: perl\site\lib\Module\Signature.pm
-extra:
-    README:  README.txt
-    LICENSE.txt: LICENSE.txt
-    Changes: Release-Notes.txt
-    extra\Config.pm:  perl\lib\CPAN\Config.pm
-                      # reset this again
-
-    extra\links\Perl-Documentation.url: links\Perl Documentation.url
-    extra\links\Perl-Homepage.url: links\Perl Homepage.url
-    extra\links\Perl-Mailing-Lists.url: links\Perl Mailing Lists.url
-    extra\links\Perlmonks-Community-Forum.url: links\Perlmonks Community Forum.url
-    extra\links\Search-CPAN-Modules.url: links\Search CPAN Modules.url
-    extra\links\Vanilla-Perl-Homepage.url: links\Vanilla Perl Homepage.url
index 46f967b..3e86911 100644 (file)
@@ -59,7 +59,7 @@ sub yaml_ok {
 sub yaml_error {
        my $string = shift;
        my $yaml   = eval { Parse::CPAN::Meta::Load( $string ); };
-       Test::More::like( $@, qr/$_[0]/, "YAML::Tiny throws expected error" );
+       Test::More::like( $@, qr/$_[0]/, "CPAN::Meta::YAML throws expected error" );
 }
 
 sub slurp {
diff --git a/cpan/Parse-CPAN-Meta/uupacktool.pl b/cpan/Parse-CPAN-Meta/uupacktool.pl
deleted file mode 100644 (file)
index bb4dc00..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-#!perl
-
-use strict;
-use warnings;
-use Getopt::Long;
-use File::Basename;
-use File::Spec;
-
-BEGIN {
-    if ($^O eq 'VMS') {
-        require VMS::Filespec;
-        import VMS::Filespec;
-    }
-}
-
-Getopt::Long::Configure('no_ignore_case');
-
-our $LastUpdate = -M $0;
-
-sub handle_file {
-    my $opts    = shift;
-    my $file    = shift or die "Need file\n". usage();
-    my $outfile = shift || '';
-    $file = vms_check_name($file) if $^O eq 'VMS';
-    my $mode    = (stat($file))[2] & 07777;
-
-    open my $fh, "<", $file
-        or do { warn "Could not open input file $file: $!"; exit 0 };
-    my $str = do { local $/; <$fh> };
-
-    ### unpack?
-    my $outstr;
-    if( $opts->{u} ) {
-        if( !$outfile ) {
-            $outfile = $file;
-            $outfile =~ s/\.packed\z//;
-        }
-        my ($head, $body) = split /__UU__\n/, $str;
-        die "Can't unpack malformed data in '$file'\n"
-            if !$head;
-        $outstr = unpack 'u', $body;
-
-    } else {
-        $outfile ||= $file . '.packed';
-
-        my $me = basename($0);
-
-        $outstr = <<"EOFBLURB" . pack 'u', $str;
-#########################################################################
-This is a binary file that was packed with the 'uupacktool.pl' which
-is included in the Perl distribution.
-
-To unpack this file use the following command:
-
-     $me -u $outfile $file
-
-To recreate it use the following command:
-
-     $me -p $file $outfile
-
-Created at @{[scalar localtime]}
-#########################################################################
-__UU__
-EOFBLURB
-    }
-
-    ### output the file
-    if( $opts->{'s'} ) {
-        print STDOUT $outstr;
-    } else {
-        $outfile = VMS::Filespec::vmsify($outfile) if $^O eq 'VMS';
-        print "Writing $file into $outfile\n" if $opts->{'v'};
-        open my $outfh, ">", $outfile
-            or do { warn "Could not open $outfile for writing: $!"; exit 0 };
-        binmode $outfh;
-        ### $outstr might be empty, if the file was empty
-        print $outfh $outstr if $outstr;
-        close $outfh;
-
-        chmod $mode, $outfile;
-    }
-
-    ### delete source file?
-    if( $opts->{'D'} and $file ne $outfile ) {
-        1 while unlink $file;
-    }
-}
-
-sub bulk_process {
-    my $opts = shift;
-    my $Manifest = $opts->{'m'};
-
-    open my $fh, "<", $Manifest or die "Could not open '$Manifest':$!";
-
-    print "Reading $Manifest\n"
-            if $opts->{'v'};
-
-    my $count = 0;
-    my $lines = 0;
-    while( my $line = <$fh> ) {
-        chomp $line;
-        my ($file) = split /\s+/, $line;
-
-        $lines++;
-
-        next unless $file =~ /\.packed/;
-
-        $count++;
-
-        my $out = $file;
-        $out =~ s/\.packed\z//;
-        $out = vms_check_name($out) if $^O eq 'VMS';
-
-        ### unpack
-        if( !$opts->{'c'} ) {
-            ( $out, $file ) = ( $file, $out ) if $opts->{'p'};
-            if (-e $out) {
-                my $changed = -M _;
-                if ($changed < $LastUpdate and $changed < -M $file) {
-                    print "Skipping '$file' as '$out' is up-to-date.\n"
-                        if $opts->{'v'};
-                    next;
-                }
-            }
-            handle_file($opts, $file, $out);
-            print "Converted '$file' to '$out'\n"
-                if $opts->{'v'};
-
-        ### clean up
-        } else {
-
-            ### file exists?
-            unless( -e $out ) {
-                print "File '$file' was not unpacked into '$out'. Can not remove.\n";
-
-            ### remove it
-            } else {
-                print "Removing '$out'\n";
-                1 while unlink $out;
-            }
-        }
-    }
-    print "Found $count files to process out of $lines in '$Manifest'\n"
-            if $opts->{'v'};
-}
-
-sub usage {
-    return qq[
-Usage: $^X $0 [-d dir] [-v] [-c] [-D] -p|-u [orig [packed|-s] | -m [manifest]]
-
-    Handle binary files in source tree. Can be used to pack or
-    unpack files individiually or as specified by a manifest file.
-
-Options:
-    -u  Unpack files (defaults to -u unless -p is specified)
-    -p  Pack files
-    -c  Clean up all unpacked files. Implies -m
-
-    -D  Delete source file after encoding/decoding
-
-    -s  Output to STDOUT rather than OUTPUT_FILE
-    -m  Use manifest file, if none is explicitly provided defaults to 'MANIFEST'
-
-    -d  Change directory to dir before processing
-
-    -v  Run verbosely
-    -h  Display this help message
-];
-}
-
-sub vms_check_name {
-
-# Packed files tend to have multiple dots, which the CRTL may or may not handle
-# properly, so convert to native format.  And depending on how the archive was
-# unpacked, foo.bar.baz may be foo_bar.baz or foo.bar_baz.  N.B. This checks for
-# existence, so is not suitable as-is to generate ODS-2-safe names in preparation
-# for file creation.
-
-    my $file = shift;
-
-    $file = VMS::Filespec::vmsify($file);
-    return $file if -e $file;
-
-    my ($vol,$dirs,$base) = File::Spec->splitpath($file);
-    my $tmp = $base;
-    1 while $tmp =~ s/([^\.]+)\.(.+\..+)/$1_$2/;
-    my $try = File::Spec->catpath($vol, $dirs, $tmp);
-    return $try if -e $try;
-
-    $tmp = $base;
-    1 while $tmp =~ s/(.+\..+)\.([^\.]+)/$1_$2/;
-    $try = File::Spec->catpath($vol, $dirs, $tmp);
-    return $try if -e $try;
-
-    return $file;
-}
-
-my $opts = {};
-GetOptions($opts,'u','p','c', 'D', 'm:s','s','d=s','v','h');
-
-die "Can't pack and unpack at the same time!\n", usage()
-    if $opts->{'u'} && $opts->{'p'};
-die usage() if $opts->{'h'};
-
-if ( $opts->{'d'} ) {
-    chdir $opts->{'d'}
-        or die "Failed to chdir to '$opts->{'d'}':$!";
-}
-$opts->{'u'} = 1 if !$opts->{'p'};
-binmode STDOUT if $opts->{'s'};
-if ( exists $opts->{'m'} or exists $opts->{'c'} ) {
-    $opts->{'m'} ||= "MANIFEST";
-    bulk_process($opts);
-    exit(0);
-} else {
-    if (@ARGV) {
-        handle_file($opts, @ARGV);
-    } else {
-        die "No file to process specified!\n", usage();
-    }
-    exit(0);
-}
-
-
-die usage();
index f85e5e2..ee7ef2c 100644 (file)
@@ -152,6 +152,13 @@ C<Module::Metadata> has been upgraded from version 1.000003 to 1.000004.
 
 =item *
 
+C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
+
+The latest Parse::CPAN::Meta can now read YAML or JSON files using
+L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core.
+
+=item *
+
 C<Unicode::Collate> has been upgraded from version 0.68 to 0.72
 
 This also sees the switch from using the pure-perl version of this