File: read_dir.t

package info (click to toggle)
libfile-slurp-perl 9999.32-2.1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 412 kB
  • sloc: perl: 650; makefile: 39
file content (68 lines) | stat: -rw-r--r-- 1,919 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use strict;
use warnings;

use File::Basename ();
use File::Spec ();
use lib File::Spec->catdir(File::Spec->rel2abs(File::Basename::dirname(__FILE__)), 'lib');
use FileSlurpTest qw(temp_file_path);

use File::Slurp qw(read_dir write_file);
use Test::More;

plan tests => 9;

# try to honor possible tempdirs
my $test_dir = temp_file_path(); # a good temporary filename

mkdir( $test_dir, 0700) || die "mkdir $test_dir: $!";
my @dir_entries = read_dir($test_dir);
ok(@dir_entries == 0, 'empty dir');

@dir_entries = read_dir($test_dir, keep_dot_dot => 1);
ok(@dir_entries == 2, 'empty dir with . ..');

@dir_entries = read_dir($test_dir, {keep_dot_dot => 1});
ok(@dir_entries == 2, 'empty dir with . .. - args ref');

write_file(File::Spec->catfile($test_dir, 'x'), "foo\n");
@dir_entries = read_dir($test_dir);
ok(@dir_entries == 1, 'dir with 1 file');
is($dir_entries[0], 'x', 'dir with file x');


my $file_cnt = 23;
my @expected_entries = sort('x', 1 .. $file_cnt);

for my $file (1 .. $file_cnt) {
    write_file(File::Spec->catfile($test_dir, $file), "foo\n");
}

@dir_entries = read_dir($test_dir);
@dir_entries = sort @dir_entries;

is_deeply(\@dir_entries, \@expected_entries, "dir with $file_cnt files");

my $dir_entries_ref = read_dir($test_dir);
@{$dir_entries_ref} = sort @{$dir_entries_ref};

is_deeply($dir_entries_ref, \@expected_entries, "dir in array ref");

my @prefixed_entries;
@prefixed_entries = read_dir( $test_dir, { prefix => 1 } ) ;
is_deeply(
    [ sort @prefixed_entries ],
    [ map File::Spec->catfile($test_dir, $_), @dir_entries ],
	'prefix option in hash ref'
);

@prefixed_entries = read_dir( $test_dir, prefix => 1 ) ;
is_deeply(
    [ sort @prefixed_entries ],
    [ map File::Spec->catfile($test_dir, $_), @dir_entries ],
	'prefix option as key-value pair'
);

# clean up

unlink map File::Spec->catfile($test_dir, $_), @dir_entries;
rmdir($test_dir) || die "rmdir $test_dir: $!";