Whamcloud - gitweb
LU-883 commit: commit-msg rewrite
[fs/lustre-release.git] / build / test-commit-msg.sh
index 7bb885f..04f2f08 100755 (executable)
@@ -1,17 +1,41 @@
 #!/bin/bash
-TEMPFILE=commit_test
-\ls -1 $* | egrep -v "\.orig|\.20" | while read FILE; do
-       cp $FILE $TEMPFILE
-       sh ./build/commit-msg $TEMPFILE 2>&1 | grep -q "^error:"
-       OK=$?
 
-       EXPECT=$(echo $FILE | cut -d. -f2)
-       case $OK$EXPECT in
-       1ok*) echo "$FILE: PASS (was allowed)" ;;
-       0ok*) echo "$FILE: FAIL (not allowed)" ;;
-       0*) echo "$FILE: PASS (found error)";;
-       *) echo "$FILE: FAIL (no error)" ;;
-       esac
+program=$0
+progdir=$(\cd $(dirname $0) >/dev/null && pwd)
+
+die() {
+        exec 1>&2
+        echo "$program fatal error:  $*"
+        exit 1
+}
+
+TEMPFILE=$(mktemp ${TMPDIR:-.}/commit-XXXXXX)
+test -f "$TEMPFILE" || die "mktemp fails"
+trap "rm -f $TEMPFILE COMMIT*" EXIT
+
+test $# -eq 0 && set -- ${progdir}/commit.*
+
+readonly report_fmt='%-20s %s\n'
+for f
+do
+        case "$f" in
+        ( *.orig | *.rej ) continue ;;
+        esac
+        cp $f $TEMPFILE
+        results=$(exec 2>&1
+                ${SHELL:-sh} $progdir/commit-msg $TEMPFILE)
+        case $'\n'"$results" in
+        ( *$'\nerror:'* ) OK=0 ;;
+        ( * ) OK=1 ;;
+        esac
+
+        f=$(basename $f)
+        case $OK${f#*commit.} in
+        1ok*)   printf "$report_fmt" $f: "PASS (was allowed)" ;;
+        0ok*)   printf "$report_fmt" $f: "FAIL (not allowed)" ;;
+        0*)     printf "$report_fmt" $f: "PASS (found error)" ;;
+        *)      printf "$report_fmt" $f: "FAIL (no error)"    ;;
+        esac
 done
 
 rm -f $TEMPFILE