Commit Graph

68 Commits

Author SHA1 Message Date
0b24b11d65 compiler: implement blank package name semantics 2026-08-23 15:33:59 +09:00
e67b8e1bc4 driver: ignore package documentation sources 2026-08-23 11:29:25 +09:00
f6fabfc6ac driver: ignore wrong-suffix files as named sources 2026-08-23 03:18:19 +09:00
59fc76964c run: reject .ww directories as named sources 2026-08-23 01:07:07 +09:00
ca0e533c13 build: route .ww directories as packages 2026-08-22 23:39:06 +09:00
2e5451a601 build: omit named test source operands 2026-08-22 21:53:10 +09:00
3922f1c34e fix: ignore hidden named source operands 2026-08-22 19:28:54 +09:00
6279d46652 fix: allow lexical import shadowing 2026-08-22 17:53:31 +09:00
89f519d5cb fix: reject bare import bindings 2026-08-22 15:17:10 +09:00
91fce80b37 test: accept empty skip reasons 2026-08-22 12:59:08 +09:00
78c9eee82d ww imports: reject init bindings before recovery 2026-08-22 04:27:23 +09:00
4069eda942 ww source: reject malformed UTF-8 2026-08-22 03:14:53 +09:00
d61805262e ww output: match Go exact -o parsing 2026-08-22 01:59:02 +09:00
4b9968e4e6 ww source: reject raw NUL characters 2026-08-21 23:03:14 +09:00
9381f8fb8e ww source: align UTF-8 BOM placement 2026-08-21 20:34:10 +09:00
ee4573bf55 ww imports: require imports before declarations 2026-08-21 19:20:52 +09:00
17b2879c3e ww test: report no tests to run 2026-08-21 16:15:12 +09:00
2387d3e2d2 ww package: reject non-function main declarations 2026-08-21 15:13:09 +09:00
2b7fafde0c ww test: omit marker for empty list results 2026-08-21 14:11:24 +09:00
8a5fc8977f ww: preserve original environment for directory tests 2026-08-21 12:57:55 +09:00
bcc3aa9336 ww: report no test files for empty test packages 2026-08-21 11:59:46 +09:00
394e46ff2f ww: print final status for explicit test failures 2026-08-21 07:39:54 +09:00
b5fb478613 ww: put test result trailers on a new line 2026-08-21 06:19:26 +09:00
9b6b1100f4 ww: put selected toolchain first in test PATH 2026-08-21 05:30:10 +09:00
1b71250ad5 ww: protect public install outputs 2026-08-21 04:11:01 +09:00
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
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
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
028da6323e test: align package fixtures with Go semantics 2026-08-13 23:43:07 +09:00
a88078faf8 docs: record direct package export boundary 2026-08-12 18:42:26 +09:00
c4bdc5dc4f docs: record persistent builder identity 2026-08-12 15:51:55 +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
0ecdf75a0d test: re-home 738_module_decl into UNIT_SOURCES
Go does not distinguish bootstrap observers from unit tests: an
in-process test is a unit test. 738 is pure parsefile calls (arena +
lexinit + parserinit, AST assertions, zero subprocess or artifact
claims) — the 200_parse class, misfiled among the residuals. The
fleet partition now reads six units / six bootstrap / three platform
and the residual class is empty; COMPILER_WRAPPER_SOURCES drops it
by the existing filter-out. Doc roster updated (also refreshes the
corpus prose to the current 1745/3490 pin and retires the stale
794-era paragraph).
2026-08-08 19:21:49 +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
c3fc2bdb27 docs: carrier fleet at its terminal floor; suite roster 2026-08-08 15:51:19 +09:00
08cae16a0a docs: @test shape diagnostics landed 2026-08-08 14:20:34 +09:00
ddb44405ea docs: coordinator concurrency + tree walk are landed driver work 2026-08-08 13:53:15 +09:00