wwfixture: declarative fixture runner
Discovers test/wcc/data, hard-pins corpus identity (1,224 fixtures, 314 error / 12 compile / 136 run / 762 run-exit, sha256 name hash), schedules both frontend cells per fixture through os.exec with per-cell capture dirs, and emits the strict wwfix TSV result stream. integration.sh is the black-box owner of the CLI/protocol boundary.
This commit is contained in:
98
internal/wwfixture/types.ww
Normal file
98
internal/wwfixture/types.ww
Normal file
@@ -0,0 +1,98 @@
|
||||
package wwfixture;
|
||||
|
||||
def protocolversion: i32 = 1;
|
||||
def corpuscount: i32 = 1224;
|
||||
def errorcount: i32 = 314;
|
||||
def compilecount: i32 = 12;
|
||||
def runcount: i32 = 136;
|
||||
def runexitcount: i32 = 762;
|
||||
def nativecount: i32 = 2448;
|
||||
def corpushash: str = "8b522e42cbce8b389e33e917229dede8045d85f1af0c54630cfef83c4ef242be";
|
||||
|
||||
type directive = enum i32 {
|
||||
ERROR = 0,
|
||||
RUN = 1,
|
||||
RUNEXIT = 2,
|
||||
COMPILE = 3,
|
||||
};
|
||||
|
||||
type stage = enum i32 {
|
||||
C = 0,
|
||||
WW = 1,
|
||||
};
|
||||
|
||||
type phase = enum i32 {
|
||||
COMPILE = 0,
|
||||
BUILD = 1,
|
||||
RUN = 2,
|
||||
};
|
||||
|
||||
type verdict = enum i32 {
|
||||
PASS = 0,
|
||||
FAIL = 1,
|
||||
ERROR = 2,
|
||||
};
|
||||
|
||||
type termination = enum i32 {
|
||||
EXIT = 0,
|
||||
SIGNAL = 1,
|
||||
TIMEOUT = 2,
|
||||
SETUP = 3,
|
||||
};
|
||||
|
||||
type fixture = struct {
|
||||
name: str,
|
||||
id: str,
|
||||
source: str,
|
||||
directive: directive,
|
||||
diagnostic: str,
|
||||
wwdiagnostic: str,
|
||||
exitcode: i32,
|
||||
};
|
||||
|
||||
type corpus = struct {
|
||||
root: str,
|
||||
fixtures: []fixture,
|
||||
};
|
||||
|
||||
type identity = struct {
|
||||
ordinal: i32,
|
||||
fixtureindex: i32,
|
||||
stage: stage,
|
||||
};
|
||||
|
||||
type cellresult = struct {
|
||||
ordinal: i32,
|
||||
id: str,
|
||||
stage: stage,
|
||||
phase: phase,
|
||||
verdict: verdict,
|
||||
termination: termination,
|
||||
code: i32,
|
||||
durationns: i64,
|
||||
capture: str,
|
||||
};
|
||||
|
||||
fn stageword(s: stage) str = {
|
||||
if (s == stage.C) { return "c"; };
|
||||
return "ww";
|
||||
};
|
||||
|
||||
fn phaseword(p: phase) str = {
|
||||
if (p == phase.COMPILE) { return "compile"; };
|
||||
if (p == phase.BUILD) { return "build"; };
|
||||
return "run";
|
||||
};
|
||||
|
||||
fn verdictword(v: verdict) str = {
|
||||
if (v == verdict.PASS) { return "pass"; };
|
||||
if (v == verdict.FAIL) { return "fail"; };
|
||||
return "error";
|
||||
};
|
||||
|
||||
fn terminationword(t: termination) str = {
|
||||
if (t == termination.EXIT) { return "exit"; };
|
||||
if (t == termination.SIGNAL) { return "signal"; };
|
||||
if (t == termination.TIMEOUT) { return "timeout"; };
|
||||
return "setup";
|
||||
};
|
||||
Reference in New Issue
Block a user