#!/bin/sh # Every test file must start with a line formatted as follows: # #:: set -e exec >&2 nfails=0 for f in tests/*.mk; do header="$(head -n 1 < "$f")" expected=$(printf '%s' "$header" | cut -d : -f 2) options="$(printf '%s' "$header" | cut -d : -f 3-)" set +e ./makel -f "$f" $options >/dev/null 2>/dev/null got=$? set -e if test $got -lt $expected; then printf '%s: %s\n' "$f" "defect was not detected (expected ${expected}, got ${got})" : $(( nfails++ )) elif test $got -gt $expected; then printf '%s: %s\n' "$f" "found more serious defects than expected (expected ${expected}, got ${got})" : $(( nfails++ )) fi done if test $nfails -gt 0; then printf '%s\n' '----------' printf '%s\n' "${nfails} tests returned different exit codes than expected." exit 1 fi