r35594 - in /trunk/libparse-cpan-meta-perl: ./ debian/ lib/Parse/CPAN/ t/ t/data/ t/lib/Parse/CPAN/Meta/

ryan52-guest at users.alioth.debian.org ryan52-guest at users.alioth.debian.org
Sun May 17 20:33:59 UTC 2009


Author: ryan52-guest
Date: Sun May 17 20:33:53 2009
New Revision: 35594

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=35594
Log:
* New upstream release
* Add myself to Uploaders

Added:
    trunk/libparse-cpan-meta-perl/.dualLivedDiffConfig
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/.dualLivedDiffConfig
    trunk/libparse-cpan-meta-perl/LICENSE
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/LICENSE
    trunk/libparse-cpan-meta-perl/README
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/README
    trunk/libparse-cpan-meta-perl/t/05_export.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/05_export.t
    trunk/libparse-cpan-meta-perl/t/18_tap.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/18_tap.t
    trunk/libparse-cpan-meta-perl/t/19_errors.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/19_errors.t
    trunk/libparse-cpan-meta-perl/t/21_bom.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/21_bom.t
    trunk/libparse-cpan-meta-perl/t/97_meta.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/97_meta.t
    trunk/libparse-cpan-meta-perl/t/98_pod.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/98_pod.t
    trunk/libparse-cpan-meta-perl/t/99_pmv.t
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/99_pmv.t
    trunk/libparse-cpan-meta-perl/t/data/Spreadsheet-Read.yml
      - copied unchanged from r35593, branches/upstream/libparse-cpan-meta-perl/current/t/data/Spreadsheet-Read.yml
Modified:
    trunk/libparse-cpan-meta-perl/Changes
    trunk/libparse-cpan-meta-perl/MANIFEST
    trunk/libparse-cpan-meta-perl/META.yml
    trunk/libparse-cpan-meta-perl/Makefile.PL
    trunk/libparse-cpan-meta-perl/debian/changelog
    trunk/libparse-cpan-meta-perl/debian/control
    trunk/libparse-cpan-meta-perl/lib/Parse/CPAN/Meta.pm
    trunk/libparse-cpan-meta-perl/t/02_basic.t
    trunk/libparse-cpan-meta-perl/t/03_regression.t
    trunk/libparse-cpan-meta-perl/t/11_meta_yml.t
    trunk/libparse-cpan-meta-perl/t/12_plagger.t
    trunk/libparse-cpan-meta-perl/t/13_perl_smith.t
    trunk/libparse-cpan-meta-perl/t/14_yaml_org.t
    trunk/libparse-cpan-meta-perl/t/15_multibyte.t
    trunk/libparse-cpan-meta-perl/t/17_toolbar.t
    trunk/libparse-cpan-meta-perl/t/lib/Parse/CPAN/Meta/Test.pm

Modified: trunk/libparse-cpan-meta-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/Changes?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/Changes (original)
+++ trunk/libparse-cpan-meta-perl/Changes Sun May 17 20:33:53 2009
@@ -1,4 +1,12 @@
 Revision history for Perl extension Parse-CPAN-Meta
+
+1.38 Sat 16 May 2009
+	- Synchorised version numbers with YAML::Tiny
+	- Code shrinkages to the bloaty Unicode/BOM code
+	- Merging a ton more tests from YAML::Tiny
+	- Added back some pointless options to yaml_ok that keep our
+	  codebase closer to YAML::Tiny (which should help with syncing)
+	- Changed exceptions to be closer to YAML::Tiny
 
 0.05 Wed 11 Mar 2009
 	- Upgrade previous release to a stable release.

Modified: trunk/libparse-cpan-meta-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/MANIFEST?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/MANIFEST (original)
+++ trunk/libparse-cpan-meta-perl/MANIFEST Sun May 17 20:33:53 2009
@@ -1,11 +1,15 @@
+.dualLivedDiffConfig
 Changes
 lib/Parse/CPAN/Meta.pm
