summaryrefslogtreecommitdiff
path: root/cpan/Parse-CPAN-Meta
diff options
context:
space:
mode:
authorDavid Golden <dagolden@cpan.org>2011-02-07 20:30:35 -0500
committerDavid Golden <dagolden@cpan.org>2011-02-07 20:30:35 -0500
commit34d5bd5d9e739d4087d5fc6d582f537fcd64a848 (patch)
tree2bbbbca7435924733758b1c1cdbf21736090ea01 /cpan/Parse-CPAN-Meta
parent018c7c82242b909397f06dbd208a750677dd822a (diff)
downloadperl-34d5bd5d9e739d4087d5fc6d582f537fcd64a848.tar.gz
Updated Parse::CPAN::Meta to CPAN version 1.4401
[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/
Diffstat (limited to 'cpan/Parse-CPAN-Meta')
-rw-r--r--cpan/Parse-CPAN-Meta/Changes28
-rw-r--r--cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm511
-rw-r--r--cpan/Parse-CPAN-Meta/t/01_compile.t2
-rw-r--r--cpan/Parse-CPAN-Meta/t/02_api.t136
-rw-r--r--cpan/Parse-CPAN-Meta/t/02_basic.t263
-rw-r--r--cpan/Parse-CPAN-Meta/t/03_functions.t (renamed from cpan/Parse-CPAN-Meta/t/04_scalar.t)0
-rw-r--r--cpan/Parse-CPAN-Meta/t/03_regression.t622
-rw-r--r--cpan/Parse-CPAN-Meta/t/04_export.t (renamed from cpan/Parse-CPAN-Meta/t/05_export.t)0
-rw-r--r--cpan/Parse-CPAN-Meta/t/05_errors.t31
-rw-r--r--cpan/Parse-CPAN-Meta/t/11_meta_yml.t405
-rw-r--r--cpan/Parse-CPAN-Meta/t/12_plagger.t136
-rw-r--r--cpan/Parse-CPAN-Meta/t/13_perl_smith.t158
-rw-r--r--cpan/Parse-CPAN-Meta/t/14_yaml_org.t72
-rw-r--r--cpan/Parse-CPAN-Meta/t/15_multibyte.t59
-rw-r--r--cpan/Parse-CPAN-Meta/t/16_nullrefs.t39
-rw-r--r--cpan/Parse-CPAN-Meta/t/17_toolbar.t59
-rw-r--r--cpan/Parse-CPAN-Meta/t/18_tap.t90
-rw-r--r--cpan/Parse-CPAN-Meta/t/19_errors.t43
-rw-r--r--cpan/Parse-CPAN-Meta/t/21_bom.t39
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/HTML-WebDAO.yml8
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/Spreadsheet-Read.yml61
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/Template-Provider-Unicode-Japanese.yml20
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/VR-META.json30
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/VR-META.yml22
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/multibyte.yml22
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/sample.yml28
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/toolbar.yml16
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.ymlbin22 -> 0 bytes
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml.packed16
-rw-r--r--cpan/Parse-CPAN-Meta/t/data/vanilla.yml98
-rw-r--r--cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm2
-rw-r--r--cpan/Parse-CPAN-Meta/uupacktool.pl225
32 files changed, 423 insertions, 2818 deletions
diff --git a/cpan/Parse-CPAN-Meta/Changes b/cpan/Parse-CPAN-Meta/Changes
index 0ba34c5c23..68ac154b1b 100644
--- a/cpan/Parse-CPAN-Meta/Changes
+++ b/cpan/Parse-CPAN-Meta/Changes
@@ -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
diff --git a/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm b/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
index e7d585170b..f7d717cdb1 100644
--- a/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
+++ b/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
@@ -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.
diff --git a/cpan/Parse-CPAN-Meta/t/01_compile.t b/cpan/Parse-CPAN-Meta/t/01_compile.t
index 7e64db7917..6bfc2c9628 100644
--- a/cpan/Parse-CPAN-Meta/t/01_compile.t
+++ b/cpan/Parse-CPAN-Meta/t/01_compile.t
@@ -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
index 0000000000..f81239426d
--- /dev/null
+++ b/cpan/Parse-CPAN-Meta/t/02_api.t
@@ -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
index f6a91c1707..0000000000
--- a/cpan/Parse-CPAN-Meta/t/02_basic.t
+++ /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/04_scalar.t b/cpan/Parse-CPAN-Meta/t/03_functions.t
index 7a637c9383..7a637c9383 100644
--- a/cpan/Parse-CPAN-Meta/t/04_scalar.t
+++ b/cpan/Parse-CPAN-Meta/t/03_functions.t
diff --git a/cpan/Parse-CPAN-Meta/t/03_regression.t b/cpan/Parse-CPAN-Meta/t/03_regression.t
deleted file mode 100644
index e9fb70a8fb..0000000000
--- a/cpan/Parse-CPAN-Meta/t/03_regression.t
+++ /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_export.t b/cpan/Parse-CPAN-Meta/t/04_export.t
index f82cc91cf6..f82cc91cf6 100644
--- a/cpan/Parse-CPAN-Meta/t/05_export.t
+++ b/cpan/Parse-CPAN-Meta/t/04_export.t
diff --git a/cpan/Parse-CPAN-Meta/t/05_errors.t b/cpan/Parse-CPAN-Meta/t/05_errors.t
new file mode 100644
index 0000000000..4882d290eb
--- /dev/null
+++ b/cpan/Parse-CPAN-Meta/t/05_errors.t
@@ -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
index fe95d1abef..0000000000
--- a/cpan/Parse-CPAN-Meta/t/11_meta_yml.t
+++ /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
index 5e186f3bc6..0000000000
--- a/cpan/Parse-CPAN-Meta/t/12_plagger.t
+++ /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
index 9a8b8be709..0000000000
--- a/cpan/Parse-CPAN-Meta/t/13_perl_smith.t
+++ /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
index 254bd7a547..0000000000
--- a/cpan/Parse-CPAN-Meta/t/14_yaml_org.t
+++ /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
index cdde728074..0000000000
--- a/cpan/Parse-CPAN-Meta/t/15_multibyte.t
+++ /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
index fa1c3e9708..0000000000
--- a/cpan/Parse-CPAN-Meta/t/16_nullrefs.t
+++ /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
index e0d3cf9876..0000000000
--- a/cpan/Parse-CPAN-Meta/t/17_toolbar.t
+++ /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
index 62b84f936e..0000000000
--- a/cpan/Parse-CPAN-Meta/t/18_tap.t
+++ /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
index baa06ad5b2..0000000000
--- a/cpan/Parse-CPAN-Meta/t/19_errors.t
+++ /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
index 706cf77c3f..0000000000
--- a/cpan/Parse-CPAN-Meta/t/21_bom.t
+++ /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
index c5262ff73c..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/HTML-WebDAO.yml
+++ /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
index f402ab8d68..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/Spreadsheet-Read.yml
+++ /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
index 66dae89875..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/Template-Provider-Unicode-Japanese.yml
+++ /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
index 0000000000..fbe9eca82f
--- /dev/null
+++ b/cpan/Parse-CPAN-Meta/t/data/VR-META.json
@@ -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
index 0000000000..56d50ddc3d
--- /dev/null
+++ b/cpan/Parse-CPAN-Meta/t/data/VR-META.yml
@@ -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
index 91f3459107..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/multibyte.yml
+++ /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
index bea4f8ad42..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/sample.yml
+++ /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
index 5219248a9b..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/toolbar.yml
+++ /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
index b9230ebb5a..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml
+++ /dev/null
Binary files 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
index 478c5736f3..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml.packed
+++ /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
index dc757e1a34..0000000000
--- a/cpan/Parse-CPAN-Meta/t/data/vanilla.yml
+++ /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
diff --git a/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm b/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
index 46f967b7dd..3e86911f07 100644
--- a/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
+++ b/cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
@@ -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
index bb4dc0092f..0000000000
--- a/cpan/Parse-CPAN-Meta/uupacktool.pl
+++ /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();