Allow user fault messages in output in bad-* tests.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 19 Jun 2006 21:50:53 +0000 (21:50 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 19 Jun 2006 21:50:53 +0000 (21:50 +0000)
Add "pass;" at end of each bad-* test checker script.

src/tests/tests.pm
src/tests/userprog/bad-jump.ck
src/tests/userprog/bad-jump2.ck
src/tests/userprog/bad-read.ck
src/tests/userprog/bad-read2.ck
src/tests/userprog/bad-write.ck
src/tests/userprog/bad-write2.ck

index 74b69054936205970c150197bcfd1f023f45f79a..e167cf5d835d9604421e7aab4c24869da9e81fdc 100644 (file)
@@ -149,10 +149,22 @@ sub compare_output {
     my (@output) = get_core_output ($run, @$output);
     fail "\u$run didn't produce any output" if !@output;
 
-    if (exists $options{IGNORE_EXIT_CODES}) {
+    my $ignore_exit_codes = exists $options{IGNORE_EXIT_CODES};
+    if ($ignore_exit_codes) {
        delete $options{IGNORE_EXIT_CODES};
        @output = grep (!/^[a-zA-Z0-9-_]+: exit\(\d+\)$/, @output);
     }
+    my $ignore_user_faults = exists $options{IGNORE_USER_FAULTS};
+    if ($ignore_user_faults) {
+       delete $options{IGNORE_USER_FAULTS};
+       @output = grep (!/^Page fault at.*in user context\.$/
+                       && !/: dying due to interrupt 0x0e \(.*\).$/
+                       && !/^Interrupt 0x0e \(.*\) at eip=/
+                       && !/^ cr2=.* error=.*/
+                       && !/^ eax=.* ebx=.* ecx=.* edx=.*/
+                       && !/^ esi=.* edi=.* esp=.* ebp=.*/
+                       && !/^ cs=.* ds=.* es=.* ss=.*/, @output);
+    }
     die "unknown option " . (keys (%options))[0] . "\n" if %options;
 
     my ($msg);
@@ -196,6 +208,10 @@ sub compare_output {
     }
 
     # Failed to match.  Report failure.
+    $msg .= "\n(Process exit codes are excluded for matching purposes.)\n"
+      if $ignore_exit_codes;
+    $msg .= "\n(User fault messages are excluded for matching purposes.)\n"
+      if $ignore_user_faults;
     fail "Test output failed to match any acceptable form.\n\n$msg";
 }
 \f
index 71662e825d1d4cf0cc351532a4cc43f4c3c73f1f..e1c178b4427f6aa7bae76e9bd41ef74c78248d36 100644 (file)
@@ -2,7 +2,8 @@
 use strict;
 use warnings;
 use tests::tests;
-check_expected ([<<'EOF']);
+check_expected (IGNORE_USER_FAULTS => 1, [<<'EOF']);
 (bad-jump) begin
 bad-jump: exit(-1)
 EOF
+pass;
index 822611559a291907c93bfc698d984ccbf1cad6d3..35f0f9790ba4f64bc1200411a8f660568f8d559f 100644 (file)
@@ -2,7 +2,8 @@
 use strict;
 use warnings;
 use tests::tests;
-check_expected ([<<'EOF']);
+check_expected (IGNORE_USER_FAULTS => 1, [<<'EOF']);
 (bad-jump2) begin
 bad-jump2: exit(-1)
 EOF
+pass;
index 8a531d9523ce65fc50d09713fe7d5720afffa785..4d4d9266646fe2b275a5ded0aac32e8695fa3a56 100644 (file)
@@ -2,7 +2,8 @@
 use strict;
 use warnings;
 use tests::tests;
-check_expected ([<<'EOF']);
+check_expected (IGNORE_USER_FAULTS => 1, [<<'EOF']);
 (bad-read) begin
 bad-read: exit(-1)
 EOF
+pass;
index cabe86250ed6e4baa95dd84af7d73cd38543e175..fa27c7dc70ffd80dab51e1258be5ecd6eee86c9a 100644 (file)
@@ -2,7 +2,8 @@
 use strict;
 use warnings;
 use tests::tests;
-check_expected ([<<'EOF']);
+check_expected (IGNORE_USER_FAULTS => 1, [<<'EOF']);
 (bad-read2) begin
 bad-read2: exit(-1)
 EOF
+pass;
index 7b2e2d7e8c55c904b1bf93da7389cd2f1d31df86..d213b49a91afcd4995de560404e41be5557e9a63 100644 (file)
@@ -2,7 +2,8 @@
 use strict;
 use warnings;
 use tests::tests;
-check_expected ([<<'EOF']);
+check_expected (IGNORE_USER_FAULTS => 1, [<<'EOF']);
 (bad-write) begin
 bad-write: exit(-1)
 EOF
+pass;
index c94a10f107f338b59b6c7eea69ecd9f83e25106b..c6a34200ca6658368300c054b8faae57699c304f 100644 (file)
@@ -2,7 +2,8 @@
 use strict;
 use warnings;
 use tests::tests;
-check_expected ([<<'EOF']);
+check_expected (IGNORE_USER_FAULTS => 1, [<<'EOF']);
 (bad-write2) begin
 bad-write2: exit(-1)
 EOF
+pass;