make: wire test-lang (T1) into make test + test-commit

test-lang runs each test/lang/*_test.ww @test through the cstage ww
driver (the runtime value-assert leg, T1). It existed as a standalone
target but was not in any aggregate gate, so the pre-push gate carried
only test-lang-byteid (T2) for these families — and T2 is compile-only
(-c, .s byte-id), blind to a both-stages-wrong value. Wiring T1 in gives
make test and test-commit the runtime value coverage that the test/wcc
.c twins currently provide, the precondition for retiring those twins.

Kept out of test-unit (inner loop stays fast) and run-always in
test-commit (NOT in the content-key skip set — caching a value gate
reintroduces silent-skip-of-value). Isolated WW_PKGCACHE=$(OUT)/langcache
so concurrent make -j cannot corrupt the default cache.
This commit is contained in:
2026-06-22 08:31:06 +09:00
parent f56b056ed3
commit bb4ff6e27f

View File

@@ -3659,7 +3659,7 @@ sizelint:
peellint:
@sh tools/peellint
test: all sizelint peellint $(TESTS) test-lang-byteid
test: all sizelint peellint $(TESTS) test-lang test-lang-byteid
@WW=$(BIN)/ww BIN=$(BIN) sh test/run
test-unit: all sizelint peellint $(TESTS)
@@ -3683,7 +3683,7 @@ test-run: all
# NOT yet wired into `make test` (fold 6, gated on the T1 corpus).
test-lang: all
@set -e; for f in $(wildcard test/lang/*_test.ww); do \
echo "ww test $$f"; $(BIN)/ww test $$f; \
echo "ww test $$f"; WW_PKGCACHE=$(OUT)/langcache $(BIN)/ww test $$f; \
done; echo "test-lang: all ok"
# ---- test-lang-byteid: T2 cross-stage .s byte-id gate (fold 4) ---------
@@ -3754,7 +3754,7 @@ test-lang-byteid: all
# silent skip. NOT a substitute for the push bar: `make test` stays the
# no-skip bootstrap gate. Cache lives in out/.testcache (gitignored, wiped
# by `make clean`); a green `make test` primes it. See test/run.
test-commit: all sizelint peellint $(TESTS)
test-commit: all sizelint peellint $(TESTS) test-lang
@WW=$(BIN)/ww BIN=$(BIN) COMMIT=1 sh test/run
# ---- smoke: inner-loop cross-stage byte-id check on a SMALL input ------