diff options
Diffstat (limited to 'cpan/version')
-rw-r--r-- | cpan/version/lib/version/vpp.pm | 5 | ||||
-rw-r--r-- | cpan/version/t/coretests.pm | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/cpan/version/lib/version/vpp.pm b/cpan/version/lib/version/vpp.pm index f6153a6c49..c879c398c8 100644 --- a/cpan/version/lib/version/vpp.pm +++ b/cpan/version/lib/version/vpp.pm @@ -674,6 +674,11 @@ sub new $qv = TRUE; } + if (ref($value) =~ m/ARRAY|HASH/) { + require Carp; + Carp::croak("Invalid version format (non-numeric data)"); + } + $value = _un_vstring($value); # exponential notation diff --git a/cpan/version/t/coretests.pm b/cpan/version/t/coretests.pm index b7b690aa8c..17bf9ec5fc 100644 --- a/cpan/version/t/coretests.pm +++ b/cpan/version/t/coretests.pm @@ -30,6 +30,10 @@ sub BaseTests { $version = $CLASS->$method(1.23); is ( "$version" , "1.23" , '1.23 eq "1.23"' ); + # Test explicit integer + $version = $CLASS->$method(23); + is ( "$version" , 23 , '23 eq "23"' ); + # Test quoted number processing $version = $CLASS->$method("5.005_03"); is ( "$version" , "5.005_03" , '"5.005_03" eq "5.005_03"' ); @@ -582,6 +586,13 @@ SKIP: { is ref(ver->qv("1.2.3")), 'ver', 'ver can inherit from version'; } + { # discovered while integrating with bleadperl + eval {my $v = $CLASS->new([1,2,3]) }; + like $@, qr/Invalid version format/, 'Do not crash for garbage'; + eval {my $v = $CLASS->new({1 => 2}) }; + like $@, qr/Invalid version format/, 'Do not crash for garbage'; + } + } 1; |