forked from chiki2bum2/SniperGold_ML
Implements the frozen P3_DATA_ENGINE_V1_SPEC (SHA 84bf0f217ffba51197112a6bbacbcc297058e04b5ca47f0459028fe33e0321e5). Components: engine/ producer (certify, chunkmap, parse, canonical, worker, dispatcher, aggregate, storage, journal, checkpoint, lock, evidence, manifest, run_complete, dataset_builder, cli) + engine/verify independent verifier (vparse, vaggregate, vinvariants, vcompare); headless CLI sniper-data; golden corpus G01-G17; unit/property/adversarial/mutation/legacy-diff/CLI suites. Qualification verdict: QUALIFIED (all 9 mandatory gates pass; independent verifier accepted). Spec, governance record, and legacy checkpoint untouched. G-14 NOT AUTHORIZED honored; no real-data processing, no pilot, no workload 46, no chunk 760 access.
76 lines
No EOL
2.1 KiB
Python
76 lines
No EOL
2.1 KiB
Python
"""Tiny deterministic test harness (no external test dependencies).
|
|
|
|
Each test registers a name + a callable returning (ok, detail). The harness
|
|
collects PASS/FAIL results and prints a summary. It deliberately provides no
|
|
assertion magic: every expectation is an explicit equality/condition check."""
|
|
import sys
|
|
import time
|
|
|
|
|
|
class Suite:
|
|
def __init__(self, name):
|
|
self.name = name
|
|
self.cases = []
|
|
|
|
def case(self, name):
|
|
def deco(fn):
|
|
self.cases.append((name, fn))
|
|
return fn
|
|
return deco
|
|
|
|
def run(self):
|
|
results = []
|
|
for name, fn in self.cases:
|
|
t0 = time.time()
|
|
try:
|
|
result = fn()
|
|
ok = result[0]
|
|
detail = result[1]
|
|
results.append((name, ok, detail, time.time() - t0))
|
|
except Exception as e:
|
|
results.append((name, False, "exception: %r" % e, time.time() - t0))
|
|
return results
|
|
|
|
|
|
def expect(cond, detail=""):
|
|
return (bool(cond), detail)
|
|
|
|
|
|
def eq(a, b, label=""):
|
|
return (a == b, "%s expected=%r actual=%r" % (label, b, a))
|
|
|
|
|
|
def summarize(results):
|
|
passed = sum(1 for r in results if r[1])
|
|
failed = [r for r in results if not r[1]]
|
|
out = "%s: %d/%d passed" % (results[0][0] if False else "", passed, len(results))
|
|
return passed, failed, out
|
|
|
|
|
|
def run_suites(suites):
|
|
"""Run many suites; return dict {suite: results} and overall verdict."""
|
|
flat = []
|
|
all_pass = True
|
|
for suite in suites:
|
|
results = suite.run()
|
|
flat.append((suite.name, results))
|
|
for name, ok, detail, _t in results:
|
|
if not ok:
|
|
all_pass = False
|
|
return flat, all_pass
|
|
|
|
|
|
def print_results(flat):
|
|
for sname, results in flat:
|
|
passed = sum(1 for r in results if r[1])
|
|
print("[%s] %d/%d passed" % (sname, passed, len(results)))
|
|
for name, ok, detail, t in results:
|
|
if not ok:
|
|
print(" FAIL %s :: %s" % (name, detail))
|
|
|
|
|
|
def assert_ok(result, label):
|
|
ok, detail = result
|
|
if not ok:
|
|
raise AssertionError("%s: %s" % (label, detail))
|
|
return ok |