Blob Blame History Raw
#!/bin/bash
#
# This script will filter out output from BINDs tests
# It supports form from BIND 9.9 and BIND 9.11
# Its purpose is to display only failed tests from list of all tests

CURRENT_TEST=
CURRENT_OUTPUT=
STATUS_ONLY=

for P; do
	case "$P" in
		-s|--status)	STATUS_ONLY=yes; shift ;;
	esac
done

cat $@ | while read LINE; do
	if [ "${LINE#S:}" != "$LINE" ]; then
		CURRENT_TEST=`echo $LINE | cut -d: -f2`
		CURRENT_OUTPUT="$LINE"$'\n'
	elif [ "${LINE#R:}" != "$LINE" ]; then
		# echo "$CURRENT_TEST $LINE"
		if [ "${LINE/#R:*:*}" != "$LINE" ]; then
			# more recent results contain test name
			# R:dlz:FAIL
			CURRENT_TEST="${LINE#R:}"
			CURRENT_TEST="${CURRENT_TEST/%:*}"
			RESULT="${LINE/#*:}"
		else
			# S:dlz:time
			# R:FAIL
			RESULT="${LINE/#R*:/}"
		fi
		if [ "$RESULT" != "PASS" ]; then
			if [ -n "$STATUS_ONLY" ]; then
				echo "$RESULT $CURRENT_TEST"
			else
				CURRENT_OUTPUT+="$LINE"
				echo "$CURRENT_OUTPUT"
				echo
			fi
		fi
		CURRENT_OUTPUT=
	else
		CURRENT_OUTPUT+="$LINE"$'\n'
	fi
done