chiark / gitweb /
regress: fuzz: Reject argc==0
[adns.git] / regress / check1fuzz
index 1609008ceddc6866a9a910347fd100374b651e43..5f1a0b2a4bdea8d18896da22a33004c0e65be19b 100755 (executable)
@@ -11,10 +11,13 @@ fuzzfile="$1"
 exec <"$fuzzfile"
 
 case "$fuzzfile" in
-fuzz-*)                desc="${fuzzfile#fuzz-}"        ;;
-fuzzraw-*)     desc="${fuzzfile#fuzzraw-}"     ;;
+fuzz-*)                kind=f; case="${fuzzfile#fuzz-}"        ;;
+fuzzraw-*)     kind=r; case="${fuzzfile#fuzzraw-}"     ;;
+*)             printf >&2 '\nWRONG-FUZZ-%s\n' $fuzzfile; exit 1 ;;
 esac
 
+desc="$case.$kind"
+
 read nargs
 if [ "$nargs" = 0 ]; then printf "SKIPPED-$desc "; exit 5; fi
 
@@ -26,6 +29,24 @@ case "$program" in
 *)     program="./$program" ;;
 esac
 
-${program} <"$fuzzfile" >/dev/null
+exec 3>output-$desc.trouble
+
+set +e
+${program} <"$fuzzfile" >output-$desc.out.tmp 2>&3
+rc=$?
+set -e
+
+if [ $rc = 0 ]; then
+       set +e
+       diff -u output-$desc.out.tmp case-$case.out >&3
+       rc=$?
+       set -e
+fi
+
+if [ $rc != 0 ]; then
+       printf >&2 '\nFAIL-%s\n' $desc
+       exit $rc
+fi
 
-printf "$desc "
+printf '%s ' "$desc"
+rm -f output-$desc.trouble