diff -Nru libperl-minimumversion-perl-1.26/Changes libperl-minimumversion-perl-1.28/Changes --- libperl-minimumversion-perl-1.26/Changes 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/Changes 2011-03-02 01:31:34.000000000 +0000 @@ -1,12 +1,27 @@ Revision history for Perl extension Perl-MinimumVersion +1.28 Wed 2 Mar 2011 + - The ->isa in the 5.10 operator and magic variable tests were + back the front, breaking both. Fixed (ADAMK) + - Magic variable rules now check using ->symbol method instead of + ->content so that $+{foo} are correctly treated like %+ (ADAMK) + - Removed -w from tests to allow testing with Tainting on (ADAMK) + +1.27 Sat 26 Feb 2011 + - Updating to Module::Install::DSL 1.00 + - Updating copyright year + - Fix detection of binary numbers (Alexandr Ciornii) + - Add check for variables added in 5.5 (Alexandr Ciornii) + - Correct detection of different cases of '...' (Alexandr Ciornii) + - Detection of bareword that ends with double colon (Alexandr Ciornii) + 1.26 Thu 22 Jul 2010 - Detect "package NAME VERSION" in 5.12. (Steffen Mueller) - Detect "..." (yada yada yada) in 5.12. (Steffen Mueller) - Detect "use feature ':5.12';" in 5.12. (Steffen Mueller) 1.25 Sun 11 Apr 2010 - - Error in minimum_syntax_reason discovered by perl 5.12 (Alexandr Ciornii) + - Error in minimum_syntax_reason discovered by perl 5.12 (Alexandr Ciornii) 1.24 Fri 22 Jan 2010 - The previous changes seem to work well in practice now, @@ -23,36 +38,36 @@ element responsible for each limitation as P:MV:Reason (ADAMK) - Added first experimental version of the new _reason API (ADAMK) - Adding 5.8 dependency for "use Carp version ()" (ADAMK) - - module Errno requires perl 5.5 (Alexandr Ciornii) - - PPI is no longer compatible with perl 5.5, so P::MV can also - depend on 5.6 (Alexandr Ciornii) + - module Errno requires perl 5.5 (Alexandr Ciornii) + - PPI is no longer compatible with perl 5.5, so P::MV can also + depend on 5.6 (Alexandr Ciornii) - Bumping File::Find::Rule dependency to 0.32 because we break with 0.31 (ADAMK) 1.22 Wed 25 Nov 2009 - - Negative length in 'splice' requires perl 5.5 (Alexandr Ciornii) - - 'mkdir' with one argument requires perl 5.6 (Alexandr Ciornii) - - 'substr' will not be checked if it is a method name (Alexandr Ciornii) - - better tests and fix for 3-arg 'open' (Alexandr Ciornii) + - Negative length in 'splice' requires perl 5.5 (Alexandr Ciornii) + - 'mkdir' with one argument requires perl 5.6 (Alexandr Ciornii) + - 'substr' will not be checked if it is a method name (Alexandr Ciornii) + - better tests and fix for 3-arg 'open' (Alexandr Ciornii) 1.21 Tue 24 Nov 2009 - - Add 'bytes' to 5.6 pragma (Alexandr Ciornii) - - Add support for "version numbers" like "v1.1.1" (Alexandr Ciornii) - - Reimplement _three_argument_open, more tests (Alexandr Ciornii) - Now check for 3-arg open is working. - - Check 4-arg substr that requires perl 5.5 (Alexandr Ciornii) - - Postfix foreach requires perl 5.004.05 (Alexandr Ciornii) - - Scalar::Util::weaken requires perl 5.006 (Alexandr Ciornii) - - P::MV itself found incompatibility in 02_main.t with 5.5 (Alexandr Ciornii) + - Add 'bytes' to 5.6 pragma (Alexandr Ciornii) + - Add support for "version numbers" like "v1.1.1" (Alexandr Ciornii) + - Reimplement _three_argument_open, more tests (Alexandr Ciornii) + Now check for 3-arg open is working. + - Check 4-arg substr that requires perl 5.5 (Alexandr Ciornii) + - Postfix foreach requires perl 5.004.05 (Alexandr Ciornii) + - Scalar::Util::weaken requires perl 5.006 (Alexandr Ciornii) + - P::MV itself found incompatibility in 02_main.t with 5.5 (Alexandr Ciornii) 1.20 Sat 4 Apr 2009 - Change 5.005_03 to 5.005.05 (ADAMK) - - 5.8 and 5.6 pragmas (Alexandr Ciornii) - - Fixed error in perlver/find (Alexandr Ciornii) - - CPAN::Exception should not trigger dependency on 5.5 (Alexandr Ciornii) - - Added undocumented option 'explain' in perlver (Alexandr Ciornii) - - CHECK blocks (Alexandr Ciornii) - - First implementation of _three_argument_open and tests (Alexandr Ciornii) + - 5.8 and 5.6 pragmas (Alexandr Ciornii) + - Fixed error in perlver/find (Alexandr Ciornii) + - CPAN::Exception should not trigger dependency on 5.5 (Alexandr Ciornii) + - Added undocumented option 'explain' in perlver (Alexandr Ciornii) + - CHECK blocks (Alexandr Ciornii) + - First implementation of _three_argument_open and tests (Alexandr Ciornii) 1.19 Sun 14 Sep 2008 - Updating PPI and several other dependencies to get a more diff -Nru libperl-minimumversion-perl-1.26/debian/changelog libperl-minimumversion-perl-1.28/debian/changelog --- libperl-minimumversion-perl-1.26/debian/changelog 2010-07-22 16:29:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/debian/changelog 2011-03-04 20:38:25.000000000 +0000 @@ -1,3 +1,29 @@ +libperl-minimumversion-perl (1.28-1) unstable; urgency=low + + [ Jonathan Yu ] + * New upstream release + * Bump debhelper compat to 8 + * Refresh copyright information + * Standards-Version 3.9.1 + * Drop version dependencies satisfied in oldstable + + [ Ansgar Burchardt ] + * Email change: Ansgar Burchardt -> ansgar@debian.org + + [ Salvatore Bonaccorso ] + * Email change: Salvatore Bonaccorso -> carnil@debian.org + * debian/control: + - Make versioned (Build-)Depends(-Indep) on libparams-util-perl + unversioned as version already satisfied in oldstable. + - Make verisoned (Build-)Depends(-Indep) on libtest-script-perl and + libfile-find-rule-perl-perl unversioned as both not in oldstable + and already satisfied in squeeze. + - Make (Build-)Depends(-Indep) on perl versioned to perl (>= + 5.10.1). + * debian/copyright: Update copyright years for debian/* packaging. + + -- Salvatore Bonaccorso Fri, 04 Mar 2011 21:38:21 +0100 + libperl-minimumversion-perl (1.26-1) unstable; urgency=low * New upstream release. diff -Nru libperl-minimumversion-perl-1.26/debian/compat libperl-minimumversion-perl-1.28/debian/compat --- libperl-minimumversion-perl-1.26/debian/compat 2008-08-21 00:02:57.000000000 +0000 +++ libperl-minimumversion-perl-1.28/debian/compat 2011-03-04 20:31:00.000000000 +0000 @@ -1 +1 @@ -7 +8 diff -Nru libperl-minimumversion-perl-1.26/debian/control libperl-minimumversion-perl-1.28/debian/control --- libperl-minimumversion-perl-1.26/debian/control 2010-07-14 17:15:13.000000000 +0000 +++ libperl-minimumversion-perl-1.28/debian/control 2011-03-04 20:31:00.000000000 +0000 @@ -1,29 +1,37 @@ Source: libperl-minimumversion-perl -Section: perl -Priority: optional -Build-Depends: debhelper (>= 7) -Build-Depends-Indep: perl, libppi-perl (>= 1.205), libfile-find-rule-perl (>= 0.32), - libparams-util-perl (>= 0.25), libfile-find-rule-perl-perl (>= 1.04), - libtest-script-perl (>= 1.03), - perl (>= 5.10) | libversion-perl (>= 0.74), - libperl-critic-perl (>= 1.104) Maintainer: Debian Perl Group Uploaders: Vincent Danjean , - Ansgar Burchardt , Damyan Ivanov , - Jonathan Yu , Brian Cassidy , - Salvatore Bonaccorso , - gregor herrmann -Standards-Version: 3.9.0 -Homepage: http://search.cpan.org/dist/Perl-MinimumVersion/ -Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libperl-minimumversion-perl/ + Ansgar Burchardt , + Damyan Ivanov , + Jonathan Yu , + Brian Cassidy , + Salvatore Bonaccorso , + gregor herrmann +Section: perl +Priority: optional +Build-Depends: debhelper (>= 8) +Build-Depends-Indep: libfile-find-rule-perl (>= 0.32), + libfile-find-rule-perl-perl, + libparams-util-perl, + libperl-critic-perl (>= 1.104), + libppi-perl (>= 1.215), + libtest-script-perl, + perl (>= 5.10.1) +Standards-Version: 3.9.1 Vcs-Browser: http://svn.debian.org/viewsvn/pkg-perl/trunk/libperl-minimumversion-perl/ +Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libperl-minimumversion-perl/ +Homepage: http://search.cpan.org/dist/Perl-MinimumVersion/ Package: libperl-minimumversion-perl Architecture: all -Depends: ${misc:Depends}, ${perl:Depends}, libppi-perl (>= 1.205), - perl (>= 5.10) | libversion-perl (>= 0.74), libfile-find-rule-perl (>= 0.32), - libfile-find-rule-perl-perl, libparams-util-perl (>= 0.25), - libperl-critic-perl (>= 1.104) +Depends: ${misc:Depends}, + ${perl:Depends}, + libfile-find-rule-perl (>= 0.32), + libfile-find-rule-perl-perl, + libparams-util-perl, + libperl-critic-perl (>= 1.104), + libppi-perl (>= 1.215), + perl (>= 5.10.1) Description: module to determine minimum required version of perl required Perl::MinimumVersion is a module that inspects arbitrary Perl source code and determines the minimum version of perl required to be able to run it. Because diff -Nru libperl-minimumversion-perl-1.26/debian/copyright libperl-minimumversion-perl-1.28/debian/copyright --- libperl-minimumversion-perl-1.26/debian/copyright 2010-07-22 16:29:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/debian/copyright 2011-03-04 20:31:00.000000000 +0000 @@ -3,7 +3,7 @@ Source: http://search.cpan.org/dist/Perl-MinimumVersion/ Name: Perl-MinimumVersion -Copyright: 2005-2010, Adam Kennedy +Copyright: 2005-2011, Adam Kennedy License: Artistic or GPL-1+ Files: inc/Module/* @@ -15,10 +15,10 @@ Files: debian/* Copyright: 2008, Damyan Ivanov 2008, Vincent Danjean - 2009, Ansgar Burchardt - 2009, Jonathan Yu + 2009, Ansgar Burchardt + 2009-2011, Jonathan Yu 2010, Brian Cassidy - 2010, Salvatore Bonaccorso + 2010, 2011, Salvatore Bonaccorso 2010, gregor herrmann License: Artistic or GPL-1+ @@ -26,8 +26,8 @@ This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License, which comes with Perl. . - On Debian GNU/Linux systems, the complete text of the Artistic License - can be found in `/usr/share/common-licenses/Artistic' + On Debian systems, the complete text of the Artistic License can be + found in `/usr/share/common-licenses/Artistic' License: GPL-1+ This program is free software; you can redistribute it and/or modify @@ -35,5 +35,5 @@ the Free Software Foundation; either version 1, or (at your option) any later version. . - On Debian GNU/Linux systems, the complete text of the GNU General - Public License can be found in `/usr/share/common-licenses/GPL' + On Debian systems, the complete text of version 1 of the GNU General + Public License can be found in `/usr/share/common-licenses/GPL-1' diff -Nru libperl-minimumversion-perl-1.26/inc/Module/Install/DSL.pm libperl-minimumversion-perl-1.28/inc/Module/Install/DSL.pm --- libperl-minimumversion-perl-1.26/inc/Module/Install/DSL.pm 1970-01-01 00:00:00.000000000 +0000 +++ libperl-minimumversion-perl-1.28/inc/Module/Install/DSL.pm 2011-03-02 01:32:14.000000000 +0000 @@ -0,0 +1,94 @@ +#line 1 +package Module::Install::DSL; + +use strict; +use vars qw{$VERSION $ISCORE}; +BEGIN { + $VERSION = '1.00'; + $ISCORE = 1; + *inc::Module::Install::DSL::VERSION = *VERSION; + @inc::Module::Install::DSL::ISA = __PACKAGE__; +} + +sub import { + # Read in the rest of the Makefile.PL + open 0 or die "Couldn't open $0: $!"; + my $dsl; + SCOPE: { + local $/ = undef; + $dsl = join "", <0>; + } + + # Change inc::Module::Install::DSL to the regular one. + # Remove anything before the use inc::... line. + $dsl =~ s/.*?^\s*use\s+(?:inc::)?Module::Install::DSL(\b[^;]*);\s*\n//sm; + + # Load inc::Module::Install as we would in a regular Makefile.Pl + SCOPE: { + package main; + require inc::Module::Install; + inc::Module::Install->import; + } + + # Add the ::DSL plugin to the list of packages in /inc + my $admin = $Module::Install::MAIN->{admin}; + if ( $admin ) { + my $from = $INC{"$admin->{path}/DSL.pm"}; + my $to = "$admin->{base}/$admin->{prefix}/$admin->{path}/DSL.pm"; + $admin->copy( $from => $to ); + } + + # Convert the basic syntax to code + my $code = "INIT {\n" + . "package main;\n\n" + . dsl2code($dsl) + . "\n\nWriteAll();\n" + . "}\n"; + + # Execute the script + eval $code; + print STDERR "Failed to execute the generated code...\n$@" if $@; + + exit(0); +} + +sub dsl2code { + my $dsl = shift; + + # Split into lines and strip blanks + my @lines = grep { /\S/ } split /[\012\015]+/, $dsl; + + # Each line represents one command + my @code = (); + foreach my $line ( @lines ) { + # Split the lines into tokens + my @tokens = split /\s+/, $line; + + # The first word is the command + my $command = shift @tokens; + my @params = (); + my @suffix = (); + while ( @tokens ) { + my $token = shift @tokens; + if ( $token eq 'if' or $token eq 'unless' ) { + # This is the beginning of a suffix + push @suffix, $token; + push @suffix, @tokens; + last; + } else { + # Convert to a string + $token =~ s/([\\\'])/\\$1/g; + push @params, "'$token'"; + } + }; + + # Merge to create the final line of code + @tokens = ( $command, @params ? join( ', ', @params ) : (), @suffix ); + push @code, join( ' ', @tokens ) . ";\n"; + } + + # Join into the complete code block + return join( '', @code ); +} + +1; diff -Nru libperl-minimumversion-perl-1.26/inc/Module/Install/With.pm libperl-minimumversion-perl-1.28/inc/Module/Install/With.pm --- libperl-minimumversion-perl-1.26/inc/Module/Install/With.pm 2010-07-21 23:59:17.000000000 +0000 +++ libperl-minimumversion-perl-1.28/inc/Module/Install/With.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -#line 1 -package Module::Install::With; - -# See POD at end for docs - -use strict; -use Module::Install::Base (); - -use vars qw{$VERSION @ISA $ISCORE}; -BEGIN { - $VERSION = '1.00'; - @ISA = 'Module::Install::Base'; - $ISCORE = 1; -} - - - - - -##################################################################### -# Installer Target - -# Are we targeting ExtUtils::MakeMaker (running as Makefile.PL) -sub eumm { - !! ($0 =~ /Makefile.PL$/i); -} - -# You should not be using this, but we'll keep the hook anyways -sub mb { - !! ($0 =~ /Build.PL$/i); -} - - - - - -##################################################################### -# Testing and Configuration Contexts - -#line 49 - -sub interactive { - # Treat things interactively ONLY based on input - !! (-t STDIN and ! automated_testing()); -} - -#line 67 - -sub automated_testing { - !! $ENV{AUTOMATED_TESTING}; -} - -#line 86 - -sub release_testing { - !! $ENV{RELEASE_TESTING}; -} - -sub author_context { - !! $Module::Install::AUTHOR; -} - - - - - -##################################################################### -# Operating System Convenience - -#line 114 - -sub win32 { - !! ($^O eq 'MSWin32'); -} - -#line 131 - -sub winlike { - !! ($^O eq 'MSWin32' or $^O eq 'cygwin'); -} - -1; - -#line 159 diff -Nru libperl-minimumversion-perl-1.26/lib/Perl/MinimumVersion/Reason.pm libperl-minimumversion-perl-1.28/lib/Perl/MinimumVersion/Reason.pm --- libperl-minimumversion-perl-1.26/lib/Perl/MinimumVersion/Reason.pm 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/lib/Perl/MinimumVersion/Reason.pm 2011-03-02 01:31:34.000000000 +0000 @@ -10,10 +10,10 @@ use vars qw{$VERSION}; BEGIN { - $VERSION = '1.26'; + $VERSION = '1.28'; # Only needed for dev releases, comment out otherwise - $VERSION = eval $VERSION; + # $VERSION = eval $VERSION; } sub new { diff -Nru libperl-minimumversion-perl-1.26/lib/Perl/MinimumVersion.pm libperl-minimumversion-perl-1.28/lib/Perl/MinimumVersion.pm --- libperl-minimumversion-perl-1.26/lib/Perl/MinimumVersion.pm 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/lib/Perl/MinimumVersion.pm 2011-03-02 01:31:34.000000000 +0000 @@ -12,7 +12,7 @@ $object = Perl::MinimumVersion->new( $filename ); $object = Perl::MinimumVersion->new( \$source ); $object = Perl::MinimumVersion->new( $ppi_document ); - + # Find the minimum version $version = $object->minimum_version; @@ -50,14 +50,12 @@ use Perl::MinimumVersion::Reason (); -use constant REASON => 'Perl::MinimumVersion::Reason'; - use vars qw{$VERSION @ISA @EXPORT_OK %CHECKS %MATCHES}; BEGIN { - $VERSION = '1.26'; + $VERSION = '1.28'; # Only needed for dev releases, comment out otherwise - $VERSION = eval $VERSION; + # $VERSION = eval $VERSION; # Export the PMV convenience constant @ISA = 'Exporter'; @@ -104,6 +102,8 @@ _any_INIT_blocks => version->new('5.005'), _substr_4_arg => version->new('5.005'), _splice_negative_length => version->new('5.005'), + _5005_variables => version->new('5.005'), + _bareword_ends_with_double_colon => version->new('5.005'), _postfix_foreach => version->new('5.004.05'), ); @@ -515,7 +515,12 @@ sub _yada_yada_yada { shift->Document->find_first( sub { $_[1]->isa('PPI::Token::Operator') - and $_[1]->content eq '...' + and $_[1]->content eq '...' or return ''; + my @child = $_[1]->parent->schildren; + @child == 1 and return 1; + if (@child == 2) { + $child[1]->isa('PPI::Token::Structure') + } } ); } @@ -554,7 +559,7 @@ sub _perl_5010_operators { shift->Document->find_first( sub { - $_[1]->isa('PPI::Token::Magic') + $_[1]->isa('PPI::Token::Operator') and $MATCHES{_perl_5010_operators}->{$_[1]->content} } ); @@ -562,9 +567,9 @@ sub _perl_5010_magic { shift->Document->find_first( sub { - $_[1]->isa('PPI::Token::Operator') + $_[1]->isa('PPI::Token::Magic') and - $MATCHES{_perl_5010_magic}->{$_[1]->content} + $MATCHES{_perl_5010_magic}->{$_[1]->symbol} } ); } @@ -582,13 +587,13 @@ $Document->find_any( sub { $_[1]->isa('PPI::Token::Magic') and - $_[1]->content eq '$^E' + $_[1]->symbol eq '$^E' } ) and $Document->find_any( sub { $_[1]->isa('PPI::Token::Magic') and - $_[1]->content eq '$!' + $_[1]->symbol eq '$!' } ); } @@ -661,18 +666,14 @@ sub _any_binary_literals { shift->Document->find_first( sub { - $_[1]->isa('PPI::Token::Number') - and - $_[1]->{_subtype} - and - $_[1]->{_subtype} eq 'binary' - } ); + $_[1]->isa('PPI::Token::Number::Binary') + } ); } sub _any_version_literals { shift->Document->find_first( sub { $_[1]->isa('PPI::Token::Number::Version') - } ); + } ); } @@ -680,7 +681,7 @@ shift->Document->find_first( sub { $_[1]->isa('PPI::Token::Magic') and - $_[1]->content eq '$^V' + $_[1]->symbol eq '$^V' } ); } @@ -805,10 +806,10 @@ sub _three_argument_open { shift->Document->find_first( sub { - $_[1]->isa('PPI::Statement') or return ''; - my @children=$_[1]->children; + $_[1]->isa('PPI::Statement') or return ''; + my @children = $_[1]->children; #@children >= 7 or return ''; - my $main_element=$children[0]; + my $main_element = $children[0]; $main_element->isa('PPI::Token::Word') or return ''; $main_element->content eq 'open' or return ''; my @arguments = parse_arg_list($main_element); @@ -819,12 +820,11 @@ } ); } - sub _substr_4_arg { shift->Document->find_first( sub { my $main_element=$_[1]; $main_element->isa('PPI::Token::Word') or return ''; - $main_element->content eq 'substr' or return ''; + $main_element->content eq 'substr' or return ''; return '' if is_hash_key($main_element); return '' if is_method_call($main_element); return '' if is_subroutine_name($main_element); @@ -860,7 +860,7 @@ shift->Document->find_first( sub { my $main_element=$_[1]; $main_element->isa('PPI::Token::Word') or return ''; - $main_element->content eq 'splice' or return ''; + $main_element->content eq 'splice' or return ''; return '' if is_hash_key($main_element); return '' if is_method_call($main_element); return '' if is_subroutine_name($main_element); @@ -891,7 +891,7 @@ shift->Document->find_first( sub { my $main_element=$_[1]; $main_element->isa('PPI::Token::Word') or return ''; - $main_element->content eq 'foreach' or return ''; + $main_element->content eq 'foreach' or return ''; return '' if is_hash_key($main_element); return '' if is_method_call($main_element); return '' if is_subroutine_name($main_element); @@ -930,7 +930,22 @@ } ); } +sub _5005_variables { + shift->Document->find_first( sub { + $_[1]->isa('PPI::Token::Magic') + and + ($_[1]->symbol eq '$!' or $_[1]->symbol eq '$^R') + } ); +} +#added in 5.5 +sub _bareword_ends_with_double_colon { + shift->Document->find_first( sub { + $_[1]->isa('PPI::Token::Word') + and + $_[1]->content =~ /::$/ + } ); +} @@ -961,15 +976,15 @@ # Filter and prepare for a Schwartian maximum my @valid = map { - [ $_, $_->isa(REASON) ? $_->version : $_ ] + [ $_, $_->isa('Perl::MinimumVersion::Reason') ? $_->version : $_ ] } grep { - _INSTANCE($_, REASON) + _INSTANCE($_, 'Perl::MinimumVersion::Reason') or _INSTANCE($_, 'version') } @_ or return ''; # Find the maximum - my $max = shift @valid; + my $max = shift @valid; foreach my $it ( @valid ) { $max = $it if $it->[1] > $max->[1]; } @@ -1026,7 +1041,7 @@ =head1 COPYRIGHT -Copyright 2005 - 2010 Adam Kennedy. +Copyright 2005 - 2011 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libperl-minimumversion-perl-1.26/Makefile.PL libperl-minimumversion-perl-1.28/Makefile.PL --- libperl-minimumversion-perl-1.26/Makefile.PL 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/Makefile.PL 2011-03-02 01:31:34.000000000 +0000 @@ -1,19 +1,14 @@ -use inc::Module::Install 0.82; +use inc::Module::Install::DSL 1.00; -all_from 'lib/Perl/MinimumVersion.pm'; - -# Push the versioning for version.pm heavily, -# as it has been through flaky periods -requires 'version' => '0.76'; -requires 'List::Util' => winlike() ? '1.19' : '1.18'; -requires 'Params::Util' => '0.25'; -requires 'File::Find::Rule' => '0.32'; -requires 'File::Find::Rule::Perl' => '1.04'; -requires 'PPI' => '1.205'; -requires 'Perl::Critic::Utils' => '1.104'; -test_requires 'File::Spec' => '0.80'; -test_requires 'Test::More' => '0.47'; -test_requires 'Test::Script' => '1.03'; -install_script 'perlver'; - -WriteAll; +all_from lib/Perl/MinimumVersion.pm +requires version 0.76 +requires List::Util 1.20 +requires Params::Util 0.25 +requires File::Find::Rule 0.32 +requires File::Find::Rule::Perl 1.04 +requires PPI 1.215 +requires Perl::Critic::Utils 1.104 +test_requires File::Spec 0.80 +test_requires Test::More 0.47 +test_requires Test::Script 1.03 +install_script perlver diff -Nru libperl-minimumversion-perl-1.26/MANIFEST libperl-minimumversion-perl-1.28/MANIFEST --- libperl-minimumversion-perl-1.26/MANIFEST 2010-07-21 23:59:17.000000000 +0000 +++ libperl-minimumversion-perl-1.28/MANIFEST 2011-03-02 01:32:15.000000000 +0000 @@ -2,12 +2,12 @@ inc/Module/Install.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm +inc/Module/Install/DSL.pm inc/Module/Install/Fetch.pm inc/Module/Install/Makefile.pm inc/Module/Install/Metadata.pm inc/Module/Install/Scripts.pm inc/Module/Install/Win32.pm -inc/Module/Install/With.pm inc/Module/Install/WriteAll.pm lib/Perl/MinimumVersion.pm lib/Perl/MinimumVersion/Reason.pm @@ -28,6 +28,8 @@ t/09_pkg_name_version.t t/10_yada_yada_yada.t t/11_feature_bundle_512.t +t/12_double_colon.t +t/13_perl_510.t xt/meta.t xt/pmv.t xt/pod.t diff -Nru libperl-minimumversion-perl-1.26/META.yml libperl-minimumversion-perl-1.28/META.yml --- libperl-minimumversion-perl-1.26/META.yml 2010-07-21 23:59:17.000000000 +0000 +++ libperl-minimumversion-perl-1.28/META.yml 2011-03-02 01:32:15.000000000 +0000 @@ -25,8 +25,8 @@ requires: File::Find::Rule: 0.32 File::Find::Rule::Perl: 1.04 - List::Util: 1.18 - PPI: 1.205 + List::Util: 1.20 + PPI: 1.215 Params::Util: 0.25 Perl::Critic::Utils: 1.104 perl: 5.6.0 @@ -35,4 +35,4 @@ ChangeLog: http://fisheye2.atlassian.com/changelog/cpan/trunk/Perl-MinimumVersion license: http://dev.perl.org/licenses/ repository: http://svn.ali.as/cpan/trunk/Perl-MinimumVersion -version: 1.26 +version: 1.28 diff -Nru libperl-minimumversion-perl-1.26/README libperl-minimumversion-perl-1.28/README --- libperl-minimumversion-perl-1.26/README 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/README 2011-03-02 01:31:34.000000000 +0000 @@ -7,8 +7,8 @@ $object = Perl::MinimumVersion->new( $filename ); $object = Perl::MinimumVersion->new( \$source ); $object = Perl::MinimumVersion->new( $ppi_document ); - - # Find the minimum version + + # Find the minimum version $version = $object->minimum_version; DESCRIPTION @@ -147,7 +147,7 @@ , PPI, version COPYRIGHT - Copyright 2005 - 2010 Adam Kennedy. + Copyright 2005 - 2011 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libperl-minimumversion-perl-1.26/script/perlver libperl-minimumversion-perl-1.28/script/perlver --- libperl-minimumversion-perl-1.26/script/perlver 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/script/perlver 2011-03-02 01:31:34.000000000 +0000 @@ -57,7 +57,7 @@ use vars qw{$VERSION $VERBOSE $BLAME $EXPLAIN}; BEGIN { - $VERSION = '1.24'; + $VERSION = '1.28'; # Configuration globals $VERBOSE = ''; @@ -306,11 +306,13 @@ my $char = $element->column_number; my $content = $element->content; my $rule = $max->rule; + my $version = $max->version; print " ------------------------------------------------------------\n"; - print " File : $file\n"; - print " Line : $line\n"; - print " Char : $char\n"; - print " Rule : $rule\n"; + print " File : $file\n"; + print " Line : $line\n"; + print " Char : $char\n"; + print " Rule : $rule\n"; + print " Version : $version\n"; print " ------------------------------------------------------------\n"; print " $content\n"; print " ------------------------------------------------------------\n"; @@ -416,7 +418,7 @@ =head1 COPYRIGHT -Copyright 2005 - 2010 Adam Kennedy. +Copyright 2005 - 2011 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libperl-minimumversion-perl-1.26/t/02_main.t libperl-minimumversion-perl-1.28/t/02_main.t --- libperl-minimumversion-perl-1.26/t/02_main.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/02_main.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl # Main testing for Perl::MinimumVersion @@ -8,7 +8,7 @@ $^W = 1; } -use Test::More tests => 75; +use Test::More tests => 82; use version; use File::Spec::Functions ':ALL'; use PPI; @@ -158,6 +158,14 @@ END_PERL } +# Regression: binary +SCOPE: { +my $v = version_is( <<'END_PERL', '5.006', 'binary' ); +$c=0b10000001; +1; +END_PERL +} + # Check the use of constant hashes SCOPE: { my $v = version_is( <<'END_PERL', '5.008', 'constant hash adds a 5.008 dep' ); @@ -181,7 +189,7 @@ my $v = version_is( <<'END_PERL', '5.010', '"use mro" matches expected version' ); use mro 'c3'; END_PERL -ok( $v->_perl_5010_pragmas, '->_any_our_variables returns true' ); +ok( $v->_perl_5010_pragmas, '->_perl_5010_pragmas returns true' ); } # Check "version number" @@ -200,6 +208,16 @@ ok( $v->_local_soft_reference, '->_local_soft_reference returns true' ); } +# Check variables added in 5.5 +SCOPE: { +my $v = version_is( <<'END_PERL', '5.005', 'variables added in 5.5' ); +$! + $^R; +END_PERL +ok( $v->_5005_variables, '->_5005_variables returns true' ); +} + + + # Check that minimum_syntax_version's limit param is respected SCOPE: { my $doc = PPI::Document->new(\'our $x'); # requires 5.006 syntax diff -Nru libperl-minimumversion-perl-1.26/t/03_open_3arg.t libperl-minimumversion-perl-1.28/t/03_open_3arg.t --- libperl-minimumversion-perl-1.26/t/03_open_3arg.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/03_open_3arg.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/04_substr.t libperl-minimumversion-perl-1.28/t/04_substr.t --- libperl-minimumversion-perl-1.26/t/04_substr.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/04_substr.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/05_foreach.t libperl-minimumversion-perl-1.28/t/05_foreach.t --- libperl-minimumversion-perl-1.26/t/05_foreach.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/05_foreach.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/06_weaken.t libperl-minimumversion-perl-1.28/t/06_weaken.t --- libperl-minimumversion-perl-1.26/t/06_weaken.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/06_weaken.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/07_splice.t libperl-minimumversion-perl-1.28/t/07_splice.t --- libperl-minimumversion-perl-1.26/t/07_splice.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/07_splice.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/08_mkdir.t libperl-minimumversion-perl-1.28/t/08_mkdir.t --- libperl-minimumversion-perl-1.26/t/08_mkdir.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/08_mkdir.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/09_pkg_name_version.t libperl-minimumversion-perl-1.28/t/09_pkg_name_version.t --- libperl-minimumversion-perl-1.26/t/09_pkg_name_version.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/09_pkg_name_version.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { diff -Nru libperl-minimumversion-perl-1.26/t/10_yada_yada_yada.t libperl-minimumversion-perl-1.28/t/10_yada_yada_yada.t --- libperl-minimumversion-perl-1.26/t/10_yada_yada_yada.t 2010-07-21 23:58:48.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/10_yada_yada_yada.t 2011-03-02 01:31:34.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl use strict; BEGIN { @@ -12,13 +12,15 @@ use Perl::MinimumVersion; my @examples_not=( q{'foo'.'foo'}, # okay, okay, adding close examples is a TODO - q{sub foo {}}, + q/sub foo {}/, + q{1 ... 3}, #sed version of flip-flop ); my @examples_yes=( q{...}, + q{ ... }, q{...;}, - q{if(1){...}}, - q{sub foo {...}}, + q/if(1){...}/, + q/sub foo {...}/, ); plan tests =>(@examples_not+@examples_yes); foreach my $example (@examples_not) { diff -Nru libperl-minimumversion-perl-1.26/t/12_double_colon.t libperl-minimumversion-perl-1.28/t/12_double_colon.t --- libperl-minimumversion-perl-1.26/t/12_double_colon.t 1970-01-01 00:00:00.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/12_double_colon.t 2011-03-02 01:31:34.000000000 +0000 @@ -0,0 +1,34 @@ +#!/usr/bin/perl + +use strict; +BEGIN { + $| = 1; + $^W = 1; +} + +use Test::More; + +#use version; +use Perl::MinimumVersion; +my @examples_not=( + q{A::B::C}, + q{A::B}, +); +my @examples_yes=( + q{A::B::}, + q{A::}, + q{new A::B::}, + q{new A::B:: $c}, +); +plan tests =>(@examples_not+@examples_yes); +foreach my $example (@examples_not) { + my $p = Perl::MinimumVersion->new(\$example); + is( $p->_bareword_ends_with_double_colon, '', $example ) + or do { diag "\$\@: $@" if $@ }; +} +foreach my $example (@examples_yes) { + my $p = Perl::MinimumVersion->new(\$example); + ok( $p->_bareword_ends_with_double_colon, "$example - detected") + or do { diag "\$\@: $@" if $@ }; +} + diff -Nru libperl-minimumversion-perl-1.26/t/13_perl_510.t libperl-minimumversion-perl-1.28/t/13_perl_510.t --- libperl-minimumversion-perl-1.26/t/13_perl_510.t 1970-01-01 00:00:00.000000000 +0000 +++ libperl-minimumversion-perl-1.28/t/13_perl_510.t 2011-03-02 01:31:34.000000000 +0000 @@ -0,0 +1,39 @@ +#!/usr/bin/perl + +# Test Perl 5.10 features + +use strict; +BEGIN { + $| = 1; + $^W = 1; +} + +use Test::More tests => 10; +use Perl::MinimumVersion; + +# Perl 5.10 operators +SCOPE: { + my $p = Perl::MinimumVersion->new(\'$foo = 1 // 2'); + is( $p->minimum_version, '5.010', '->minimum_version ok' ); + my $m = $p->minimum_syntax_reason; + is( $m->element->content, '//', 'Matched correct element' ); + is( $m->rule, '_perl_5010_operators', 'Matched correct rule' ); +} + +# Perl 5.10 magic variables +SCOPE: { + my $p = Perl::MinimumVersion->new(\'%+ = ();'); + is( $p->minimum_version, '5.010', '->minimum_version ok' ); + my $m = $p->minimum_syntax_reason; + is( $m->element->content, '%+', 'Matched correct element' ); + is( $m->rule, '_perl_5010_magic', 'Matched correct rule' ); +} + +SCOPE: { + my $p = Perl::MinimumVersion->new(\'$+{foo} = 1;'); + is( $p->minimum_version, '5.010', '->minimum_version ok' ); + my $m = $p->minimum_syntax_reason; + is( $m->element->content, '$+', 'Matched correct element' ); + is( $m->element->symbol, '%+', 'Symbol matches expected' ); + is( $m->rule, '_perl_5010_magic', 'Matched correct rule' ); +}