+LICENSE
 Makefile.PL
 MANIFEST			This list of files
+README
 t/01_compile.t
 t/02_basic.t
 t/03_regression.t
 t/04_scalar.t
+t/05_export.t
 t/11_meta_yml.t
 t/12_plagger.t
 t/13_perl_smith.t
@@ -13,9 +17,16 @@
 t/15_multibyte.t
 t/16_nullrefs.t
 t/17_toolbar.t
+t/18_tap.t
+t/19_errors.t
+t/21_bom.t
+t/97_meta.t
+t/98_pod.t
+t/99_pmv.t
 t/data/HTML-WebDAO.yml
 t/data/multibyte.yml
 t/data/sample.yml
+t/data/Spreadsheet-Read.yml
 t/data/Template-Provider-Unicode-Japanese.yml
 t/data/toolbar.yml
 t/data/utf_16_le_bom.yml

Modified: trunk/libparse-cpan-meta-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/META.yml?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/META.yml (original)
+++ trunk/libparse-cpan-meta-perl/META.yml Sun May 17 20:33:53 2009
@@ -1,15 +1,23 @@
 --- #YAML:1.0
-name:                Parse-CPAN-Meta
-version:             0.05
-abstract:            Parse META.yml and other similar CPAN metadata files
-license:             perl
-author:              
+name:               Parse-CPAN-Meta
+version:            1.38
+abstract:           Parse META.yml and other similar CPAN metadata files
+author:
     - Adam Kennedy <adamk at cpan.org>
-generated_by:        ExtUtils::MakeMaker version 6.42
-distribution_type:   module
-requires:     
-    File::Spec:                    0.80
-    Test::More:                    0.47
+license:            perl
+distribution_type:  module
+configure_requires:
+    ExtUtils::MakeMaker:  0
+build_requires:
+    ExtUtils::MakeMaker:  0
+requires:
+    File::Spec:  0.80
+    Test::More:  0.47
+no_index:
+    directory:
+        - t
+        - inc
+generated_by:       ExtUtils::MakeMaker version 6.50
 meta-spec:
-    url:     http://module-build.sourceforge.net/META-spec-v1.3.html
-    version: 1.3
+    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
+    version:  1.4

Modified: trunk/libparse-cpan-meta-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/Makefile.PL?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/Makefile.PL (original)
+++ trunk/libparse-cpan-meta-perl/Makefile.PL Sun May 17 20:33:53 2009
@@ -1,7 +1,7 @@
 use strict;
 BEGIN {
 	require 5.003_96;
-	$main::VERSION = '0.05';
+	$main::VERSION = '1.38';
 }
 use ExtUtils::MakeMaker;
 

Modified: trunk/libparse-cpan-meta-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/debian/changelog?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/debian/changelog (original)
+++ trunk/libparse-cpan-meta-perl/debian/changelog Sun May 17 20:33:53 2009
@@ -1,3 +1,10 @@
+libparse-cpan-meta-perl (1.38-1) UNRELEASED; urgency=low
+
+  * New upstream release
+  * Add myself to Uploaders
+
+ -- Ryan Niebur <ryanryan52 at gmail.com>  Sun, 17 May 2009 13:33:44 -0700
+
 libparse-cpan-meta-perl (0.05-1) unstable; urgency=low
 
   * New upstream release.

Modified: trunk/libparse-cpan-meta-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/debian/control?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/debian/control (original)
+++ trunk/libparse-cpan-meta-perl/debian/control Sun May 17 20:33:53 2009
@@ -9,7 +9,7 @@
 Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
 Uploaders: Vincent Danjean <vdanjean at debian.org>,
  Brian Cassidy <brian.cassidy at gmail.com>,
