Files
SGF/scripts/module-matrix-audit-tests.mjs
2026-11-04 09:37:20 +02:00

8 lines
2.0 KiB
JavaScript

import assert from 'node:assert/strict';import fs from 'node:fs';import {validateEvidence,validateOrigins} from './audit-module-matrix.mjs';
let checks=0;const ok=fn=>{fn();checks++;},fails=fn=>ok(()=>assert.throws(fn)),spec={file:'proof',checks:[{pointer:'/passed',equals:true}]};
ok(()=>assert.equal(validateEvidence(spec,()=>({passed:true})).verified_checks,1));fails(()=>validateEvidence(spec,()=>({passed:false})));fails(()=>validateEvidence(spec,()=>({})));fails(()=>validateEvidence({file:'proof',checks:[{pointer:'/errors',equals:0}]},()=>({errors:1})));
const selected={selected_cases:[{name:'chosen',proof:'junit.xml'}],totals:{distinct_tests:1},proofs:[{file:'junit.xml',sha256:'pin'}]},selectedSpec={file:'proof',selected_junit:true};
ok(()=>assert.equal(validateEvidence(selectedSpec,()=>selected,()=>'<testcase name="chosen" assertions="2"/><testcase name="old-failure"><failure/></testcase>').verified_checks,1));fails(()=>validateEvidence(selectedSpec,()=>selected,()=>'<testcase name="chosen"><failure/></testcase>'));fails(()=>validateEvidence(selectedSpec,()=>selected,()=>'<testcase name="chosen"><skipped/></testcase>'));fails(()=>validateEvidence(selectedSpec,()=>({...selected,totals:{distinct_tests:2}}),()=>''));fails(()=>validateEvidence({file:'empty'},()=>({passed:true})));
ok(()=>assert(validateOrigins({stages:[{id:'cost',origin_paths:[{id:'industrial',requires:[]},{id:'direct',requires:['workshop']}]},{id:'workshop'}]})));fails(()=>validateOrigins({stages:[{id:'cost',origin_paths:[{id:'bad',requires:['unknown']}]}]}));fails(()=>validateOrigins({stages:[{id:'cost',origin_paths:[{id:'self',requires:['cost']}]}]}));
const output=process.argv[2];if(!output||fs.existsSync(output))throw Error('Fresh test output required');fs.writeFileSync(output,JSON.stringify({passed:true,checks,missing_failed_and_skipped_evidence_refused:true,historical_failure_not_counted_when_unselected:true,invalid_origin_paths_refused:true,databases_used:0},null,2));console.log(JSON.stringify({passed:true,checks}));