浏览代码

Shell: Add some basic tests for backgrounding

AnotherTest 4 年之前
父节点
当前提交
2d6d1ca67f
共有 1 个文件被更改,包括 53 次插入0 次删除
  1. 53 0
      Shell/Tests/backgrounding.sh

+ 53 - 0
Shell/Tests/backgrounding.sh

@@ -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
+