fix(okr): drift-laas kommando-antall og haandhev rapport utenfor bundlen

This commit is contained in:
Kjell Tore Guttormsen 2026-08-02 10:36:26 +02:00
commit d63438581d
4 changed files with 92 additions and 8 deletions

View file

@ -18,7 +18,7 @@
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, readdirSync, rmSync, symlinkSync } from 'node:fs';
import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, readdirSync, existsSync, rmSync, symlinkSync } from 'node:fs';
import { execFileSync } from 'node:child_process';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
@ -363,3 +363,30 @@ test('(19d) GDPR-posisjonen staar i governance og ender paa «behold, men skjerm
'Datatilsynets vedtakskompetanse skal ikke siteres med paragrafnummer (kun delvis verifisert)',
);
});
test('(18j) CLI nekter aa skrive rapporten inn i bundlen den vurderer', () => {
// Skriptets header lover at rapporten ALDRI havner i bundlen. Prosa som lover
// noe koden ikke haandhever er nettopp det (19a) avviser for allowed-tools --
// samme standard maa gjelde her. Rapporten i treet ville dessuten blitt
// klassifisert av neste kjoering, altsaa selv-forurensning.
//
// Kjoerer mot en TMP-bundle, ikke den delte fixturen: i RED-fasen (foer vakten
// fantes) skrev nettopp denne casen `rapport.md` inn i tests/fixtures/ og
// roednet okf-check-suiten. Det er STATE-gotchaen «CLI-VERIFY SKRIVER I
// FIXTUREN» -- en test som kan skitne til delt state, gjoer det til slutt.
withTmp((tmp) => {
const rot = join(tmp, 'bundle');
mkdirSync(join(rot, 'dokumenter'), { recursive: true });
writeFileSync(join(rot, 'dokumenter', 'notat.md'), '---\ntype: Notat\n---\n\n# Notat\n');
const r = kjor([rot, join(rot, 'rapport.md')]);
assert.equal(r.code, 1, `forventet exit 1, fikk ${r.code}`);
assert.match(r.stderr ?? '', /inne i bundlen/i, 'feilmeldingen skal si hvorfor');
assert.ok(!existsSync(join(rot, 'rapport.md')), 'ingenting skal vaere skrevet i bundlen');
// Utenfor bundlen skal det fortsatt gaa fint.
const ok = kjor([rot, join(tmp, 'rapport.md')]);
assert.equal(ok.code, 0, `rapport utenfor bundlen skal gaa fint, fikk ${ok.code}`);
assert.ok(existsSync(join(tmp, 'rapport.md')), 'rapporten skal vaere skrevet utenfor bundlen');
});
});