1#!./perl 2 3BEGIN { 4 unless(grep /blib/, @INC) { 5 chdir 't' if -d 't'; 6 @INC = '../lib'; 7 } 8 require Config; import Config; 9 if ($] < 5.00326 || not $Config{'d_readdir'}) { 10 print "1..0 # Skip: readdir() not available\n"; 11 exit 0; 12 } 13} 14 15select(STDERR); $| = 1; 16select(STDOUT); $| = 1; 17 18use IO::Dir qw(DIR_UNLINK); 19 20my $tcount = 0; 21 22sub ok { 23 $tcount++; 24 my $not = $_[0] ? '' : 'not '; 25 print "${not}ok $tcount\n"; 26} 27 28print "1..10\n"; 29 30my $DIR = $^O eq 'MacOS' ? ":" : "."; 31 32$dot = new IO::Dir $DIR; 33ok(defined($dot)); 34 35@a = sort <*>; 36do { $first = $dot->read } while defined($first) && $first =~ /^\./; 37ok(+(grep { $_ eq $first } @a)); 38 39@b = sort($first, (grep {/^[^.]/} $dot->read)); 40ok(+(join("\0", @a) eq join("\0", @b))); 41 42$dot->rewind; 43@c = sort grep {/^[^.]/} $dot->read; 44ok(+(join("\0", @b) eq join("\0", @c))); 45 46$dot->close; 47$dot->rewind; 48ok(!defined($dot->read)); 49 50open(FH,'>X') || die "Can't create x"; 51print FH "X"; 52close(FH) or die "Can't close: $!"; 53 54tie %dir, IO::Dir, $DIR; 55my @files = keys %dir; 56 57# I hope we do not have an empty dir :-) 58ok(scalar @files); 59 60my $stat = $dir{'X'}; 61ok(defined($stat) && UNIVERSAL::isa($stat,'File::stat') && $stat->size == 1); 62 63delete $dir{'X'}; 64 65ok(-f 'X'); 66 67tie %dirx, IO::Dir, $DIR, DIR_UNLINK; 68 69my $statx = $dirx{'X'}; 70ok(defined($statx) && UNIVERSAL::isa($statx,'File::stat') && $statx->size == 1); 71 72delete $dirx{'X'}; 73 74ok(!(-f 'X')); 75