Expect proper result from `pintos get'.
[pintos-anon] / grading / userprog / run-tests
index afb9317ee357b30a389e4742753334fe8009fe85..b10cb973ebe8c2d59c1d9f0f91a73bd6952d63c5 100755 (executable)
@@ -20,26 +20,31 @@ our ($test);
 our (%extra);
 our ($action);
 
-parse_cmd_line ();
-
-# Default set of tests.
-@TESTS = qw (args-argc args-argv0 args-argvn args-single args-multiple
-            args-dbl-space
-            sc-bad-sp sc-bad-arg sc-boundary
-            halt exit
-            create-normal create-empty create-null create-bad-ptr 
-            create-long create-exists create-bound
-            open-normal open-missing open-boundary open-empty open-null
-            open-bad-ptr open-twice
-            close-normal close-twice close-stdin close-stdout close-bad-fd
-            read-normal read-bad-ptr read-boundary read-zero read-stdout
-            read-bad-fd
-            write-normal write-bad-ptr write-boundary write-zero write-stdin
-            write-bad-fd
-            exec-once exec-arg exec-multiple exec-missing exec-bad-ptr
-            join-simple join-twice join-killed join-bad-pid
-            multi-recurse multi-oom multi-child-fd
-            ) unless @TESTS > 0;
+if ($#ARGV == 0 && $ARGV[0] eq 'null') {
+    @TESTS = ('null');
+    extract_sources ();
+    build ();
+    run_and_grade_tests ();
+    exit success ();
+}
+
+parse_cmd_line qw (args-argc args-argv0 args-argvn args-single args-multiple
+                  args-dbl-space
+                  sc-bad-sp sc-bad-arg sc-boundary
+                  halt exit
+                  create-normal create-empty create-null create-bad-ptr 
+                  create-long create-exists create-bound
+                  open-normal open-missing open-boundary open-empty open-null
+                  open-bad-ptr open-twice
+                  close-normal close-twice close-stdin close-stdout
+                  close-bad-fd
+                  read-normal read-bad-ptr read-boundary read-zero read-stdout
+                  read-bad-fd
+                  write-normal write-bad-ptr write-boundary write-zero
+                  write-stdin write-bad-fd
+                  exec-once exec-arg exec-multiple exec-missing exec-bad-ptr
+                  join-simple join-twice join-killed join-bad-pid
+                  multi-recurse multi-oom multi-child-fd);
 
 clean_dir (), exit if $action eq 'clean';
 
@@ -52,10 +57,10 @@ exit if $action eq 'build';
 run_and_grade_tests (); 
 write_grades (); 
 write_details ();
-exit if $action eq 'test';
+exit success () if $action eq 'test';
 
 assemble_final_grade ();
-exit if $action eq 'assemble';
+exit success () if $action eq 'assemble';
 
 die "Don't know how to '$action'";
 
@@ -165,7 +170,7 @@ sub get_file {
                               . "-v get $guest_fn $host_fn",
                               LOG => "$test/get-$guest_fn",
                               TIMEOUT => 10,
-                              EXPECT => 0);
+                              EXPECT => 1);
     die "`pintos get $guest_fn' failed - $result\n"
        if $result ne 'ok';
 }