diff --git a/test/run b/test/run index 186d79b0..208199d4 100755 --- a/test/run +++ b/test/run @@ -20,7 +20,16 @@ if [ "$1" = "--one" ]; then short=${name#[0-9][0-9][0-9]_} bin=$BIN/test_$short if [ ! -x "$bin" ]; then - printf 'SKIP %s (no binary %s)\n' "$name" "$bin" > "$prefix.status" + # A missing binary means an unwired test/wcc file: `make test` + # builds every $(TESTS) target before this runs, so the only way + # to get here is a .c with no Makefile rule. That used to SKIP + # and still count toward "all N tests passed" — 953_arrlit_slice + # sat dark for weeks under a green gate. Fail loud instead. + { + printf 'FAIL %s (no binary %s)\n' "$name" "$bin" + printf 'unwired test: add $(BIN)/test_%s to TESTS + a build rule in Makefile\n' "$short" + } > "$prefix.status" + : > "$prefix.fail" exit 0 fi if "$bin" > "$prefix.out" 2> "$prefix.err"; then