- gregor herrmann <gregoa at debian.org>
+ gregor herrmann <gregoa at debian.org>, Ryan Niebur <ryanryan52 at gmail.com>
 Standards-Version: 3.8.1
 Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libparse-cpan-meta-perl/
 Vcs-Browser: http://svn.debian.org/viewsvn/pkg-perl/trunk/libparse-cpan-meta-perl/

Modified: trunk/libparse-cpan-meta-perl/lib/Parse/CPAN/Meta.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/lib/Parse/CPAN/Meta.pm?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/lib/Parse/CPAN/Meta.pm (original)
+++ trunk/libparse-cpan-meta-perl/lib/Parse/CPAN/Meta.pm Sun May 17 20:33:53 2009
@@ -2,10 +2,20 @@
 
 use strict;
 use Carp 'croak';
+
+# UTF Support?
+sub HAVE_UTF8 () { $] >= 5.007003 }
 BEGIN {
+	if ( HAVE_UTF8 ) {
+		# The string eval helps hide this from Test::MinimumVersion
+		eval "require utf8;";
+		die "Failed to load UTF-8 support" if $@;
+	}
+
+	# Class structure
 	require 5.004;
 	require Exporter;
-	$Parse::CPAN::Meta::VERSION   = '0.05';
+	$Parse::CPAN::Meta::VERSION   = '1.38';
 	@Parse::CPAN::Meta::ISA       = qw{ Exporter      };
 	@Parse::CPAN::Meta::EXPORT_OK = qw{ Load LoadFile };
 }
@@ -25,19 +35,7 @@
 );
 
 
-my %BOM = (                                                       
-	"\357\273\277" => 'UTF-8',                                    
-	"\376\377"     => 'UTF-16BE',                                 
-	"\377\376"     => 'UTF-16LE',                                 
-	"\0\0\376\377" => 'UTF-32BE',                                 
-	"\377\376\0\0" => 'UTF-32LE'                                  
-);                                                                
-                                                                  
-sub BOM_MIN_LENGTH () { 2 }                                       
-sub BOM_MAX_LENGTH () { 4 }                                       
-sub HAVE_UTF8      () { $] >= 5.007003 }                          
-                                                                  
-BEGIN { require utf8 if HAVE_UTF8 }
+
 
 
 #####################################################################
@@ -54,9 +52,14 @@
 
 	# Slurp in the file
 	local $/ = undef;
-	open( CFG, $file ) or croak("Failed to open file '$file': $!");
+	local *CFG;
+	unless ( open( CFG, $file ) ) {
+		croak("Failed to open file '$file': $!");
+	}
 	my $yaml = <CFG>;
-	close CFG          or croak("Failed to close file '$file': $!");
+	unless ( close(CFG) ) {
+		croak("Failed to close file '$file': $!");
+	}
 
 	# Hand off to the actual parser
 	Load( $yaml );
