X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftests%2Ftests.pm;h=7d0777c4ff24b6d8b9861cd636731ca526f19a04;hb=339808528a02465a4d596a9bd0466541ddd16366;hp=3c5574122ea14014793b894930796dea353b95ef;hpb=3cb2c150ce6a377d53b8e7cc57cff0bed5f05d94;p=pintos-anon diff --git a/src/tests/tests.pm b/src/tests/tests.pm index 3c55741..7d0777c 100644 --- a/src/tests/tests.pm +++ b/src/tests/tests.pm @@ -1,6 +1,7 @@ use strict; use warnings; use tests::Algorithm::Diff; +use File::Temp 'tempfile'; sub fail; sub pass; @@ -9,9 +10,8 @@ die if @ARGV != 2; our ($test, $src_dir) = @ARGV; our ($src_stem) = "$src_dir/$test"; -our ($messages) = ""; -open (MESSAGES, '>', \$messages); -select (MESSAGES); +my ($msg_file) = tempfile (); +select ($msg_file); sub check_expected { my ($expected) = pop @_; @@ -80,12 +80,6 @@ sub check_for_keyword { $kw_line =~ s/^\([^\)]+\)\s+//; print "$kw_line\n"; - # Append output, eliminating uninteresting header and trailer info - # if possible. - my (@core) = get_core_output (@output); - @output = @core if @core; - print "Program output:\n\n" . join ('', map ("$_\n", @output)); - fail; } @@ -96,18 +90,9 @@ sub check_for_triple_fault { print < 1; - } - fail; } @@ -184,6 +169,13 @@ sub pass { sub finish { my ($verdict, @rest) = @_; + my ($messages) = ""; + seek ($msg_file, 0, 0); + while (<$msg_file>) { + $messages .= $_; + } + close ($msg_file); + my ($result_fn) = "$test.result"; open (RESULT, '>', $result_fn) or die "$result_fn: create: $!\n"; print RESULT "$verdict\n", $messages, @rest;