hush: add tests for interrupting read
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 8 May 2011 23:05:33 +0000 (01:05 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 8 May 2011 23:05:33 +0000 (01:05 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/hush_test/hush-trap/signal_read1.right [new file with mode: 0644]
shell/hush_test/hush-trap/signal_read1.tests [new file with mode: 0755]
shell/hush_test/hush-trap/signal_read2.right [new file with mode: 0644]
shell/hush_test/hush-trap/signal_read2.tests [new file with mode: 0755]
shell/hush_test/run-all

diff --git a/shell/hush_test/hush-trap/signal_read1.right b/shell/hush_test/hush-trap/signal_read1.right
new file mode 100644 (file)
index 0000000..2870a8e
--- /dev/null
@@ -0,0 +1 @@
+Got HUP:0
diff --git a/shell/hush_test/hush-trap/signal_read1.tests b/shell/hush_test/hush-trap/signal_read1.tests
new file mode 100755 (executable)
index 0000000..1105479
--- /dev/null
@@ -0,0 +1,5 @@
+(sleep 1; kill -HUP $$) &
+trap 'echo "Got HUP:$?"; exit' HUP
+while true; do
+       read ignored
+done
diff --git a/shell/hush_test/hush-trap/signal_read2.right b/shell/hush_test/hush-trap/signal_read2.right
new file mode 100644 (file)
index 0000000..71a6bc1
--- /dev/null
@@ -0,0 +1,2 @@
+HUP
+Done:129
diff --git a/shell/hush_test/hush-trap/signal_read2.tests b/shell/hush_test/hush-trap/signal_read2.tests
new file mode 100755 (executable)
index 0000000..eab5b9b
--- /dev/null
@@ -0,0 +1,7 @@
+$THIS_SH -c '
+(sleep 1; kill -HUP $$) &
+while true; do
+       read ignored
+done
+'
+echo "Done:$?"
index 256f152dc90c5062a9fa7c60c6aa53627f49a209..64a7abc479ae388c559f888da0e52c930a59b12f 100755 (executable)
@@ -48,8 +48,9 @@ do_test()
                        *.orig|*~) ;;
                        #*) echo $x ; sh $x ;;
                        *)
+                       echo -n "$1/$x:"
                        sh "$x" >"../$1-$x.fail" 2>&1 && \
-                       { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
+                       { { echo " ok"; rm "../$1-$x.fail"; } || echo " fail"; }
                        ;;
                esac
        done
@@ -60,6 +61,7 @@ do_test()
        name="${x%%.tests}"
        test -f "$name.right" || continue
 #      echo Running test: "$x"
+       echo -n "$1/$x:"
        (
                "$THIS_SH" "./$x" >"$name.xx" 2>&1
                # filter C library differences
@@ -70,9 +72,9 @@ do_test()
                diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
        )
        case $? in
-               0)  echo "$1/$x: ok";;
-               77) echo "$1/$x: skip (feature disabled)";;
-               *)  echo "$1/$x: fail"; tret=1;;
+               0)  echo " ok";;
+               77) echo " skip (feature disabled)";;
+               *)  echo " fail"; tret=1;;
        esac
        done
        exit ${tret}