@@ -65,49 +68,54 @@
 # Parse a document from a string.
 # Doing checks on $_[0] prevents us having to do a string copy.
 sub Load ($) {
-
-	my $str = $_[0];
-
-	# Handle special cases
-	foreach my $length ( BOM_MIN_LENGTH .. BOM_MAX_LENGTH ) {
-		if ( my $enc = $BOM{substr($str, 0, $length)} ) {
-			croak("Stream has a non UTF-8 BOM") unless $enc eq 'UTF-8';
-			substr($str, 0, $length) = ''; # strip UTF-8 bom if found, we'll just ignore it
-		}
-	}
-
-	if ( HAVE_UTF8 ) {
-		utf8::decode($str); # try to decode as utf8
-	}
-
-	unless ( defined $str ) {
-		croak("Did not provide a string to Load");
-	}
-	return() unless length $str;
-	unless ( $str =~ /[\012\015]+$/ ) {
+	my $string = $_[0];
+	unless ( defined $string ) {
+		croak("Did not provide a string to load");
+	}
+
+	# 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//;
+	}
+
+	# Try to decode as utf8
+	utf8::decode($string) if HAVE_UTF8;
+
+	# Check for some special cases
+	return () unless length $string;
+	unless ( $string =~ /[\012\015]+\z/ ) {
 		croak("Stream does not end with newline character");
 	}
 
 	# Split the file into lines
-	my @lines = grep { ! /^\s*(?:\#.*)?$/ }
-	            split /(?:\015{1,2}\012|\015|\012)/, $str;
+	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*)?$/ ) {
+		if ( $lines[0] =~ /^---\s*(?:(.+)\s*)?\z/ ) {
 			# Handle scalar documents
 			shift @lines;
-			if ( defined $1 and $1 !~ /^(?:\#.+|\%YAML:[\d\.]+)$/ ) {
+			if ( defined $1 and $1 !~ /^(?:\#.+|\%YAML[: ][\d\.]+)\z/ ) {
 				push @documents, _scalar( "$1", [ undef ], \@lines );
 				next;
 			}
 		}
 
-		if ( ! @lines or $lines[0] =~ /^---\s*(?:(.+)\s*)?$/ ) {
+		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
@@ -115,14 +123,14 @@
 			push @documents, $document;
 			_array( $document, [ 0 ], \@lines );
 
-		} elsif ( $lines[0] =~ /^(\s*)\w/ ) {
+		} 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 does not support the line '$lines[0]'");
+			croak("Parse::CPAN::Meta failed to classify line '$lines[0]'");
 		}
 	}
 
@@ -135,55 +143,48 @@
 
 # Deparse a scalar string to the actual scalar
 sub _scalar ($$$) {
-	my $string = shift;
-	my $indent = shift;
-	my $lines  = shift;
+	my ($string, $indent, $lines) = @_;
 
 	# Trim trailing whitespace
-	$string =~ s/\s*$//;
+	$string =~ s/\s*\z//;
 
 	# Explitic null/undef
 	return undef if $string eq '~';
 
 	# Quotes
-	if ( $string =~ /^\'(.*?)\'$/ ) {
+	if ( $string =~ /^\'(.*?)\'\z/ ) {
 		return '' unless defined $1;
-		my $rv = $1;
-		$rv =~ s/\'\'/\'/g;
-		return $rv;
-	}
-	if ( $string =~ /^\"((?:\\.|[^\"])*)\"$/ ) {
-		my $str = $1;
-		$str =~ s/\\"/"/g;
-		$str =~ s/\\([never\\fartz]|x([0-9a-fA-F]{2}))/(length($1)>1)?pack("H2",$2):$UNESCAPES{$1}/gex;
-		return $str;
-	}
-	if ( $string =~ /^[\'\"]/ ) {
-		# A quote with folding... we don't support that
-		croak("Parse::CPAN::Meta does not support multi-line quoted scalars");
-	}
-
-	# Null hash and array
-	if ( $string eq '{}' ) {
-		# Null hash
-		return {};		
-	}
-	if ( $string eq '[]' ) {
-		# Null array
-		return [];
-	}
+		$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 '[]';
 
 	# Regular unquoted string
 	return $string unless $string =~ /^[>|]/;
 
 	# Error
-	croak("Multi-line scalar content missing") unless @$lines;
+	croak("Parse::CPAN::Meta failed to find multi-line scalar content") unless @$lines;
 
 	# Check the indent depth
-	$lines->[0] =~ /^(\s*)/;
+	$lines->[0]   =~ /^(\s*)/;
 	$indent->[-1] = length("$1");
 	if ( defined $indent->[-2] and $indent->[-1] <= $indent->[-2] ) {
-		croak("Illegal line indenting");
+		croak("Parse::CPAN::Meta found bad indenting in line '$lines->[0]'");
 	}
 
 	# Pull the lines
@@ -195,26 +196,29 @@
 	}
 
 	my $j = (substr($string, 0, 1) eq '>') ? ' ' : "\n";
-	my $t = (substr($string, 1, 1) eq '-') ? '' : "\n";
+	my $t = (substr($string, 1, 1) eq '-') ? ''  : "\n";
 	return join( $j, @multiline ) . $t;
 }
 
 # Parse an array
 sub _array ($$$) {
-	my $array  = shift;
-	my $indent = shift;
-	my $lines  = shift;
+	my ($array, $indent, $lines) = @_;
 
 	while ( @$lines ) {
 		# Check for a new document
-		return 1 if $lines->[0] =~ /^---\s*(?:(.+)\s*)?$/;
+		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("Hash line over-indented");
+			croak("Parse::CPAN::Meta found bad indenting in line '$lines->[0]'");
 		}
 
 		if ( $lines->[0] =~ /^(\s*\-\s+)[^\'\"]\S*\s*:(?:\s+|$)/ ) {
@@ -224,12 +228,12 @@
 			push @$array, { };
 			_hash( $array->[-1], [ @$indent, $indent2 ], $lines );
 
-		} elsif ( $lines->[0] =~ /^\s*\-(\s*)(.+?)\s*$/ ) {
+		} 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*$/ ) {
+		} elsif ( $lines->[0] =~ /^\s*\-\s*\z/ ) {
 			shift @$lines;
 			unless ( @$lines ) {
 				push @$array, undef;
@@ -246,12 +250,12 @@
 					_array( $array->[-1], [ @$indent, $indent2 ], $lines );
 				}
 
-			} elsif ( $lines->[0] =~ /^(\s*)\w/ ) {
+			} elsif ( $lines->[0] =~ /^(\s*)\S/ ) {
 				push @$array, { };
 				_hash( $array->[-1], [ @$indent, length("$1") ], $lines );
 
 			} else {
-				croak("Parse::CPAN::Meta does not support the line '$lines->[0]'");
+				croak("Parse::CPAN::Meta failed to classify line '$lines->[0]'");
 			}
 
 		} elsif ( defined $indent->[-2] and $indent->[-1] == $indent->[-2] ) {
@@ -265,7 +269,7 @@
 			return 1;
 
 		} else {
-			croak("Parse::CPAN::Meta does not support the line '$lines->[0]'");
+			croak("Parse::CPAN::Meta failed to classify line '$lines->[0]'");
 		}
 	}
 
@@ -274,25 +278,31 @@
 
 # Parse an array
 sub _hash ($$$) {
-	my $hash   = shift;
-	my $indent = shift;
-	my $lines  = shift;
+	my ($hash, $indent, $lines) = @_;
 
 	while ( @$lines ) {
 		# Check for a new document
-		return 1 if $lines->[0] =~ /^---\s*(?:(.+)\s*)?$/;
+		if ( $lines->[0] =~ /^(?:---|\.\.\.)/ ) {
+			while ( @$lines and $lines->[0] !~ /^---/ ) {
+				shift @$lines;
+			}
+			return 1;
+		}
 
 		# Check the indent level
-		$lines->[0] =~/^(\s*)/;
+		$lines->[0] =~ /^(\s*)/;
 		if ( length($1) < $indent->[-1] ) {
 			return 1;
 		} elsif ( length($1) > $indent->[-1] ) {
-			croak("Hash line over-indented");
+			croak("Parse::CPAN::Meta found bad indenting in line '$lines->[0]'");
 		}
 
 		# Get the key
-		unless ( $lines->[0] =~ s/^\s*([^\'\"][^\n]*?)\s*:(\s+|$)// ) {
-			croak("Bad hash line");
+		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;
 
@@ -300,26 +310,25 @@
 		if ( length $lines->[0] ) {
 			# Yes
 			$hash->{$key} = _scalar( shift(@$lines), [ @$indent, undef ], $lines );
-			next;
-		}
-
-		# 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
+		} else {
+			# An indent
+			shift @$lines;
+			unless ( @$lines ) {
 				$hash->{$key} = undef;
-			} else {
-				$hash->{$key} = {};
-				_hash( $hash->{$key}, [ @$indent, length($1) ], $lines );
+				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 );
+				}
 			}
 		}
 	}
@@ -367,34 +376,36 @@
 
 =head1 DESCRIPTION
 
-B<Parse::CPAN::Meta> is a parser for META.yml files, based on the
+B<Parse::CPAN::Meta> is a parser for F<META.yml> files, based on the
 parser half of L<YAML::Tiny>.
 
 It supports a basic subset of the full YAML specification, enough to
-implement parsing of typical META.yml files, and other similarly simple
+implement parsing of typical F<META.yml> files, and other similarly simple
 YAML files.
 
 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>.
 
-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.
-
-All error reporting is done with exceptions (dieing).
+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.
+
+All error reporting is done with exceptions (die'ing).
 
 =head1 FUNCTIONS
 
 For maintenance clarity, no functions are exported.
 
-=head2 Load( $string )
-
-  my @documents = Load( $string );
+=head2 Load
+
+  my @yaml = Load( $string );
 
 Parses a string containing a valid YAML stream into a list of Perl data
 structures.
 
-=head2 LoadFile( $file_name )
+=head2 LoadFile
+
+  my @yaml = LoadFile( 'META.yml' );
 
 Reads the YAML stream from a file instead of a string.
 
@@ -410,7 +421,8 @@
 
 =head1 SEE ALSO
 
-L<YAML::Tiny>, L<YAML>, L<YAML::Syck>
+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
 

Modified: trunk/libparse-cpan-meta-perl/t/02_basic.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/02_basic.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/02_basic.t (original)
+++ trunk/libparse-cpan-meta-perl/t/02_basic.t Sun May 17 20:33:53 2009
@@ -56,26 +56,31 @@
 	"---\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
@@ -110,6 +115,7 @@
 	"---\n- ~\n- bar\n",
 	[ [ undef, 'bar' ] ],
 	'one_listundef',
+	noyamlperl => 1,
 );
 
 # Simple hashs
@@ -123,6 +129,7 @@
 	"---\nfoo: bar\nthis: ~\n",
 	[ { this => undef, foo => 'bar' } ],
  	'one_hash2',
+	noyamlperl => 1,
 );
 
 # Simple array inside a hash with an undef
@@ -136,6 +143,7 @@
 END_YAML
 	[ { foo => [ 'bar', undef, 'baz' ] } ],
 	'array_in_hash',
+	noyamlperl => 1,
 );
 
 # Simple hash inside a hash with an undef
@@ -148,6 +156,7 @@
 END_YAML
 	[ { foo => undef, bar => { foo => 'bar' } } ],
 	'hash_in_hash',
+	noyamlperl => 1,
 );
 
 # Mixed hash and scalars inside an array
@@ -170,6 +179,7 @@
 		{ foo => 'bar', this => 'that' },
 	] ],
 	'hash_in_array',
