Commit Graph

45 Commits

Author SHA1 Message Date
ce91f6662c ww build: honor output directories 2026-08-21 02:32:56 +09:00
71a9da2058 ww build: discard exact null outputs 2026-08-20 23:17:23 +09:00
84f5e68709 ww build: honor Go output permission modes 2026-08-20 22:03:09 +09:00
77168fd891 ww test: allow -c with persistent workdirs 2026-08-20 20:40:01 +09:00
db5782eff9 ww test: retain directory test binaries like Go 2026-08-20 20:13:08 +09:00
f28843f2f5 ww test: preserve combined product output order
Go 1.26.5 maps each test binary's stdout and stderr to the same product writer. Teach the captured executor to share one open file description for byte-equal output paths, then make directory test products emit that one ordered capture on coordinator stdout. Build captures and inherited-stdio routes remain unchanged.\n\nKeep the executor mechanism, package policy, native Cstage/WWstage proof, and normative contract together so every commit preserves the observable test-output behavior.
2026-08-20 18:29:09 +09:00
b996099270 test: prove captured action stdin isolation 2026-08-20 17:39:10 +09:00
6e9591d4b4 test: prove package-source test execution cwd 2026-08-20 16:25:43 +09:00
3d596388bb test: close case-fold rejection residue proof 2026-08-15 16:31:48 +09:00
6974bec878 test: prove case-fold collision preflight 2026-08-15 16:11:01 +09:00
7d73d31b38 test: prove canonical directory test products 2026-08-15 02:50:00 +09:00
5c0e468f53 test: prove platform filename selection 2026-08-14 21:44:26 +09:00
763bbc8f25 test: prove package initialization semantics 2026-08-14 19:02:49 +09:00
10e02a00ee test: prove ordinary import binding modes 2026-08-14 10:56:54 +09:00
351f4a25bc ww: invalidate partial package commits 2026-08-14 05:12:45 +09:00
04d9560d51 test: remove package-wide import assumptions 2026-08-14 03:45:02 +09:00
a841278333 test: prove declared package import semantics 2026-08-14 03:08:16 +09:00
9a2812347c test: prove recursive local package patterns 2026-08-13 23:42:54 +09:00
5d50788e46 test: prove local vendor package semantics 2026-08-13 19:18:05 +09:00
088105413d test: prove internal package visibility 2026-08-13 15:38:03 +09:00
dab3cb4998 ww: select build action from package declaration 2026-08-13 13:36:10 +09:00
b58c1f152a test: prove package universes beyond 256 actions 2026-08-13 08:08:53 +09:00
f45844ffa8 test: close long package reuse proofs 2026-08-13 05:57:16 +09:00
0cc5398cfe test: replace stale package selector limit fixture 2026-08-13 05:39:39 +09:00
5705c0e3fa test: prove long package identity semantics 2026-08-13 05:38:05 +09:00
4377634bb9 ww: preserve command package identities 2026-08-13 03:37:08 +09:00
cc6799c3b1 test: prove canonical directory package identity 2026-08-13 02:48:17 +09:00
27a501fc31 test: prove command-global package action reuse 2026-08-13 00:54:12 +09:00
1724ea086f build: make executable and test roots package actions 2026-08-12 22:00:02 +09:00
edd3f4ee83 build: pass direct exports to package compilers 2026-08-12 18:42:22 +09:00
470aacef95 test: cover package and runtime library roots 2026-08-12 15:18:51 +09:00
bb71b31f81 test: cover exact package tool invocation paths 2026-08-12 14:29:17 +09:00
f709a2c440 test: cover shared multi-directory package builds 2026-08-12 13:54:22 +09:00
02574c88f1 test: cover shared directory test build plans 2026-08-12 11:42:29 +09:00
7d25ad9f9f test: cover directory package test graphs 2026-08-12 03:46:58 +09:00
83f5956df2 test: banner purge + WHY-only comment sweep (rule 8)
Every section banner dies (103 -> 0) across test/lang, the observer
suites, the C carriers, and the five comment-heavy corpus fixtures;
banner provenance (#N cites, carrier numbers, repair-cluster labels)
folded into headers or adjacent WHY comments. Narration deleted; row
provenance, ref cites, divergence pins, and layout contracts kept
(fwd-ref decl-order guards and bootstrap-gate corpus rationale
restored where the sweep over-cut). Comment-only proven: all 3742
wwbuild workdir .s byte-identical before/after; test-commit and
test-byteid (161 lang + 1399 data, 0 pinned-divergent) green.
2026-08-08 21:40:23 +09:00
659e859f34 ww: test sources are *_test.ww only (Go contract)
Go compiles only _test.go files as tests; discovery now keys on the
_test.ww suffix alone. The line-leading-@test compatibility allowance
(noncanonical filenames admitted as test sources) is removed from both
driver stages and the coordinator. An @test declaration outside a
*_test.ww file is rejected loudly ("@test declaration outside
*_test.ww", wording byte-identical cs/ww) instead of silently running
under compose or silently dropping in a non-T build (#6). Tree audit
found zero real carriers; the two allowance fixtures flip canonical
(dep_test.ww, widget_test.ww). New pins: direnum attest-noncanon
reject row (both-stage stderr parity) and the coordinator
noncanonical_attest_rejected package row.
2026-08-08 20:38:02 +09:00
5a263cb115 test: library behavior owned by the coordinator lib/... walk
Go has no per-file test targets: the PACKAGE is the unit of testing
(`go test ./...`) and same-package test files compose together. The
59-target LIBRARY_TESTS fan-out (per-file -w workdirs, one Make rule
per suite) collapses to one line: `ww test -j $(JOBS) -w
out/wwbuild/wwtest-lib -I lib/ww lib/...` — the regex dir-route
precedent generalized. The lib/regex line and the per-file pattern
rule instance dissolve with it (test/lang keeps its own rule).

Measured before committing (-j4, strings edit row): old per-file
warm 4.7-4.9s; bare walk 5.2-5.6s — a real regression, so the
coordinator first gained the brief's persistent per-package workdir:
`-w DIR` on a package target forwards to wwpackage, which keys
DIR/<dir>_<pkg> per group and hands it to each inner `ww test -c`
build. Reuse stays entirely with the driver's existing
content-identity contract — the coordinator adds pure path policy,
no cache machinery. Both driver stages drop their package-target -w
rejects (forward instead); -w with -c stays rejected at the
coordinator (two ownership contracts). After: 3.9-4.0s on the edit
row, 1.0s warm no-op, 2.5s cold — faster than the old flow on every
row.

package_test's tree -w reject row becomes the positive contract
(cold+warm byte-stable stream, cs/ww same) plus the -c conflict
reject. libbyteid roster shape DECIDED: per-file fx entries stay —
every enrolled file is still standalone-buildable, so coverage is
byte-for-byte unchanged; the dir-mode entry form arrives only with
the B3 shared-helper split that first needs it. Docs: owner table,
target table, -w contract paragraph.
2026-08-08 19:35:50 +09:00
192ddd4c66 ww: package-level -c -o names the single package's test artifact
The last Open-driver-work bullet. `-c -o <name>` replaces the fixed
<package>.test stem for exactly one package; the coordinator rejects a
multi-package fan-out ("cannot use -o with multiple packages", Go's
`go test -o` rule) and -o without -c is rejected at the driver
("needs -c for a package target" — a plain run executes from the temp
root, so a caller-owned name has nothing to name). Both driver stages
byte-identical wording; -S keeps its single-file-only reject.

package_test gains the contract row (naming, fixed-stem absence,
artifact runs, both rejects, both drivers); the tree-mode -o row's
pinned wording follows the contract.
2026-08-08 17:30:36 +09:00
5ba410ff60 wcc: reject exported/bodyless/duplicate @test shapes
Both frontends, byte-stable fragments; -T-mode checks, so the rows
live in test/package (the fixture compile cell cannot reach -T).
2026-08-08 14:19:50 +09:00
74c9243ca3 test: retire 911_attest_record; record-continue owned by test/package 2026-08-08 13:47:16 +09:00
15137054e2 wwtest: bounded package concurrency via exec start/poll 2026-08-08 13:43:55 +09:00
0f0fd36563 ww: recursive DIR/... package discovery for ww test 2026-08-08 13:35:34 +09:00
90af21e132 test/package: wire the runtime fixture set into package_test
test/package/runtime/ was a manual README-driven corpus with no
target. Its unique surface — the driver's single-file ww test leg,
the unmet-expected-abort outcome, and the published -c binary's own
CLI (repeated globs, -list, -timeout-ms, direct-binary timeout and
descendant handling) — is now asserted by three new @test fns in
package_test.ww; the README drops its manual-run instructions.
2026-08-08 00:39:53 +09:00
7a2c21acfb wwtest: native package-test coordinator
Single-directory package-test planner: discovers *.ww, groups white-box
and external <pkg>_test sources, composes the combined test package,
builds it through the sibling ww driver, and runs it with the runtime's
-package/-list/-timeout-ms contract. test/package holds its E2E corpus
and the manual runtime fixture set.
2026-08-07 23:01:03 +09:00