This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don't code the absolute number of tests for the UTF8/EBCDIC case; much
[perl5.git] / t / comp / use.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7
8 print "1..31\n";
9
10 my $i = 1;
11 eval "use 5.000";       # implicit semicolon
12 if ($@) {
13     print STDERR $@,"\n";
14     print "not ";
15 }
16 print "ok ",$i++,"\n";
17
18 eval "use 5.000;";
19 if ($@) {
20     print STDERR $@,"\n";
21     print "not ";
22 }
23 print "ok ",$i++,"\n";
24
25 eval "use 6.000;";
26 unless ($@ =~ /Perl v6\.0\.0 required--this is only \Q$^V\E, stopped/) {
27     print "not ";
28 }
29 print "ok ",$i++,"\n";
30
31 eval "no 6.000;";
32 if ($@) {
33     print STDERR $@,"\n";
34     print "not ";
35 }
36 print "ok ",$i++,"\n";
37
38 eval "no 5.000;";
39 unless ($@ =~ /Perls since v5\.0\.0 too modern--this is \Q$^V\E, stopped/) {
40     print "not ";
41 }
42 print "ok ",$i++,"\n";
43
44 eval sprintf "use %.6f;", $];
45 if ($@) {
46     print STDERR $@,"\n";
47     print "not ";
48 }
49 print "ok ",$i++,"\n";
50
51
52 eval sprintf "use %.6f;", $] - 0.000001;
53 if ($@) {
54     print STDERR $@,"\n";
55     print "not ";
56 }
57 print "ok ",$i++,"\n";
58
59 eval sprintf("use %.6f;", $] + 1);
60 unless ($@) {
61     print "not ";
62 }
63 print "ok ",$i++,"\n";
64
65 eval sprintf "use %.6f;", $] + 0.00001;
66 unless ($@) {
67     print "not ";
68 }
69 print "ok ",$i++,"\n";
70
71
72 { use lib }     # check that subparse saves pending tokens
73
74 local $lib::VERSION = 1.0;
75
76 eval "use lib 0.9";
77 if ($@) {
78     print STDERR $@,"\n";
79     print "not ";
80 }
81 print "ok ",$i++,"\n";
82
83 eval "use lib 1.0";
84 if ($@) {
85     print STDERR $@,"\n";
86     print "not ";
87 }
88 print "ok ",$i++,"\n";
89
90 eval "use lib 1.01";
91 unless ($@) {
92     print "not ";
93 }
94 print "ok ",$i++,"\n";
95
96
97 eval "use lib 0.9 qw(fred)";
98 if ($@) {
99     print STDERR $@,"\n";
100     print "not ";
101 }
102 print "ok ",$i++,"\n";
103
104 print "not " unless ($INC[0] eq "fred" || ($^O eq 'MacOS' && $INC[0] eq ":fred:"));
105 print "ok ",$i++,"\n";
106
107 eval "use lib 1.0 qw(joe)";
108 if ($@) {
109     print STDERR $@,"\n";
110     print "not ";
111 }
112 print "ok ",$i++,"\n";
113
114 print "not " unless ($INC[0] eq "joe" || ($^O eq 'MacOS' && $INC[0] eq ":joe:"));
115 print "ok ",$i++,"\n";
116
117 eval "use lib 1.01 qw(freda)";
118 unless ($@) {
119     print "not ";
120 }
121 print "ok ",$i++,"\n";
122
123 print "not " if ($INC[0] eq "freda" || ($^O eq 'MacOS' && $INC[0] eq ":freda:"));
124 print "ok ",$i++,"\n";
125
126 {
127     local $lib::VERSION = 35.36;
128     eval "use lib v33.55";
129     print "not " if $@;
130     print "ok ",$i++,"\n";
131
132     eval "use lib v100.105";
133     unless ($@ =~ /lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/) {
134         print "not ";
135     }
136     print "ok ",$i++,"\n";
137
138     eval "use lib 33.55";
139     print "not " if $@;
140     print "ok ",$i++,"\n";
141
142     eval "use lib 100.105";
143     unless ($@ =~ /lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/) {
144         print "not ";
145     }
146     print "ok ",$i++,"\n";
147
148     local $lib::VERSION = '35.36';
149     eval "use lib v33.55";
150     print "not " if $@;
151     print "ok ",$i++,"\n";
152
153     eval "use lib v100.105";
154     unless ($@ =~ /lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/) {
155         print "not ";
156     }
157     print "ok ",$i++,"\n";
158
159     eval "use lib 33.55";
160     print "not " if $@;
161     print "ok ",$i++,"\n";
162
163     eval "use lib 100.105";
164     unless ($@ =~ /lib version 100.105 \(v100\.105\.0\) required--this is only version 35.360 \(v35\.360\.0\)/) {
165         print "not ";
166     }
167     print "ok ",$i++,"\n";
168
169     local $lib::VERSION = v35.36;
170     eval "use lib v33.55";
171     print "not " if $@;
172     print "ok ",$i++,"\n";
173
174     eval "use lib v100.105";
175     unless ($@ =~ /lib version 100.105 \(v100\.105\.0\) required--this is only version 35.036000 \(v35\.36\.0\)/) {
176         print "not ";
177     }
178     print "ok ",$i++,"\n";
179
180     eval "use lib 33.55";
181     print "not " if $@;
182     print "ok ",$i++,"\n";
183
184     eval "use lib 100.105";
185     unless ($@ =~ /lib version 100.105 \(v100\.105\.0\) required--this is only version 35.036000 \(v35\.36\.0\)/) {
186         print "not ";
187     }
188     print "ok ",$i++,"\n";
189 }
190
191
192 {
193     # Regression test for patch 14937: 
194     #   Check that a .pm file with no package or VERSION doesn't core.
195     open F, ">xxx.pm" or die "Cannot open xxx.pm: $!\n";
196     print F "1;\n";
197     close F;
198     eval "use lib '.'; use xxx 3;";
199     unless ($@ =~ /^xxx defines neither package nor VERSION--version check failed at/) {
200         print "not ";
201     }
202     print "ok ",$i++,"\n";
203     unlink 'xxx.pm';
204 }