+	noyamlperl => 1,
 );
 
 # Simple single quote
@@ -194,12 +204,16 @@
 	"--- \"  \"\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
@@ -225,6 +239,7 @@
 END_YAML
 	[ [ undef, { foo => 'bar', this => 'that' }, 'baz' ] ],
 	'inline_nested_hash',
+	noyamlperl => 1,
 );
 
 # Empty comments

Modified: trunk/libparse-cpan-meta-perl/t/03_regression.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/03_regression.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/03_regression.t (original)
+++ trunk/libparse-cpan-meta-perl/t/03_regression.t Sun May 17 20:33:53 2009
@@ -20,7 +20,7 @@
 
 use File::Spec::Functions ':ALL';
 use Parse::CPAN::Meta::Test;
-use Test::More tests(20);
+use Test::More tests(37);
 
 
 
@@ -62,42 +62,91 @@
 );
 
 # Piped multi-line scalar
-yaml_ok( <<'END_YAML', [ [ "foo\nbar\n", 1 ] ], 'indented', nosyck => 1 );
+yaml_ok(
+	<<'END_YAML',
 ---
 - |
   foo
   bar
 - 1
 END_YAML
+	[ [ "foo\nbar\n", 1 ] ],
+	'indented',
+);
 
 # ... with a pointless hyphen
