mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-28 05:43:11 +00:00
9c2dff76cb
This cuts the time down to about half. It's still the longest part of the test suite, but that's probably unavoidable.
125 lines
3.9 KiB
Text
125 lines
3.9 KiB
Text
# vim: set filetype=expect:
|
|
spawn $fish
|
|
expect_prompt
|
|
|
|
# one background job
|
|
set error_msg "one background job: Fail"
|
|
|
|
send_line "sleep 1 &"
|
|
expect_prompt
|
|
send_line "wait"
|
|
expect_prompt "Job 1, 'sleep 1 &' has ended" {} unmatched { puts stderr $error_msg }
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# three job ids specified
|
|
set error_msg "three job ids specified: Fail"
|
|
|
|
send_line "sleep 3 &; sleep 1 &; sleep 2 &; sleep 4 &;"
|
|
expect_prompt
|
|
send_line "wait %1 %3 %4"
|
|
expect "Job 2, 'sleep 1 &' has ended" {} timeout { puts stderr $error_msg }
|
|
expect "Job 3, 'sleep 2 &' has ended" {} timeout { puts stderr $error_msg }
|
|
expect "Job 1, 'sleep 3 &' has ended" {} timeout { puts stderr $error_msg }
|
|
expect_prompt "Job 4, 'sleep 4 &' has ended" {} unmatched { puts stderr $error_msg }
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# specify job ids with -n option
|
|
set error_msg "specify job ids with -n option: Fail"
|
|
|
|
send_line "sleep 3 &; sleep 1 &; sleep 2 &"
|
|
expect_prompt
|
|
send_line "wait -n %1 %3"
|
|
expect "Job 2, 'sleep 1 &' has ended" {} timeout { puts stderr $error_msg }
|
|
expect_prompt "Job 3, 'sleep 2 &' has ended" {} unmatched { puts stderr $error_msg }
|
|
send_line "wait -n %1"
|
|
expect_prompt "Job 1, 'sleep 3 &' has ended" {} unmatched { puts stderr $error_msg }
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# don't wait for stopped jobs
|
|
set error_msg "don't wait for stopped jobs: Fail"
|
|
|
|
send_line "sleep 3 &"
|
|
expect_prompt
|
|
send_line "kill -STOP %1"
|
|
expect_prompt
|
|
send_line "wait"
|
|
expect_prompt
|
|
send_line "wait %1"
|
|
expect_prompt
|
|
send_line "wait -n"
|
|
expect_prompt
|
|
send_line "bg %1"
|
|
expect_prompt
|
|
send_line "wait"
|
|
expect_prompt
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# return immediately when no jobs
|
|
set error_msg "return immediately when no jobs: Fail"
|
|
|
|
send_line "wait"
|
|
expect_prompt
|
|
send_line "wait -n"
|
|
expect_prompt
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# wait for jobs by its process name with -n option
|
|
set error_msg "wait for jobs by its process name with -n option: Fail"
|
|
|
|
send_line "for i in (seq 1 3); sleep \$i &; end"
|
|
expect_prompt
|
|
send_line "wait -n sleep"
|
|
expect_prompt
|
|
send_line "jobs | wc -l"
|
|
expect "2" {} timeout { puts stderr $error_msg }
|
|
expect_prompt
|
|
send_line "wait"
|
|
expect_prompt
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# complex case
|
|
set error_msg "complex case: Fail"
|
|
|
|
send_line "for i in (seq 1 10); ls | sleep 2 | cat > /dev/null &; end"
|
|
expect_prompt
|
|
send_line "sleep 3 | cat &"
|
|
expect_prompt
|
|
send_line "sleep 1 &"
|
|
expect_prompt
|
|
send_line "wait \$last_pid sleep"
|
|
expect_prompt
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# don't wait for itself
|
|
set error_msg "don't wait for itself: Fail"
|
|
|
|
send_line "wait wait"
|
|
expect_prompt "wait: Could not find child processes with the name 'wait'" {} unmatched { puts stderr $error_msg }
|
|
send_line "wait -n wait"
|
|
expect_prompt "wait: Could not find child processes with the name 'wait'" {} unmatched { puts stderr $error_msg }
|
|
send_line "jobs"
|
|
expect_prompt "jobs: There are no jobs" {} unmatched { puts stderr $error_msg }
|
|
|
|
# test with fish script
|
|
set error_msg "test with fish script: Fail"
|
|
|
|
send_line "fish -c 'sleep 2 &; sleep 3 &; sleep 1 &; wait -n sleep; jobs | wc -l'"
|
|
expect "1" {} timeout { puts stderr $error_msg }
|
|
expect_prompt
|
|
|
|
# test error messages
|
|
set error_msg "test error messages: Fail"
|
|
|
|
send_line "wait 0"
|
|
expect_prompt "wait: '0' is not a valid process id" {} unmatched { puts stderr $error_msg }
|
|
send_line "wait 1"
|
|
expect_prompt "wait: Could not find a job with process id '1'" {} unmatched { puts stderr $error_msg }
|
|
send_line "wait hoge"
|
|
expect_prompt "wait: Could not find child processes with the name 'hoge'" {} unmatched { puts stderr $error_msg }
|