mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 21:27:34 +00:00
Shell: Add some basic tests for backgrounding
This commit is contained in:
parent
6e2a383f25
commit
2d6d1ca67f
1 changed files with 53 additions and 0 deletions
53
Shell/Tests/backgrounding.sh
Normal file
53
Shell/Tests/backgrounding.sh
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/Shell
|
||||||
|
|
||||||
|
setopt --verbose
|
||||||
|
|
||||||
|
fail(msg) {
|
||||||
|
echo FAIL: $msg
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue