From ff7e19b55824907e7a7df73d40e529b95100b5ce Mon Sep 17 00:00:00 2001 From: Jarvis Jr Hermes Date: Fri, 2 Oct 2026 10:35:47 +0000 Subject: [PATCH] test: cover diagram cleanup collision and receipt boundaries --- scripts/portal.test.mjs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/scripts/portal.test.mjs b/scripts/portal.test.mjs index 7247ae8..cf4cbe7 100644 --- a/scripts/portal.test.mjs +++ b/scripts/portal.test.mjs @@ -1,8 +1,36 @@ import {test} from 'node:test'; import {createHash} from 'node:crypto'; import assert from 'node:assert/strict'; -import {readFileSync, existsSync} from 'node:fs'; +import {readFileSync, existsSync, mkdtempSync, mkdirSync, writeFileSync, symlinkSync, unlinkSync, rmSync, readdirSync} from 'node:fs'; +import {tmpdir} from 'node:os'; +import {join, resolve} from 'node:path'; +import {spawnSync} from 'node:child_process'; const read = p => readFileSync(p, 'utf8'); +test('real build removes stale diagrams, keeps receipts private and rejects collisions', () => { + const root = mkdtempSync(join(tmpdir(), 'eldorado-diagrams-')); + try { + mkdirSync(join(root,'diagrams')); + symlinkSync(resolve('vendor'),join(root,'vendor'),'dir'); + const spec = JSON.parse(read('diagrams/organization-structure.architecture.json')); + const writeSpec = name => { + spec.meta.output = `static/diagrams/${name}/index.html`; + writeFileSync(join(root,`diagrams/${name}.architecture.json`),JSON.stringify(spec)); + }; + const build = () => spawnSync(process.execPath,[resolve('scripts/build-diagrams.mjs')],{cwd:root,encoding:'utf8'}); + writeSpec('old'); + let result = build(); assert.equal(result.status,0,result.stderr); + assert(existsSync(join(root,'static/diagrams/old/index.html'))); + assert(!readdirSync(join(root,'static/diagrams'),{recursive:true}).some(p=>p.endsWith('.delivery.json'))); + unlinkSync(join(root,'diagrams/old.architecture.json')); + writeSpec('new'); + result=build(); assert.equal(result.status,0,result.stderr); + assert(!existsSync(join(root,'static/diagrams/old'))); + assert(!existsSync(join(root,'static/diagrams/old.json'))); + writeFileSync(join(root,'diagrams/new.workflow.json'),JSON.stringify(spec)); + result=build(); assert.notEqual(result.status,0); + assert(result.stderr.includes('Duplicate diagram output')); + } finally {rmSync(root,{recursive:true,force:true});} +}); test('vendored source matches the reviewed upstream snapshot', () => { const checksums = JSON.parse(read('vendor/archify-checksums.json')); for (const [path, hash] of Object.entries(checksums)) {