our (%extra);
our ($action);
+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
join-simple join-twice join-killed join-bad-pid
multi-recurse multi-oom multi-child-fd);
-# Default set of tests.
-@TESTS = unless @TESTS > 0;
-
clean_dir (), exit if $action eq 'clean';
extract_sources ();
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'";
# Run.
my ($timeout) = $test !~ /^multi-/ ? 10 : 600;
- my ($result) = run_pintos ("pintos "
- . "--os-disk=pintos/src/userprog/build/os.dsk "
- . "--fs-disk=output/$test/fs.dsk "
- . "-v run -q -ex \"$test$args\"",
+ my ($result) = run_pintos (["--os-disk=pintos/src/userprog/build/os.dsk",
+ "--fs-disk=output/$test/fs.dsk",
+ "-v", "run", "-q", "-ex", "$test$args"],
LOG => "$test/run",
TIMEOUT => $timeout);
rename "output/$test/fs.dsk", "output/$test/fs.dsk.keep"
sub get_file {
my ($guest_fn, $host_fn) = @_;
- my ($result) = run_pintos ("pintos "
- . "--os-disk=pintos/src/userprog/build/os.dsk "
- . "--fs-disk=output/$test/fs.dsk.keep "
- . "-v get $guest_fn $host_fn",
+ my ($result) = run_pintos (["--os-disk=pintos/src/userprog/build/os.dsk",
+ "--fs-disk=output/$test/fs.dsk.keep",
+ "-v", "get", "$guest_fn", "$host_fn"],
LOG => "$test/get-$guest_fn",
- TIMEOUT => 10,
- EXPECT => 0);
+ TIMEOUT => 10);
die "`pintos get $guest_fn' failed - $result\n"
if $result ne 'ok';
}