This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
732f66d3184ca28860a4d10424fa3d990296d648
[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, '|'."$^X -e 1|");
64 close(F);
65 no warnings 'io' ;
66 open(G, '|'."$^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 $a 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 no warnings 'io';
163 -l STDIN;
164 EXPECT
165 Use of -l on filehandle STDIN at - line 3.
166 ########
167 # doio.c [Perl_my_stat]
168 use utf8;
169 use open qw( :utf8 :std );
170 use warnings 'io';
171 -l ᶠᚻ;
172 no warnings 'io';
173 -l ᶠᚻ;
174 EXPECT
175 Use of -l on filehandle ᶠᚻ at - line 5.
176 ########
177 # doio.c [Perl_do_aexec5]
178 use warnings 'io' ;
179 exec "lskdjfalksdjfdjfkls","" ;
180 no warnings 'io' ;
181 exec "lskdjfalksdjfdjfkls","" ;
182 EXPECT
183 OPTION regex
184 Can't exec "lskdjfalksdjfdjfkls": .+
185 ########
186 # doio.c [Perl_do_exec3]
187 use warnings 'io' ;
188 exec "lskdjfalksdjfdjfkls", "abc" ;
189 no warnings 'io' ;
190 exec "lskdjfalksdjfdjfkls", "abc" ;
191 EXPECT
192 OPTION regex
193 Can't exec "lskdjfalksdjfdjfkls(:? abc)?": .+
194 ########
195 # doio.c [win32_execvp]
196 use warnings 'exec' ;
197 exec $^X, "-e0" ;
198 EXPECT
199 ########
200 # doio.c [Perl_nextargv]
201 $^W = 0 ;
202 my $filename = "./temp.dir" ;
203 mkdir $filename, 0777 
204   or die "Cannot create directory $filename: $!\n" ;
205 {
206     local (@ARGV) = ($filename) ;
207     local ($^I) = "" ;
208     my $x = <> ;
209 }
210 {
211     no warnings 'inplace' ;
212     local (@ARGV) = ($filename) ;
213     local ($^I) = "" ;
214     my $x = <> ;
215 }
216 {
217     use warnings 'inplace' ;
218     local (@ARGV) = ($filename) ;
219     local ($^I) = "" ;
220     my $x = <> ;
221 }
222 rmdir $filename ;
223 EXPECT
224 Can't do inplace edit: ./temp.dir is not a regular file at - line 9.
225 Can't do inplace edit: ./temp.dir is not a regular file at - line 21.
226
227 ########
228 # doio.c [Perl_do_eof]
229 use warnings 'io' ;
230 my $a = eof STDOUT ;
231 no warnings 'io' ;
232 $a = eof STDOUT ;
233 EXPECT
234 Filehandle STDOUT opened only for output at - line 3.
235 ########
236 # doio.c [Perl_do_openn]
237 use Config;
238 BEGIN {
239     if ($Config{useperlio}) {
240         print <<EOM;
241 SKIPPED
242 # warns only without perlio
243 EOM
244         exit;
245     }
246 }
247 use warnings 'io';
248 my $x = "foo";
249 open FOO, '>', \$x;
250 open BAR, '>&', \*STDOUT; # should not warn
251 no warnings 'io';
252 open FOO, '>', \$x;
253 EXPECT
254 Can't open a reference at - line 14.
255 ########
256 # doio.c [Perl_do_openn]
257 use Config;
258 BEGIN {
259     if (!$Config{useperlio}) {
260         print <<EOM;
261 SKIPPED
262 # warns only with perlio
263 EOM
264         exit;
265     }
266 }
267 use warnings 'io' ;
268 close STDOUT;
269 open FH1, "../harness"; close FH1;
270 no warnings 'io' ;
271 open FH2, "../harness"; close FH2;
272 EXPECT
273 Filehandle STDOUT reopened as FH1 only for input at - line 14.
274 ########
275 # doio.c [Perl_do_openn]
276 use Config;
277 use utf8;
278 use open qw( :utf8 :std );
279 BEGIN {
280     if (!$Config{useperlio}) {
281         print <<EOM;
282 SKIPPED
283 # warns only with perlio
284 EOM
285         exit;
286     }
287 }
288 use warnings 'io' ;
289 close STDOUT;
290 open ᶠᚻ1, "../harness"; close ᶠᚻ1;
291 no warnings 'io' ;
292 open ᶠᚻ2, "../harness"; close ᶠᚻ2;
293 EXPECT
294 Filehandle STDOUT reopened as ᶠᚻ1 only for input at - line 16.
295 ########
296 # doio.c [Perl_do_openn]
297 use Config;
298 BEGIN {
299     if (!$Config{useperlio}) {
300         print <<EOM;
301 SKIPPED
302 # warns only with perlio
303 EOM
304         exit;
305     }
306 }
307 use warnings 'io' ;
308 close STDIN;
309 open my $fh1, ">doiowarn.tmp"; close $fh1;
310 no warnings 'io' ;
311 open my $fh2, ">doiowarn.tmp"; close $fh2;
312 unlink "doiowarn.tmp";
313 EXPECT
314 Filehandle STDIN reopened as $fh1 only for output at - line 14.
315 ########
316 # doio.c [Perl_do_openn]
317 use Config;
318 use utf8;
319 use open qw( :utf8 :std );
320 BEGIN {
321     if (!$Config{useperlio}) {
322         print <<EOM;
323 SKIPPED
324 # warns only with perlio
325 EOM
326         exit;
327     }
328 }
329 use warnings 'io' ;
330 close STDIN;
331 open my $ᶠᚻ1, ">doiowarn.tmp"; close $ᶠᚻ1;
332 no warnings 'io' ;
333 open my $ᶠᚻ2, ">doiowarn.tmp"; close $ᶠᚻ2;
334 unlink "doiowarn.tmp";
335 EXPECT
336 Filehandle STDIN reopened as $ᶠᚻ1 only for output at - line 16.
337 ########
338 # doio.c [Perl_do_openn]
339 use Config;
340 use utf8;
341 use open qw( :utf8 :std );
342 BEGIN {
343     if (!$Config{useperlio}) {
344         print <<EOM;
345 SKIPPED
346 # warns only with perlio
347 EOM
348         exit;
349     }
350 }
351 use warnings 'io' ;
352 close STDIN;
353 open ᶠᚻ1, ">doiowarn.tmp"; close ᶠᚻ1;
354 no warnings 'io' ;
355 open ᶠᚻ2, ">doiowarn.tmp"; close ᶠᚻ2;
356 unlink "doiowarn.tmp";
357 EXPECT
358 Filehandle STDIN reopened as ᶠᚻ1 only for output at - line 16.