Replace lsdir system call by readdir, isdir system calls,
[pintos-anon] / src / tests / filesys / extended / dir-lsdir.ck
index 0ad947ce9d3a8d50e20e2334763f94fecdbca4e5..36a4e5213570a7a6122ab2f31a2f7e495ea3b52c 100644 (file)
@@ -9,24 +9,32 @@ my (@output) = read_text_file ("$test.output");
 common_checks (@output);
 @output = get_core_output (@output);
 
-my ($begin);
-for my $i (0...$#output) {
-    $begin = $i, last if $output[$i] eq '(dir-lsdir) begin';
+must_contain_in_order (\@output,
+                      '(dir-lsdir) open .',
+                      '(dir-lsdir) isdir(.)',
+                      '(dir-lsdir) close .');
+
+sub must_contain_in_order {
+    my ($output, @lines) = @_;
+    my (@line_numbers) = map (find_line ($_, @$output), @lines);
+    for my $i (0...$#lines - 1) {
+       fail "\"$lines[$i]\" follows \"$lines[$i + 1]\" in output\n"
+         if $line_numbers[$i] > $line_numbers[$i + 1];
+    }
 }
-fail "\"(dir-lsdir) begin\" does not appear in output\n" if !defined $begin;
 
-my ($end);
-for my $i (0...$#output) {
-    $end = $i, last if $output[$i] eq '(dir-lsdir) end';
+sub find_line {
+    my ($line, @output) = @_;
+    for my $i (0...$#output) {
+       return $i if $line eq $output[$i];
+    }
+    fail "\"$line\" does not appear in output\n";
 }
-fail "\"(dir-lsdir) end\" does not appear in output\n" if !defined $end;
-fail "\"begin\" follows \"end\" in output\n" if $begin > $end;
 
 my (%count);
-for my $fn (@output[$begin + 1...$end - 1]) {
-    $fn =~ s/\s+$//;
+for my $fn (map (/readdir: \"([^"]+)\"/, @output)) {
     fail "Unexpected file \"$fn\" in lsdir output\n"
-      unless grep ($_ eq $fn, qw (. .. dir-lsdir));
+      unless grep ($_ eq $fn, qw (dir-lsdir));
     fail "File \"$fn\" listed twice in lsdir output\n"
       if $count{$fn};
     $count{$fn}++;