-yaml_ok( <<'END_YAML', [ [ "foo\nbar", 1 ] ], 'indented', nosyck => 1 );
+yaml_ok( <<'END_YAML',
 ---
 - |-
   foo
   bar
 - 1
 END_YAML
-
-
-
-
-
-
-#####################################################################
-# Support for YAML document version declarations
-
-# Simple case
+	[ [ "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',
-);
-
-# Multiple documents
+	'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
@@ -108,7 +157,32 @@
 foo: bar
 END_YAML
 	[ { foo => 'bar' }, [ 1 ], { foo => 'bar' } ],
-	'multi_doctype',
+	'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',
 );
 
 
@@ -192,8 +266,13 @@
   - ~
   - 'bar'  
 END_YAML
-	[ { abstract => 'Generate fractal curves', foo => undef, arr => [ 'foo', undef, 'bar' ] } ],
+	[ {
+		abstract => 'Generate fractal curves',
+		foo      => undef,
+		arr      => [ 'foo', undef, 'bar' ],
+	} ],
 	'trailing whitespace',
+	noyamlperl => 1,
 );
 
 
@@ -218,15 +297,35 @@
 
 
 #####################################################################
-# Single Quote Idiosyncracy
-
-yaml_ok(
-	<<'END_YAML',
----
-slash: '\\'
-name: 'O''Reilly'
-END_YAML
-	[ { slash => "\\\\", name => "O'Reilly" } ],
+# 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',
 );
 
