testprogs/blackbox: add testit[_expect_failure]_grep() to subunit.sh
authorStefan Metzmacher <metze@samba.org>
Tue, 4 Sep 2018 08:38:44 +0000 (10:38 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 4 Sep 2018 22:48:17 +0000 (00:48 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13539

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
testprogs/blackbox/subunit.sh

index aca53f72536d60ddd9c541a4740a92ee6edae360..bcc5bd6a928b1911f1f9a61768785b62b5025ef6 100755 (executable)
@@ -90,6 +90,31 @@ testit () {
        return $status
 }
 
+# This returns 0 if the command gave success and the grep value was found
+# all other cases return != 0
+testit_grep () {
+       name="$1"
+       shift
+       grep="$1"
+       shift
+       cmdline="$@"
+       subunit_start_test "$name"
+       output=`$cmdline 2>&1`
+       status=$?
+       if [ x$status != x0 ]; then
+               printf '%s' "$output" | subunit_fail_test "$name"
+               return $status
+       fi
+       printf '%s' "$output" | grep -q "$grep"
+       gstatus=$?
+       if [ x$gstatus = x0 ]; then
+               subunit_pass_test "$name"
+       else
+               printf 'GREP: "%s" not found in output:\n%s' "$grep" "$output" | subunit_fail_test "$name"
+       fi
+       return $status
+}
+
 testit_expect_failure () {
        name="$1"
        shift
@@ -105,6 +130,31 @@ testit_expect_failure () {
        return $status
 }
 
+# This returns 0 if the command gave a failure and the grep value was found
+# all other cases return != 0
+testit_expect_failure_grep () {
+       name="$1"
+       shift
+       grep="$1"
+       shift
+       cmdline="$@"
+       subunit_start_test "$name"
+       output=`$cmdline 2>&1`
+       status=$?
+       if [ x$status = x0 ]; then
+               printf '%s' "$output" | subunit_fail_test "$name"
+               return 1
+       fi
+       printf '%s' "$output" | grep -q "$grep"
+       gstatus=$?
+       if [ x$gstatus = x0 ]; then
+               subunit_pass_test "$name"
+       else
+               printf 'GREP: "%s" not found in output:\n%s' "$grep" "$output" | subunit_fail_test "$name"
+       fi
+       return $status
+}
+
 testok () {
        name=`basename $1`
        failed=$2