Commit | Line | Data |
114c60ec |
1 | #!./perl |
2 | |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = '../lib'; |
6 | require './test.pl'; |
7 | } |
8 | |
9 | use strict; |
10 | use warnings; |
11 | |
d1c21cec |
12 | open my $fh, ">", "0" or die "Can't open '0' for writing: $!\n"; |
13 | print $fh <<'FILE0'; |
14 | This file is here for testing |
114c60ec |
15 | |
d1c21cec |
16 | while(readdir $dir){...} |
17 | ... while readdir $dir |
114c60ec |
18 | |
d1c21cec |
19 | etc |
20 | FILE0 |
21 | close $fh; |
114c60ec |
22 | |
d1c21cec |
23 | plan 10; |
114c60ec |
24 | |
d1c21cec |
25 | ok(-f '0', "'0' file is here"); |
26 | |
27 | opendir my $dirhandle, '.' |
28 | or die "Failed test: unable to open directory: $!\n"; |
29 | |
30 | my @dir = readdir $dirhandle; |
31 | rewinddir $dirhandle; |
114c60ec |
32 | |
33 | { |
34 | my @list; |
35 | while(readdir $dirhandle){ |
36 | push @list, $_; |
37 | } |
38 | ok( eq_array( \@dir, \@list ), 'while(readdir){push}' ); |
39 | rewinddir $dirhandle; |
40 | } |
41 | |
42 | { |
43 | my @list; |
44 | push @list, $_ while readdir $dirhandle; |
45 | ok( eq_array( \@dir, \@list ), 'push while readdir' ); |
46 | rewinddir $dirhandle; |
47 | } |
48 | |
49 | { |
50 | my $tmp; |
51 | my @list; |
52 | push @list, $tmp while $tmp = readdir $dirhandle; |
53 | ok( eq_array( \@dir, \@list ), 'push $dir while $dir = readdir' ); |
54 | rewinddir $dirhandle; |
55 | } |
56 | |
57 | { |
58 | my @list; |
59 | while( my $dir = readdir $dirhandle){ |
60 | push @list, $dir; |
61 | } |
62 | ok( eq_array( \@dir, \@list ), 'while($dir=readdir){push}' ); |
63 | rewinddir $dirhandle; |
64 | } |
65 | |
66 | |
67 | { |
68 | my @list; |
69 | my $sub = sub{ |
70 | push @list, $_; |
71 | }; |
72 | $sub->($_) while readdir $dirhandle; |
73 | ok( eq_array( \@dir, \@list ), '$sub->($_) while readdir' ); |
74 | rewinddir $dirhandle; |
75 | } |
76 | |
d1c21cec |
77 | { |
78 | my $works = 0; |
79 | while(readdir $dirhandle){ |
df251d1f |
80 | $_ =~ s/\.$// if defined $_ && $^O eq 'VMS'; # may have zero-length extension |
d1c21cec |
81 | if( defined $_ && $_ eq '0'){ |
82 | $works = 1; |
83 | last; |
84 | } |
114c60ec |
85 | } |
d1c21cec |
86 | ok( $works, 'while(readdir){} with file named "0"' ); |
87 | rewinddir $dirhandle; |
88 | } |
114c60ec |
89 | |
d1c21cec |
90 | { |
91 | my $works = 0; |
92 | my $sub = sub{ |
df251d1f |
93 | $_ =~ s/\.$// if defined $_ && $^O eq 'VMS'; # may have zero-length extension |
d1c21cec |
94 | if( defined $_ && $_ eq '0' ){ |
95 | $works = 1; |
96 | } |
97 | }; |
98 | $sub->($_) while readdir $dirhandle; |
99 | ok( $works, '$sub->($_) while readdir; with file named "0"' ); |
100 | rewinddir $dirhandle; |
101 | } |
102 | |
103 | { |
104 | my $works = 0; |
105 | while( my $dir = readdir $dirhandle ){ |
df251d1f |
106 | $dir =~ s/\.$// if defined $dir && $^O eq 'VMS'; # may have zero-length extension |
d1c21cec |
107 | if( defined $dir && $dir eq '0'){ |
108 | $works = 1; |
109 | last; |
110 | } |
114c60ec |
111 | } |
d1c21cec |
112 | ok( $works, 'while($dir=readdir){} with file named "0"'); |
113 | rewinddir $dirhandle; |
114 | } |
114c60ec |
115 | |
d1c21cec |
116 | { |
117 | my $tmp; |
118 | my $ok; |
119 | my @list; |
df251d1f |
120 | while( $tmp = readdir $dirhandle ){ |
121 | $tmp =~ s/\.$// if defined $tmp && $^O eq 'VMS'; # may have zero-length extension |
122 | last if defined($tmp)&& !$tmp && ($ok=1) |
123 | } |
d1c21cec |
124 | ok( $ok, '$dir while $dir = readdir; with file named "0"' ); |
125 | rewinddir $dirhandle; |
114c60ec |
126 | } |
127 | |
128 | closedir $dirhandle; |
d1c21cec |
129 | |
130 | END { 1 while unlink "0" } |