@@ -246,6 +345,8 @@
 END_YAML
 	[ { foo => 0, requires => undef, build_requires => undef } ],
 	'empty hash keys',
+	noyamlpm   => 1,
+	noyamlperl => 1,
 );
 
 yaml_ok(
@@ -257,6 +358,8 @@
 END_YAML
 	[ [ 'foo', undef, undef ] ],
 	'empty array keys',
+	noyamlpm   => 1,
+	noyamlperl => 1,
 );
 
 
@@ -273,6 +376,8 @@
 END_YAML
 	[ { foo => 'bar' } ],
 	'comment header',
+	noyamlpm   => 1,
+	noyamlperl => 1,
 );
 
 
@@ -290,6 +395,163 @@
 	[ { 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" ] ],
+#);
 
 
 
@@ -308,4 +570,53 @@
 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',
+);

Modified: trunk/libparse-cpan-meta-perl/t/11_meta_yml.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/11_meta_yml.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/11_meta_yml.t (original)
+++ trunk/libparse-cpan-meta-perl/t/11_meta_yml.t Sun May 17 20:33:53 2009
@@ -20,14 +20,14 @@
 
 use File::Spec::Functions ':ALL';
 use Parse::CPAN::Meta::Test;
-use Test::More tests(8, 2);
+use Test::More tests(8, 3);
 
 
 
 
 
 #####################################################################
-# Testing YAML::Tiny's META.yml file
+# Testing YAML::Tiny's own META.yml file
 
 yaml_ok(
 	<<'END_YAML',
@@ -198,6 +198,7 @@
 		generated_by => 'ExtUtils::MakeMaker version 6.17',
 	} ],
 	'Acme-Time-Baby',
+	noyamlperl => 1,
 );
 
 
@@ -206,30 +207,6 @@
 
 #####################################################################
 # 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',
-);
 
 yaml_ok(
 	<<'END_YAML',
@@ -253,6 +230,7 @@
 		dynamic_config => '0',
 	} ],
 	'Data-Swap',
+	nosyck => 1,
 );
 
 
