On 13/12/15 20:08, Pádraig Brady wrote:
> On 10/11/15 07:27, Bernhard Voelker wrote:
>> On 11/10/2015 12:54 AM, Pádraig Brady wrote:
>>> For these reasons I might just keep the test cleanups
>>> from my previous patch but continue to build kill by default?
>>
>> +1
> 
> Two more patches related to this attached.
> 
> kill: add undocumented -L for compatibility
> tests: add tests for the kill command

The tests were pushed a little early and could
have been improved a bit.

The attached 2 patches do that, with one being
an improved syntax check to flag commands like:
  env ... && fails=1

cheers,
Pádraig.

>From d3ddf7bce45ac73c9d5180bed5ad2f10192b28f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com>
Date: Tue, 15 Dec 2015 00:30:47 +0000
Subject: [PATCH 1/2] tests: improve kill tests

* tests/misc/kill.sh:
- verify kill -[lt] support multiple parameters.
- verify kill -[lt] fail with (some) invalid parameters.
- Use returns_1 ... || fail=1, rather than ... && fail=1.
---
 tests/misc/kill.sh | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/tests/misc/kill.sh b/tests/misc/kill.sh
index 0503568..68998ce 100755
--- a/tests/misc/kill.sh
+++ b/tests/misc/kill.sh
@@ -20,33 +20,39 @@
 print_ver_ kill
 
 # params required
-env kill && fail=1
-env kill -TERM && fail=1
+returns_ 1 env kill || fail=1
+returns_ 1 env kill -TERM || fail=1
 
 # Invalid combinations
-env kill -l -l && fail=1
-env kill -l -t && fail=1
-env kill -l -s 1 && fail=1
-env kill -t -s 1 && fail=1
+returns_ 1 env kill -l -l || fail=1
+returns_ 1 env kill -l -t || fail=1
+returns_ 1 env kill -l -s 1 || fail=1
+returns_ 1 env kill -t -s 1 || fail=1
 
 # signal sending
-env kill -0 no_pid && fail=1
+returns_ 1 env kill -0 no_pid || fail=1
 env kill -0 $$ || fail=1
 env kill -s0 $$ || fail=1
 env kill -n0 $$ || fail=1 # bash compat
 env kill -CONT $$ || fail=1
 env kill -Cont $$ || fail=1
-env kill -cont $$ && fail=1
+returns_ 1 env kill -cont $$ || fail=1
 env kill -0 -1 || fail=1 # to group
 
 # table listing
 env kill -l || fail=1
 env kill -t || fail=1
 env kill -L || fail=1 # bash compat
-env kill -t TERM || fail=1
+env kill -t TERM HUP || fail=1
 
-# Verify name to signal number and vice versa
-SIGTERM=$(env kill -l TERM) || fail=1
+# Verify (multi) name to signal number and vice versa
+SIGTERM=$(env kill -l HUP TERM | tail -n1) || fail=1
 test $(env kill -l "$SIGTERM") = TERM || fail=1
 
+# Verify invalid signal spec is diagnosed
+SIGINVAL=$(env kill -t | tail -n1 | cut -f1 -d' ')
+SIGINVAL=$(expr "$SIGINVAL" + 1)
+returns_ 1 env kill -l "$SIGINVAL" 0 || fail=1
+returns_ 1 env kill -l INVALID TERM || fail=1
+
 Exit $fail
-- 
2.5.0


>From 070cec3234aeba6e5456b71ce25a34687b0dd6fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com>
Date: Tue, 15 Dec 2015 17:29:13 +0000
Subject: [PATCH 2/2] maint: include 'env' commands in returns_ syntax check

* cfg.mk (sc_prohibit_and_fail_1): Remove 'env' from
the exclusion list.
* tests/misc/env.sh: Adjust accordingly.
* tests/misc/help-version.sh: Likewise.
---
 cfg.mk                     |  2 +-
 tests/misc/env.sh          |  6 ++----
 tests/misc/help-version.sh | 14 +++++++-------
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index 70808fd..656035b 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -484,7 +484,7 @@ sc_prohibit_fail_0:
 # independently check its contents and thus detect any crash messages.
 sc_prohibit_and_fail_1:
 	@prohibit='&& fail=1'						\
-	exclude='(stat|kill|test |EGREP|grep|env|compare|2> *[^/])'	\
+	exclude='(stat|kill|test |EGREP|grep|compare|2> *[^/])'		\
 	halt='&& fail=1 detected. Please use: returns_ 1 ... || fail=1'	\
 	in_vc_files='^tests/'						\
 	  $(_sc_search_regexp)
diff --git a/tests/misc/env.sh b/tests/misc/env.sh
index d7c5a09..f03b158 100755
--- a/tests/misc/env.sh
+++ b/tests/misc/env.sh
@@ -153,9 +153,7 @@ test "x$(sh -c '\c=d echo fail')" = xpass && #dash 0.5.4 fails so check first
   { test "x$(env sh -c '\c=d echo fail')" = xpass || fail=1; }
 
 # catch unsetenv failure, broken through coreutils 8.0
-env -u a=b true && fail=1
-test $? = 125 || fail=1
-env -u '' true && fail=1
-test $? = 125 || fail=1
+returns_ 125 env -u a=b true || fail=1
+returns_ 125 env -u '' true || fail=1
 
 Exit $fail
diff --git a/tests/misc/help-version.sh b/tests/misc/help-version.sh
index 1878ae9..a294933 100755
--- a/tests/misc/help-version.sh
+++ b/tests/misc/help-version.sh
@@ -85,19 +85,19 @@ for i in $built_programs; do
 
   # Make sure they fail upon 'disk full' error.
   if test -w /dev/full && test -c /dev/full; then
-    env $i --help    >/dev/full 2>/dev/null && fail=1
-    env $i --version >/dev/full 2>/dev/null && fail=1
-    status=$?
     test $i = [ && prog=lbracket || prog=$(echo $i|sed "s/$EXEEXT$//")
     eval "expected=\$expected_failure_status_$prog"
     test x$expected = x && expected=1
-    if test $status = $expected; then
-      : # ok
-    else
+
+    returns_ $expected env $i --help    >/dev/full 2>/dev/null &&
+    returns_ $expected env $i --version >/dev/full 2>/dev/null ||
+    {
       fail=1
+      env $i --help >/dev/full 2>/dev/null
+      status=$?
       echo "*** $i: bad exit status '$status' (expected $expected)," 1>&2
       echo "  with --help or --version output redirected to /dev/full" 1>&2
-    fi
+    }
   fi
 done
 
-- 
2.5.0

Reply via email to