diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/tests/userprog/exec-missing.ck | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/tests/userprog/exec-missing.ck b/src/tests/userprog/exec-missing.ck index 0ef7aaa..749db01 100644 --- a/src/tests/userprog/exec-missing.ck +++ b/src/tests/userprog/exec-missing.ck @@ -1,15 +1,36 @@ # -*- perl -*- + +# In this test a program named "exec-missing" tries to start another +# program that do not exist. This is discovered in the thread of the +# new program, in the function load. + +# Correct handling can be done in three basic ways: + +# 1. We only know about the failure when our "exec" system call +# returns -1. The "no-such-file" thread never becomes a process and +# do not leave any messages. + +# 2. We know about the failure both when "exec" return -1 and when the +# "no-such-file" thread fails to become a process. It notify the +# failure by printing "load: no-such-file: open failed". But it +# does not become a process and will thus not leave a +# "no-such-file: exit(-1)" message. + +# 3. "exec" return -1 and "no-such-file" become a failed process. It +# will thus produce a "no-such-file: exit(-1)" message. This +# message may occur some time after "open failed". + use strict; use warnings; use tests::tests; -check_expected ([<<'EOF', <<'EOF', <<'EOF', <<'EOF']); +check_expected ([<<'EOF', <<'EOF', <<'EOF', <<'EOF', <<'EOF', <<'EOF']); (exec-missing) begin -load: no-such-file: open failed (exec-missing) exec("no-such-file"): -1 (exec-missing) end exec-missing: exit(0) EOF (exec-missing) begin +load: no-such-file: open failed (exec-missing) exec("no-such-file"): -1 (exec-missing) end exec-missing: exit(0) @@ -28,4 +49,18 @@ no-such-file: exit(-1) (exec-missing) end exec-missing: exit(0) EOF +(exec-missing) begin +load: no-such-file: open failed +(exec-missing) exec("no-such-file"): -1 +(exec-missing) end +no-such-file: exit(-1) +exec-missing: exit(0) +EOF +(exec-missing) begin +load: no-such-file: open failed +(exec-missing) exec("no-such-file"): -1 +(exec-missing) end +exec-missing: exit(0) +no-such-file: exit(-1) +EOF pass; |
