Replace lsdir system call by readdir, isdir system calls,
[pintos-anon] / src / tests / filesys / extended / dir-lsdir.ck
1 # -*- perl -*-
2 use strict;
3 use warnings;
4 use tests::tests;
5
6 our ($test);
7 my (@output) = read_text_file ("$test.output");
8
9 common_checks (@output);
10 @output = get_core_output (@output);
11
12 must_contain_in_order (\@output,
13                        '(dir-lsdir) open .',
14                        '(dir-lsdir) isdir(.)',
15                        '(dir-lsdir) close .');
16
17 sub must_contain_in_order {
18     my ($output, @lines) = @_;
19     my (@line_numbers) = map (find_line ($_, @$output), @lines);
20     for my $i (0...$#lines - 1) {
21         fail "\"$lines[$i]\" follows \"$lines[$i + 1]\" in output\n"
22           if $line_numbers[$i] > $line_numbers[$i + 1];
23     }
24 }
25
26 sub find_line {
27     my ($line, @output) = @_;
28     for my $i (0...$#output) {
29         return $i if $line eq $output[$i];
30     }
31     fail "\"$line\" does not appear in output\n";
32 }
33
34 my (%count);
35 for my $fn (map (/readdir: \"([^"]+)\"/, @output)) {
36     fail "Unexpected file \"$fn\" in lsdir output\n"
37       unless grep ($_ eq $fn, qw (dir-lsdir));
38     fail "File \"$fn\" listed twice in lsdir output\n"
39       if $count{$fn};
40     $count{$fn}++;
41 }
42 fail "No files in lsdir output\n" if scalar (keys (%count)) == 0;
43 fail "File \"dir-lsdir\" missing from lsdir output\n"
44   if !$count{"dir-lsdir"};
45
46 pass;