10 # Can't require test.pl, as we're testing the use/require mechanism here.
15 my ($type, $got, $expected, $name) = @_;
17 my @caller = caller(2);
21 $name .= " at $caller[1] line $caller[2]";
25 $result = $got eq $expected;
26 } elsif ($type eq 'isnt') {
27 $result = $got ne $expected;
28 } elsif ($type eq 'like') {
29 $result = $got =~ $expected;
31 die "Unexpected type '$type'$name";
36 print "not ok $test\n";
37 print "# Failed test $name\n";
38 print "# Got '$got'\n";
40 print "# Expected '$expected'\n";
41 } elsif ($type eq 'isnt') {
42 print "# Expected not '$expected'\n";
43 } elsif ($type eq 'like') {
44 print "# Expected $expected\n";
61 eval "use 5.000"; # implicit semicolon
68 like ($@, qr/Perl v6\.0\.0 required--this is only \Q$^V\E, stopped/);
74 like ($@, qr/Perls since v5\.0\.0 too modern--this is \Q$^V\E, stopped/);
76 eval sprintf "use %.6f;", $];
80 eval sprintf "use %.6f;", $] - 0.000001;
83 eval sprintf("use %.6f;", $] + 1);
84 like ($@, qr/Perl v6.\d+.\d+ required--this is only \Q$^V\E, stopped/);
86 eval sprintf "use %.6f;", $] + 0.00001;
87 like ($@, qr/Perl v5.\d+.\d+ required--this is only \Q$^V\E, stopped/);
89 { use lib } # check that subparse saves pending tokens
91 local $lib::VERSION = 1.0;
103 eval "use lib 0.9 qw(fred)";
106 if ($^O eq 'MacOS') {
107 is($INC[0], ":fred:");
112 eval "use lib 1.0 qw(joe)";
116 if ($^O eq 'MacOS') {
117 is($INC[0], ":joe:");
123 eval "use lib 1.01 qw(freda)";
126 if ($^O eq 'MacOS') {
127 isnt($INC[0], ":freda:");
129 isnt($INC[0], "freda");
133 local $lib::VERSION = 35.36;
134 eval "use lib v33.55";
137 eval "use lib v100.105";
138 like ($@, qr/lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/);
140 eval "use lib 33.55";
143 eval "use lib 100.105";
144 like ($@, qr/lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/);
146 local $lib::VERSION = '35.36';
147 eval "use lib v33.55";
150 eval "use lib v100.105";
151 like ($@, qr/lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/);
153 eval "use lib 33.55";
156 eval "use lib 100.105";
157 like ($@, qr/lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/);
159 local $lib::VERSION = v35.36;
160 eval "use lib v33.55";
163 eval "use lib v100.105";
164 like ($@, qr/lib version 100.105 \(v100\.105\.0\) required--this is only version 35.036000 \(v35\.36\.0\)/);
166 eval "use lib 33.55";
169 eval "use lib 100.105";
170 like ($@, qr/lib version 100.105 \(v100\.105\.0\) required--this is only version 35.036000 \(v35\.36\.0\)/);
175 # Regression test for patch 14937:
176 # Check that a .pm file with no package or VERSION doesn't core.
177 open F, ">xxx.pm" or die "Cannot open xxx.pm: $!\n";
180 eval "use lib '.'; use xxx 3;";
181 like ($@, qr/^xxx defines neither package nor VERSION--version check failed at/);