Commit | Line | Data |
---|---|---|
91e53322 RGS |
1 | BEGIN { chdir 't' if -d 't' } |
2 | ||
3 | use strict; | |
4 | use lib qw[../lib]; | |
5 | use Test::More 'no_plan'; | |
6 | ||
7 | my $Class = 'Module::Load::Conditional'; | |
8 | my $Meth = '_parse_version'; | |
9 | my $Verbose = @ARGV ? 1 : 0; | |
10 | ||
11 | use_ok( $Class ); | |
12 | ||
13 | ### versions that should parse | |
14 | { for my $str ( __PACKAGE__->_succeed ) { | |
15 | my $res = $Class->$Meth( $str, $Verbose ); | |
16 | ok( defined $res, "String '$str' identified as version string" ); | |
17 | ||
18 | ### XXX version.pm 0.69 pure perl fails tests under 5.6.2. | |
19 | ### XXX version.pm <= 0.69 do not have a complete overload | |
20 | ### implementation, which causes the following error: | |
21 | ### $ perl -Mversion -le'qv(1)+0' | |
22 | ### Operation "+": no method found, | |
23 | ### left argument in overloaded package version, | |
24 | ### right argument has no overloaded magic at -e line 1 | |
25 | ### so we do the comparison ourselves, and then feed it to | |
26 | ### the Test::More::ok(). | |
27 | ### | |
28 | ### Mailed jpeacock and p5p about both issues on 25-1-2007: | |
29 | ### http://xrl.us/uem7 | |
30 | ### (http://www.xray.mpe.mpg.de/mailing-lists/ | |
31 | ### perl5-porters/2007-01/msg00805.html) | |
32 | ||
33 | ### Quell "Argument isn't numeric in gt" warnings... | |
34 | my $bool = do { local $^W; $res > 0 }; | |
35 | ||
36 | ok( $bool, " Version is '$res'" ); | |
37 | isnt( $res, '0.0', " Not the default value" ); | |
38 | } | |
39 | } | |
40 | ||
41 | ### version that should fail | |
42 | { for my $str ( __PACKAGE__->_fail ) { | |
43 | my $res = $Class->$Meth( $str, $Verbose ); | |
44 | ok( ! defined $res, "String '$str' is not a version string" ); | |
45 | } | |
46 | } | |
47 | ||
48 | ||
49 | ################################ | |
50 | ### | |
51 | ### VERSION declarations to test | |
52 | ### | |
53 | ################################ | |
54 | ||
55 | sub _succeed { | |
56 | return grep { /\S/ } map { s/^\s*//; $_ } split "\n", q[ | |
57 | $VERSION = 1; | |
58 | *VERSION = \'1.01'; | |
59 | use version; $VERSION = qv('0.0.2'); | |
60 | use version; $VERSION = qv('3.0.14'); | |
61 | ($VERSION) = '$Revision: 2.03 $' =~ /\s(\d+\.\d+)\s/; | |
62 | ( $VERSION ) = sprintf "%d.%02d", q$Revision: 1.23 $ =~ m/ (\d+) \. (\d+) /gx; | |
63 | ($GD::Graph::area::VERSION) = '$Revision: 1.16.2.3 $' =~ /\s([\d.]+)/; | |
64 | ($GD::Graph::axestype::VERSION) = '$Revision: 1.44.2.14 $' =~ /\s([\d.]+)/; | |
65 | ($GD::Graph::colour::VERSION) = '$Revision: 1.10 $' =~ /\s([\d.]+)/; | |
66 | ($GD::Graph::pie::VERSION) = '$Revision: 1.20.2.4 $' =~ /\s([\d.]+)/; | |
67 | ($GD::Text::Align::VERSION) = '$Revision: 1.18 $' =~ /\s([\d.]+)/; | |
68 | $VERSION = qv('0.0.1'); | |
69 | use version; $VERSION = qv('0.0.3'); | |
70 | $VERSION = do { my @r = ( ( $v = q<Version value="0.20.1"> ) =~ /\d+/g ); sprintf "%d.%02d", $r[0], int( $r[1] / 10 ) }; | |
71 | ($VERSION) = sprintf '%i.%03i', split(/\./,('$Revision: 2.0 $' =~ /Revision: (\S+)\s/)[0]); # $Date: 2005/11/16 02:16:00 $ | |
72 | ( $VERSION = q($Id: Tidy.pm,v 1.56 2006/07/19 23:13:33 perltidy Exp $) ) =~ s/^.*\s+(\d+)\/(\d+)\/(\d+).*$/$1$2$3/; # all one line for MakeMaker | |
73 | ($VERSION) = q $Revision: 2.120 $ =~ /([\d.]+)/; | |
74 | ($VERSION) = q$Revision: 1.00 $ =~ /([\d.]+)/; | |
3fa779ab JB |
75 | $VERSION = "3.0.8"; |
76 | $VERSION = '1.0.5'; | |
91e53322 RGS |
77 | ]; |
78 | } | |
79 | ||
80 | sub _fail { | |
81 | return grep { /\S/ } map { s/^\s*//; $_ } split "\n", q[ | |
82 | use vars qw($VERSION $AUTOLOAD %ERROR $ERROR $Warn $Die); | |
83 | sub version { $GD::Graph::colour::VERSION } | |
84 | my $VERS = qr{ $HWS VERSION $HWS \n }xms; | |
85 | diag( "Testing $main_module \$${main_module}::VERSION" ); | |
86 | our ( $VERSION, $v, $_VERSION ); | |
87 | my $seen = { q{::} => { 'VERSION' => 1 } }; # avoid multiple scans | |
88 | eval "$module->VERSION" | |
89 | 'VERSION' => '1.030' # Variable and Value | |
90 | 'VERSION' => '2.121_020' | |
91 | 'VERSION' => '0.050', # Standard variable $VERSION | |
92 | use vars qw( $VERSION $seq @FontDirs ); | |
93 | $VERSION | |
94 | # *VERSION = \'1.01'; | |
95 | # ( $VERSION ) = '$Revision: 1.56 $ ' =~ /\$Revision:\s+([^\s]+)/; | |
96 | #$VERSION = sprintf("%d.%s", map {s/_//g; $_} q$Name: $ =~ /-(\d+)_([\d_]+)/); | |
97 | #$VERSION = sprintf("%d.%s", map {s/_//g; $_} q$Name: $ =~ /-(\d+)_([\d_]+)/); | |
98 | ]; | |
99 | } |