14 # Need to run this in a quiet private directory as it assumes that it can read
15 # the contents twice and get the same result.
16 my $tempdir = tempfile;
18 mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
19 chdir $tempdir or die die "Can't chdir '$tempdir': $!";
26 foreach my $file (keys %tempfiles) {
27 # We only wrote each of these once so 1 delete should work:
29 warn "unlink tempfile '$file' passed but it's still there"
32 warn "Couldn't unlink tempfile '$file': $!";
35 chdir '..' or die "Couldn't chdir .. for cleanup: $!";
36 rmdir $tempdir or die "Couldn't unlink tempdir '$tempdir': $!";
40 # This is intentionally not random (per run), but intentionally will try to
41 # give different file names for different people running this test.
44 my @chars = ('A' .. 'Z', 'a' .. 'z', 0 .. 9);
49 return if $tempfiles{$name}++;
51 print "# Writing to $name in $tempdir\n";
53 open my $fh, '>', $name or die "Can't open '$name' for writing: $!\n";
55 This file is here for testing
57 while(readdir $dir){...}
58 ... while readdir $dir
62 close $fh or die "Can't close '$name': $!";
66 for (1..int rand 10) {
68 $name .= $chars[rand $#chars] for 1..int(10 + rand 5);
77 ok(-f '0', "'0' file is here");
79 opendir my $dirhandle, '.'
80 or die "Failed test: unable to open directory: $!\n";
82 my @dir = readdir $dirhandle;
87 while(readdir $dirhandle){
90 ok( eq_array( \@dir, \@list ), 'while(readdir){push}' );
96 push @list, $_ while readdir $dirhandle;
97 ok( eq_array( \@dir, \@list ), 'push while readdir' );
104 push @list, $tmp while $tmp = readdir $dirhandle;
105 ok( eq_array( \@dir, \@list ), 'push $dir while $dir = readdir' );
106 rewinddir $dirhandle;
111 while( my $dir = readdir $dirhandle){
114 ok( eq_array( \@dir, \@list ), 'while($dir=readdir){push}' );
115 rewinddir $dirhandle;
124 $sub->($_) while readdir $dirhandle;
125 ok( eq_array( \@dir, \@list ), '$sub->($_) while readdir' );
126 rewinddir $dirhandle;
131 while(readdir $dirhandle){
132 $_ =~ s/\.$// if defined $_ && $^O eq 'VMS'; # may have zero-length extension
133 if( defined $_ && $_ eq '0'){
138 ok( $works, 'while(readdir){} with file named "0"' );
139 rewinddir $dirhandle;
145 $_ =~ s/\.$// if defined $_ && $^O eq 'VMS'; # may have zero-length extension
146 if( defined $_ && $_ eq '0' ){
150 $sub->($_) while readdir $dirhandle;
151 ok( $works, '$sub->($_) while readdir; with file named "0"' );
152 rewinddir $dirhandle;
157 while( my $dir = readdir $dirhandle ){
158 $dir =~ s/\.$// if defined $dir && $^O eq 'VMS'; # may have zero-length extension
159 if( defined $dir && $dir eq '0'){
164 ok( $works, 'while($dir=readdir){} with file named "0"');
165 rewinddir $dirhandle;
172 while( $tmp = readdir $dirhandle ){
173 $tmp =~ s/\.$// if defined $tmp && $^O eq 'VMS'; # may have zero-length extension
174 last if defined($tmp)&& !$tmp && ($ok=1)
176 ok( $ok, '$dir while $dir = readdir; with file named "0"' );
177 rewinddir $dirhandle;