This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The first big import towards 5.8.1, @18078. Please do NOT
[perl5.git] / t / lib / warnings / doio
1   doio.c        
2
3   Can't open bidirectional pipe         [Perl_do_open9]
4     open(F, "| true |");
5
6   Missing command in piped open         [Perl_do_open9]
7     open(F, "| ");
8
9   Missing command in piped open         [Perl_do_open9]
10     open(F, " |");
11
12   warn(warn_nl, "open");                [Perl_do_open9]
13     open(F, "true\ncd")
14
15   close() on unopened filehandle %s     [Perl_do_close]
16     $a = "fred";close("$a")
17
18   tell() on closed filehandle           [Perl_do_tell]
19     $a = "fred";$a = tell($a)
20
21   seek() on closed filehandle           [Perl_do_seek]
22     $a = "fred";$a = seek($a,1,1)
23
24   sysseek() on closed filehandle        [Perl_do_sysseek]
25     $a = "fred";$a = seek($a,1,1)
26
27   warn(warn_uninit);                    [Perl_do_print]
28     print $a ;
29
30   -x on closed filehandle %s            [Perl_my_stat]
31     close STDIN ; -x STDIN ;
32
33   warn(warn_nl, "stat");                [Perl_my_stat]
34     stat "ab\ncd"
35
36   warn(warn_nl, "lstat");               [Perl_my_lstat]
37     lstat "ab\ncd"
38
39   Use of -l on filehandle %s            [Perl_my_lstat]
40
41   Can't exec \"%s\": %s                 [Perl_do_aexec5]
42
43   Can't exec \"%s\": %s                 [Perl_do_exec3]
44
45   Filehandle %s opened only for output  [Perl_do_eof]
46         my $a = eof STDOUT
47
48   Mandatory Warnings ALL TODO
49   ------------------
50   Can't do inplace edit: %s is not a regular file       [Perl_nextargv]
51      edit a directory
52
53   Can't do inplace edit: %s would not be unique         [Perl_nextargv]
54   Can't rename %s to %s: %s, skipping file              [Perl_nextargv]
55   Can't rename %s to %s: %s, skipping file              [Perl_nextargv]
56   Can't remove %s: %s, skipping file                    [Perl_nextargv]
57   Can't do inplace edit on %s: %s                       [Perl_nextargv]
58   
59
60 __END__
61 # doio.c [Perl_do_open9]
62 use warnings 'io' ;
63 open(F, '|'.($^O eq 'VMS' ? 'mcr ':'')."$^X -e 1|");
64 close(F);
65 no warnings 'io' ;
66 open(G, '|'.($^O eq 'VMS' ? 'mcr ':'')."$^X -e 1|");
67 close(G);
68 EXPECT
69 Can't open bidirectional pipe at - line 3.
70 ########
71 # doio.c [Perl_do_open9]
72 use warnings 'io' ;
73 open(F, "|      ");
74 no warnings 'io' ;
75 open(G, "|      ");
76 EXPECT
77 Missing command in piped open at - line 3.
78 ########
79 # doio.c [Perl_do_open9]
80 use warnings 'io' ;
81 open(F, "      |");
82 no warnings 'io' ;
83 open(G, "      |");
84 EXPECT
85 Missing command in piped open at - line 3.
86 ########
87 # doio.c [Perl_do_open9]
88 use warnings 'io' ;
89 open(F, "<true\ncd");
90 no warnings 'io' ;
91 open(G, "<true\ncd");
92 EXPECT
93 Unsuccessful open on filename containing newline at - line 3.
94 ########
95 # doio.c [Perl_do_close] <<TODO
96 use warnings 'unopened' ;
97 close "fred" ;
98 no warnings 'unopened' ;
99 close "joe" ;
100 EXPECT
101 close() on unopened filehandle fred at - line 3.
102 ########
103 # doio.c [Perl_do_tell Perl_do_seek Perl_do_sysseek Perl_my_stat]
104 use warnings 'io' ;
105 close STDIN ;
106 tell(STDIN);
107 $a = seek(STDIN,1,1);
108 $a = sysseek(STDIN,1,1);
109 -x STDIN ;
110 stat(STDIN) ;
111 $a = "fred";
112 tell($a);
113 seek($a,1,1);
114 sysseek($a,1,1);
115 -x $a; # ok
116 stat($a); # ok
117 no warnings 'io' ;
118 close STDIN ;
119 tell(STDIN);
120 $a = seek(STDIN,1,1);
121 $a = sysseek(STDIN,1,1);
122 -x STDIN ;
123 stat(STDIN) ;
124 $a = "fred";
125 tell($a);
126 seek($a,1,1);
127 sysseek($a,1,1);
128 -x $a;
129 stat($a);
130 EXPECT
131 tell() on closed filehandle STDIN at - line 4.
132 seek() on closed filehandle STDIN at - line 5.
133 sysseek() on closed filehandle STDIN at - line 6.
134 -x on closed filehandle STDIN at - line 7.
135 stat() on closed filehandle STDIN at - line 8.
136 tell() on unopened filehandle at - line 10.
137 seek() on unopened filehandle at - line 11.
138 sysseek() on unopened filehandle at - line 12.
139 ########
140 # doio.c [Perl_do_print]
141 use warnings 'uninitialized' ;
142 print $a ;
143 no warnings 'uninitialized' ;
144 print $b ;
145 EXPECT
146 Use of uninitialized value in print at - line 3.
147 ########
148 # doio.c [Perl_my_stat Perl_my_lstat]
149 use warnings 'io' ;
150 stat "ab\ncd";
151 lstat "ab\ncd";
152 no warnings 'io' ;
153 stat "ab\ncd";
154 lstat "ab\ncd";
155 EXPECT
156 Unsuccessful stat on filename containing newline at - line 3.
157 Unsuccessful stat on filename containing newline at - line 4.
158 ########
159 # doio.c [Perl_my_stat]
160 use warnings 'io';
161 -l STDIN;
162 -l $fh;
163 open $fh, $0 or die "# $!";
164 -l $fh;
165 no warnings 'io';
166 -l STDIN;
167 -l $fh;
168 close $fh;
169 EXPECT
170 Use of -l on filehandle STDIN at - line 3.
171 Use of -l on filehandle $fh at - line 6.
172 ########
173 # doio.c [Perl_do_aexec5]
174 BEGIN {
175     if ($^O eq 'MacOS') {
176         print <<EOM;
177 SKIPPED
178 # no exec on Mac OS
179 EOM
180         exit;
181     }
182 }
183 use warnings 'io' ;
184 exec "lskdjfalksdjfdjfkls","" ;
185 no warnings 'io' ;
186 exec "lskdjfalksdjfdjfkls","" ;
187 EXPECT
188 OPTION regex
189 Can't exec "lskdjfalksdjfdjfkls": .+
190 ########
191 # doio.c [Perl_do_exec3]
192 BEGIN {
193     if ($^O eq 'MacOS') {
194         print <<EOM;
195 SKIPPED
196 # no exec on Mac OS
197 EOM
198         exit;
199     }
200 }
201 use warnings 'io' ;
202 exec "lskdjfalksdjfdjfkls", "abc" ;
203 no warnings 'io' ;
204 exec "lskdjfalksdjfdjfkls", "abc" ;
205 EXPECT
206 OPTION regex
207 Can't exec "lskdjfalksdjfdjfkls(:? abc)?": .+
208 ########
209 # doio.c [win32_execvp]
210 BEGIN {
211     if ($^O eq 'MacOS') {
212         print <<EOM;
213 SKIPPED
214 # no exec on Mac OS
215 EOM
216         exit;
217     }
218 }
219 use warnings 'exec' ;
220 exec $^X, "-e0" ;
221 EXPECT
222 ########
223 # doio.c [Perl_nextargv]
224 $^W = 0 ;
225 my $filename = "./temp.dir" ;
226 mkdir $filename, 0777 
227   or die "Cannot create directory $filename: $!\n" ;
228 {
229     local (@ARGV) = ($filename) ;
230     local ($^I) = "" ;
231     my $x = <> ;
232 }
233 {
234     no warnings 'inplace' ;
235     local (@ARGV) = ($filename) ;
236     local ($^I) = "" ;
237     my $x = <> ;
238 }
239 {
240     use warnings 'inplace' ;
241     local (@ARGV) = ($filename) ;
242     local ($^I) = "" ;
243     my $x = <> ;
244 }
245 rmdir $filename ;
246 EXPECT
247 Can't do inplace edit: ./temp.dir is not a regular file at - line 9.
248 Can't do inplace edit: ./temp.dir is not a regular file at - line 21.
249
250 ########
251 # doio.c [Perl_do_eof]
252 use warnings 'io' ;
253 my $a = eof STDOUT ;
254 no warnings 'io' ;
255 $a = eof STDOUT ;
256 EXPECT
257 Filehandle STDOUT opened only for output at - line 3.
258 ########
259 # doio.c [Perl_do_openn]
260 use Config;
261 BEGIN {
262     if ($Config{useperlio}) {
263         print <<EOM;
264 SKIPPED
265 # warns only without perlio
266 EOM
267         exit;
268     }
269 }
270 use warnings 'io';
271 my $x = "foo";
272 open FOO, '>', \$x;
273 open BAR, '>&', \*STDOUT; # should not warn
274 no warnings 'io';
275 open FOO, '>', \$x;
276 EXPECT
277 Can't open a reference at - line 14.
278 ########
279 # doio.c [Perl_do_openn]
280 use Config;
281 BEGIN {
282     if (!$Config{useperlio}) {
283         print <<EOM;
284 SKIPPED
285 # warns only with perlio
286 EOM
287         exit;
288     }
289 }
290 use warnings 'io' ;
291 close STDOUT;
292 open FH1, "harness"; close FH1;
293 no warnings 'io' ;
294 open FH2, "harness"; close FH2;
295 EXPECT
296 Filehandle STDOUT reopened as FH1 only for input at - line 14.
297 ########
298 # doio.c [Perl_do_openn]
299 use Config;
300 BEGIN {
301     if (!$Config{useperlio}) {
302         print <<EOM;
303 SKIPPED
304 # warns only with perlio
305 EOM
306         exit;
307     }
308 }
309 use warnings 'io' ;
310 close STDIN;
311 open my $fh1, ">doiowarn.tmp"; close $fh1;
312 no warnings 'io' ;
313 open my $fh2, ">doiowarn.tmp"; close $fh2;
314 unlink "doiowarn.tmp";
315 EXPECT
316 Filehandle STDIN reopened as $fh1 only for output at - line 14.