mirror of
https://github.com/RGBCube/serenity
synced 2025-06-14 11:02:09 +00:00

There's no guarantee that the last executed command will have a zero exit code, and so the shell exit code may or may not be zero, even if all the tests pass. Also changes the `test || echo fail && exit` to `if not test { echo fail && exit }`, since that's nicer-looking.
53 lines
709 B
Bash
53 lines
709 B
Bash
#!/bin/Shell
|
|
|
|
echo "Not running Shell-backgrounding as it has a high failure rate"
|
|
echo PASS
|
|
exit 0
|
|
|
|
source test-commons.inc
|
|
|
|
setopt --verbose
|
|
|
|
last_idx=''
|
|
block_idx=0
|
|
block() {
|
|
block_idx=$(expr 1 + $block_idx)
|
|
last_idx=$block_idx
|
|
mkfifo fifo$block_idx
|
|
cat fifo$block_idx&
|
|
}
|
|
|
|
unblock(idx) {
|
|
echo unblock $idx > fifo$idx
|
|
rm -f fifo$idx
|
|
}
|
|
|
|
assert_job_count(count) {
|
|
ecount=$(jobs | wc -l)
|
|
shift
|
|
if test $ecount -ne $count {
|
|
for $* {
|
|
unblock $it
|
|
}
|
|
fail "expected $ecount == $count"
|
|
}
|
|
}
|
|
|
|
block
|
|
i=$last_idx
|
|
|
|
assert_job_count 1 $i
|
|
|
|
unblock $i
|
|
wait
|
|
|
|
block
|
|
i=$last_idx
|
|
block
|
|
j=$last_idx
|
|
|
|
assert_job_count 2 $i $j
|
|
|
|
unblock $i
|
|
unblock $j
|
|
wait
|