tools: checkmans.sh add stats

Add test results statistics.
Fix-up 'KNOWN_REPEATS'.
Version bump.

Signed-off-by: J William Piggott <elseifthen@gmx.com>
This commit is contained in:
J William Piggott 2015-01-12 21:14:55 -05:00
parent 7d2ba7ad23
commit b8239769f9
1 changed files with 22 additions and 11 deletions

View File

@ -26,7 +26,7 @@ while getopts vVh OPTIONS; do
VERBOSE='true'
;;
V)
echo "util-linux: ${SCRIPT_INVOCATION_SHORT_NAME}: 2"
echo "util-linux: ${SCRIPT_INVOCATION_SHORT_NAME}: v2.1"
exit 0
;;
h)
@ -43,11 +43,13 @@ done
declare -A MAN_LIST BIN_LIST
declare -i ITER
declare -i COUNT_ERRORS=0
declare -i COUNT_GROG=0
declare -i COUNT_TROFF=0
declare -i COUNT_REPEATS=0
declare -a REPEATS
declare -A KNOWN_REPEATS
KNOWN_REPEATS[mount.8]='foo'
KNOWN_REPEATS[sfdisk.8]="0 <c,h,s>"
KNOWN_REPEATS[mount.8]='foo l2 l c'
KNOWN_REPEATS[hexdump.1]='l'
KNOWN_REPEATS[flock.1]='"$0"'
KNOWN_REPEATS[switch_root.8]='$DIR'
@ -81,7 +83,6 @@ for I in $(
fi
continue
fi
I_ERR=0
if ${VERBOSE}; then
echo "testing: ${I}"
fi
@ -90,22 +91,23 @@ for I in $(
if [ $RET = 0 ]; then
echo "From: cat ${I} | troff -mandoc -ww -z"
echo "=================================================="
((++COUNT_TROFF))
fi
GROG=1
if command -v lexgrog &> /dev/null; then
if ! lexgrog ${I} >/dev/null; then
echo "error: run: lexgrog ${I}"
echo "=================================================="
((++COUNT_ERRORS))
((++COUNT_GROG))
fi
elif command -v grog &> /dev/null; then
if ! grog ${I} | grep man >/dev/null; then
echo "error: grog ${I} is not a man file"
echo "=================================================="
((++COUNT_ERRORS))
((++COUNT_GROG))
fi
else
GROG=0
GROG=0
fi
REPEATS=( $(cat ${I} | troff -mandoc -Tascii 2>/dev/null | grotty |
col -b |
@ -118,6 +120,8 @@ for I in $(
done
if [ 0 -lt "${#REPEATS[@]}" ]; then
echo "warning: ${I} has repeating words: ${REPEATS[@]}"
echo "=================================================="
((++COUNT_REPEATS))
fi
fi
done
@ -148,17 +152,24 @@ done
set +u
for I in ${!BIN_LIST[@]}; do
if [ -v ${MAN_LIST[$I]} ]; then
echo "warning: ${I} does not have man page"
echo "warning: ${SCRIPT_INVOCATION_SHORT_NAME}: ${I} does not have man page"
fi
done
set -u
echo "${SCRIPT_INVOCATION_SHORT_NAME}: ${#BIN_LIST[*]} build targets were found"
echo "${SCRIPT_INVOCATION_SHORT_NAME}: ${#MAN_LIST[*]} files were tested"
if [ ${GROG} = 0 ]; then
echo "warning: neither grog nor lexgrog commands were found"
fi
if [ ${COUNT_ERRORS} -ne 0 ]; then
echo "error: ${SCRIPT_INVOCATION_SHORT_NAME}: ${COUNT_ERRORS} manuals failed"
if [ ${COUNT_GROG} -ne 0 -o ${COUNT_TROFF} -ne 0 -o ${COUNT_REPEATS} -ne 0 ]; then
echo "error: ${SCRIPT_INVOCATION_SHORT_NAME}: ${COUNT_GROG} files failed (lex)grog man-page test"
echo "error: ${SCRIPT_INVOCATION_SHORT_NAME}: ${COUNT_TROFF} files failed troff parsing test"
echo "error: ${SCRIPT_INVOCATION_SHORT_NAME}: ${COUNT_REPEATS} files have repeating words"
ITER=${#MAN_LIST[*]}-${COUNT_GROG}-${COUNT_TROFF}-${COUNT_REPEATS}
echo "${SCRIPT_INVOCATION_SHORT_NAME}: ${ITER} man-pages approved"
exit 1
fi