X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=src%2Ftests%2Ffilesys%2Fextended%2Fdir-lsdir.ck;h=36a4e5213570a7a6122ab2f31a2f7e495ea3b52c;hp=0ad947ce9d3a8d50e20e2334763f94fecdbca4e5;hb=a4613d70fb56b93216299f6253698ab0e4bbd46d;hpb=a26618d6f33f13301eb93ee26d6953c76019d879 diff --git a/src/tests/filesys/extended/dir-lsdir.ck b/src/tests/filesys/extended/dir-lsdir.ck index 0ad947c..36a4e52 100644 --- a/src/tests/filesys/extended/dir-lsdir.ck +++ b/src/tests/filesys/extended/dir-lsdir.ck @@ -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}++;