@@ -293,6 +271,7 @@
 			version => '1.2.1',
 		} ],
 		'Template-Provider-Unicode-Japanese',
+		noyamlperl => 1,
 	);
 }
 
@@ -314,5 +293,113 @@
 			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 at 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,
+	);
+}

Modified: trunk/libparse-cpan-meta-perl/t/12_plagger.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/12_plagger.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/12_plagger.t (original)
+++ trunk/libparse-cpan-meta-perl/t/12_plagger.t Sun May 17 20:33:53 2009
@@ -101,8 +101,8 @@
      nickname: plaggerbot
      server_host: chat.freenode.net
      server_channels:
-       - #plagger-ja
-       - #plagger
+       - '#plagger-ja'
+       - '#plagger'
 
    
 END_YAML

Modified: trunk/libparse-cpan-meta-perl/t/13_perl_smith.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/13_perl_smith.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/13_perl_smith.t (original)
+++ trunk/libparse-cpan-meta-perl/t/13_perl_smith.t Sun May 17 20:33:53 2009
@@ -153,4 +153,6 @@
 		},
 	} ],
 	'vanilla.yml',
+	nosyck     => 1,
+	noyamlperl => 1,
 );

Modified: trunk/libparse-cpan-meta-perl/t/14_yaml_org.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/14_yaml_org.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/14_yaml_org.t (original)
+++ trunk/libparse-cpan-meta-perl/t/14_yaml_org.t Sun May 17 20:33:53 2009
@@ -68,5 +68,5 @@
 END_TEXT
 	} ],
 	'sample.yml',
-
+	# nosyck => 1,
 );

Modified: trunk/libparse-cpan-meta-perl/t/15_multibyte.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/15_multibyte.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/15_multibyte.t (original)
+++ trunk/libparse-cpan-meta-perl/t/15_multibyte.t Sun May 17 20:33:53 2009
@@ -51,6 +51,3 @@
 	skip "no utf8 support", 1 unless Parse::CPAN::Meta::HAVE_UTF8();
 	ok( utf8::is_utf8($yaml[0]->{author}), "utf8 decoded" );
 }
-
-exit(0);
-

Modified: trunk/libparse-cpan-meta-perl/t/17_toolbar.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/17_toolbar.t?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/17_toolbar.t (original)
+++ trunk/libparse-cpan-meta-perl/t/17_toolbar.t Sun May 17 20:33:53 2009
@@ -55,4 +55,5 @@
 		]
 	} ],
 	'toolbar.yml',
+	noyamlperl => 1,
 );

Modified: trunk/libparse-cpan-meta-perl/t/lib/Parse/CPAN/Meta/Test.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libparse-cpan-meta-perl/t/lib/Parse/CPAN/Meta/Test.pm?rev=35594&op=diff
==============================================================================
--- trunk/libparse-cpan-meta-perl/t/lib/Parse/CPAN/Meta/Test.pm (original)
+++ trunk/libparse-cpan-meta-perl/t/lib/Parse/CPAN/Meta/Test.pm Sun May 17 20:33:53 2009
@@ -9,7 +9,10 @@
 BEGIN {
 	require Exporter;
 	@ISA    = qw{ Exporter };
-	@EXPORT = qw{ tests  yaml_ok  slurp  load_ok  test_data_directory };
+	@EXPORT = qw{
+		tests  yaml_ok  yaml_error  slurp  load_ok
+		test_data_directory
+	};
 }
 
 sub test_data_directory {
@@ -53,6 +56,12 @@
 	return 1;
 }
 
+sub yaml_error {
+	my $string = shift;
+	my $yaml   = eval { Parse::CPAN::Meta::Load( $string ); };
+	Test::More::like( $@, qr/$_[0]/, "YAML::Tiny throws expected error" );
+}
+
 sub slurp {
 	my $file = shift;
 	local $/ = undef;




More information about the Pkg-perl-cvs-commits mailing list