diff options
author | David Golden <dagolden@cpan.org> | 2011-02-07 20:30:35 -0500 |
---|---|---|
committer | David Golden <dagolden@cpan.org> | 2011-02-07 20:30:35 -0500 |
commit | 34d5bd5d9e739d4087d5fc6d582f537fcd64a848 (patch) | |
tree | 2bbbbca7435924733758b1c1cdbf21736090ea01 /cpan/Parse-CPAN-Meta | |
parent | 018c7c82242b909397f06dbd208a750677dd822a (diff) | |
download | perl-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')
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 Binary files differdeleted file mode 100644 index b9230ebb5a..0000000000 --- a/cpan/Parse-CPAN-Meta/t/data/utf_16_le_bom.yml +++ /dev/null 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(); |