From efdd491d639b8bb8ff72a320799dc8f53a6f0bc6 Mon Sep 17 00:00:00 2001 From: bchanot Date: Fri, 9 Oct 2026 15:31:26 +0200 Subject: [PATCH] fix(make): test target names every red suite and prints a summary A full make test printed only the == headers and an aggregate exit code, so finding the red suite meant re-running every suite one by one (the pre-merge check of 2026-10-09 took 7.5 min for that reason). The loop now prints FAIL as it happens and ends with 'all suites green' or ' suite(s) red: '; the exit code is unchanged. --- Makefile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 2141a32..6aa49f1 100644 --- a/Makefile +++ b/Makefile @@ -34,12 +34,15 @@ test: ## Run deterministic tests hermetically (one: make test suite=lib/tests/x. @# fire inside the throwaway repos the suites build. The export lives @# HERE so nobody has to type the (denied) env-prefix form by hand. @export GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=/dev/null; \ - fail=0; for t in $(or $(suite),$(SUITES)); do \ + fail=0; red=""; for t in $(or $(suite),$(SUITES)); do \ echo "== $$t"; \ case "$$(basename "$$t")" in \ - run-release-candidate.sh) RC_WORK=$$(mktemp -d) RC_TAG=1 bash "$$t" || fail=1 ;; \ - *) bash "$$t" || fail=1 ;; \ - esac; done; exit $$fail + run-release-candidate.sh) RC_WORK=$$(mktemp -d) RC_TAG=1 bash "$$t" || { fail=1; red="$$red $$t"; echo "FAIL $$t"; } ;; \ + *) bash "$$t" || { fail=1; red="$$red $$t"; echo "FAIL $$t"; } ;; \ + esac; done; \ + if [ $$fail -eq 0 ]; then echo "all suites green"; \ + else echo "$$(echo $$red | wc -w | tr -d ' ') suite(s) red:$$red"; fi; \ + exit $$fail scan-secrets: ## Gitleaks sweep: this repo's history + ~/.claude. Extra repos: make scan-secrets repos="path1 path2" @command -v gitleaks >/dev/null 2>&1 || { echo "gitleaks not installed — https://github.com/gitleaks/gitleaks"; exit 1; }