lib/regex: rehome private-touching @tests to in-package regex_whitebox.ww
White-box @tests move into a colocated 'package regex' file (Hare +test.ha analogue; #6 non-T drop plays the build-tag role), black-box @tests stay in package regex_test — Go's foo/foo_test split. The wb/ stub driver is documented-temporary scaffolding: a same-dir importer file-resolves to regex.ww before dir-enumeration, so only a different-dir import bundles the whitebox sibling (task #33 retires it). CLAUDE.md rule-9 carve-out updated (#5 closed, gate was #6).
This commit is contained in:
@@ -85,6 +85,10 @@ static const struct ent ents[] = {
|
||||
{ .fixture = "lib/memio/memiotest.ww", .mode = M_ID },
|
||||
{ .fixture = "lib/os/ostest.ww", .mode = M_ID },
|
||||
{ .fixture = "lib/regex/regex_test.ww", .mode = M_ID },
|
||||
/* in-package white-box half (#9): the wb/ driver dir-resolves
|
||||
* `import regex` and bundles lib/regex/regex_whitebox.ww (package
|
||||
* regex), so this fixture byte-ids the moved engine probes. */
|
||||
{ .fixture = "lib/regex/wb/regex_test.ww", .mode = M_ID },
|
||||
{ .fixture = "lib/strconv/test/ftostest.ww", .mode = M_ID },
|
||||
/* graduated from #59.10 DIVERGE by the #62 float-literal fold fix
|
||||
* (wwstage lexer now folds through strconv.stof64, matching
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
/*
|
||||
* 989_regex_run — execute the lib/regex @test fixture (fold-1 data
|
||||
* model + fold-2a compile() + fold-2b tranche-A scaffolding) under
|
||||
* the C-side `ww run` driver and assert exit 0.
|
||||
* 989_regex_run — execute BOTH lib/regex @test halves under the C-side
|
||||
* `ww test` driver and assert exit 0:
|
||||
* 1. lib/regex/regex_test.ww — BLACK-BOX, package regex_test.
|
||||
* 2. lib/regex/wb/regex_test.ww — the WHITE-BOX driver (#9): its
|
||||
* `import regex` dir-resolves and bundles lib/regex/regex_whitebox.ww
|
||||
* (package regex), so -T collects the in-package engine probes.
|
||||
* Both are main-less @test files; -T synthesizes the entry, runs the
|
||||
* fork-per-test record-and-continue harness, and exits nonzero iff any
|
||||
* @test fails.
|
||||
*
|
||||
* Sibling to 984_base64_run / 989_sha256_run (9xx is full so this
|
||||
* shares the 989 prefix — the `short` name keys the binary, cf the
|
||||
* 949_* / 989_sha256 precedent). regex_test.ww carries its own
|
||||
* `export fn main()` that drives the data-model @test fns and signals
|
||||
* which case failed via the exit code, so this file is a thin wrapper
|
||||
* — no @test scanning, no synthetic main generation.
|
||||
* 949_* / 989_sha256 precedent).
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -39,20 +42,26 @@ main(void)
|
||||
char cwd[1024];
|
||||
if (getcwd(cwd, sizeof cwd) == NULL) return 1;
|
||||
|
||||
const char *src = "lib/regex/regex_test.ww";
|
||||
char path[1024], cmd[2048];
|
||||
snprintf(path, sizeof path, "%s/%s", cwd, src);
|
||||
/* timeout 180 per repo convention (732/775; test/run does not
|
||||
* bound runtime): the fold-2c zero-length findall rows turn a
|
||||
* regression of the ha:946-952 rune-advancement guard into an
|
||||
* infinite loop (frees are no-ops, so OOM is the only other
|
||||
* exit) — timeout converts the hang into a loud 124. */
|
||||
snprintf(cmd, sizeof cmd, "timeout 180 %s/ww test %s", bin, path);
|
||||
int rc = runwait(cmd);
|
||||
if (rc != 0) {
|
||||
fprintf(stderr, "regex_run FAIL: %s exited %d\n", src, rc);
|
||||
return 1;
|
||||
const char *srcs[] = {
|
||||
"lib/regex/regex_test.ww",
|
||||
"lib/regex/wb/regex_test.ww",
|
||||
};
|
||||
for (size_t i = 0; i < sizeof srcs / sizeof srcs[0]; i++) {
|
||||
const char *src = srcs[i];
|
||||
char path[1024], cmd[2048];
|
||||
snprintf(path, sizeof path, "%s/%s", cwd, src);
|
||||
/* timeout 180 per repo convention (732/775; test/run does not
|
||||
* bound runtime): the fold-2c zero-length findall rows turn a
|
||||
* regression of the ha:946-952 rune-advancement guard into an
|
||||
* infinite loop (frees are no-ops, so OOM is the only other
|
||||
* exit) — timeout converts the hang into a loud 124. */
|
||||
snprintf(cmd, sizeof cmd, "timeout 180 %s/ww test %s", bin, path);
|
||||
int rc = runwait(cmd);
|
||||
if (rc != 0) {
|
||||
fprintf(stderr, "regex_run FAIL: %s exited %d\n", src, rc);
|
||||
return 1;
|
||||
}
|
||||
printf("regex_run: %s ok\n", src);
|
||||
}
|
||||
printf("regex_run: %s ok\n", src);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user