xref: /openbsd/gnu/usr.bin/perl/lib/DirHandle.t (revision 898184e3)
1#!./perl
2
3BEGIN {
4    chdir 't' if -d 't';
5    @INC = '../lib';
6    require Config; import Config;
7    if (not $Config{'d_readdir'}) {
8	print "1..0\n";
9	exit 0;
10    }
11}
12
13use DirHandle;
14use Test::More tests => 5;
15
16# Fetching the list of files in two different ways and expecting them
17# to be the same is a race condition when tests are running in parallel.
18# So go somewhere quieter.
19my $chdir;
20if ($ENV{PERL_CORE} && -d 'uni') {
21  chdir 'uni';
22  push @INC, '../../lib';
23  $chdir++;
24};
25
26$dot = DirHandle->new('.');
27
28is(defined $dot, 1);
29
30@a = sort <*>;
31do { $first = $dot->read } while defined($first) && $first =~ /^\./;
32ok(+(grep { $_ eq $first } @a));
33
34@b = sort($first, (grep {/^[^.]/} $dot->read));
35ok(+(join("\0", @a) eq join("\0", @b)));
36
37$dot->rewind;
38@c = sort grep {/^[^.]/} $dot->read;
39cmp_ok(join("\0", @b), 'eq', join("\0", @c));
40
41$dot->close;
42$dot->rewind;
43is(defined $dot->read, '');
44
45if ($chdir) {
46  chdir "..";
47}
48