More tests are sensitive to load: document them
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / t / parse_version.t
CommitLineData
a7d1454b 1#!/usr/bin/perl -w
2
3BEGIN {
4 if( $ENV{PERL_CORE} ) {
5 chdir 't';
6 @INC = '../lib';
7 }
8 else {
9 unshift @INC, 't/lib';
10 }
11}
12chdir 't';
13
277189c8 14use Test::More;
a7d1454b 15use ExtUtils::MakeMaker;
16
c8d65f10 17my $Has_Version = eval 'require version; "version"->import';
18my $Has_Our = eval 'our $foo';
19
277189c8 20my %versions = (q[$VERSION = '1.00'] => '1.00',
21 q[*VERSION = \'1.01'] => '1.01',
22 q[($VERSION) = q$Revision: 32208 $ =~ /(\d+)/g;] => 32208,
23 q[$FOO::VERSION = '1.10';] => '1.10',
24 q[*FOO::VERSION = \'1.11';] => '1.11',
25 '$VERSION = 0.02' => 0.02,
a7d1454b 26 '$VERSION = 0.0' => 0.0,
27 '$VERSION = -1.0' => -1.0,
28 '$VERSION = undef' => 'undef',
29 '$wibble = 1.0' => 'undef',
277189c8 30 q[my $VERSION = '1.01'] => 'undef',
31 q[local $VERISON = '1.02'] => 'undef',
32 q[local $FOO::VERSION = '1.30'] => 'undef',
a7d1454b 33 );
34
c8d65f10 35if( $Has_Our ) {
277189c8 36 $versions{q[our $VERSION = '1.23';]} = '1.23',
37}
38
c8d65f10 39if( $Has_Version ) {
277189c8 40 $versions{q[use version; $VERSION = qv(1.2.3);]} = qv(1.2.3);
41 $versions{q[$VERSION = qv(1.2.3)]} = qv(1.2.3);
42}
43
c8d65f10 44plan tests => (2 * keys %versions) + 4;
277189c8 45
a7d1454b 46while( my($code, $expect) = each %versions ) {
c8d65f10 47 is( parse_version_string($code), $expect, $code );
48}
49
50
51sub parse_version_string {
52 my $code = shift;
53
a7d1454b 54 open(FILE, ">VERSION.tmp") || die $!;
55 print FILE "$code\n";
56 close FILE;
57
58 $_ = 'foo';
c8d65f10 59 my $version = MM->parse_version('VERSION.tmp');
a7d1454b 60 is( $_, 'foo', '$_ not leaked by parse_version' );
c8d65f10 61
a7d1454b 62 unlink "VERSION.tmp";
c8d65f10 63
64 return $version;
65}
66
67
68SKIP: {
69 skip "need version.pm", 2 unless $Has_Version;
70 is parse_version_string(q[ $VERSION = '1.00'; sub version { $VERSION } ]),
71 '1.00';
72 is parse_version_string(q[ use version; $VERSION = version->new(1.23) ]),
73 '1.23';
a7d1454b 74}