Gästetexte: Hinweis-Dokument ohne Entwurf-Wort, Archiv-Schutz

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-05 04:21:17 +00:00
1 parent 495d5ad9ca
commit 722c686690
5 files changed
+62 -9

No files matched your search

+29
View File
@@ -60,6 +60,35 @@ test('archiv_aktuelle_fassung: --check vergleicht mit der eingecheckten Datei (E
assert.match(meldungen[0], /Aufruf: node scripts\/termine-texte-archiv\.mjs \[--check\]/)
})
test('archiv_schutz: eine abweichende Datei der aktuellen Fassung wird nur mit --force überschrieben; gleiche oder neue Dateien bleiben erlaubt', (t) => {
const root = mitTempRoot(t)
const ziel = join(root, archivPfad())
const meldungen = []
const mitFehler = { log: () => {}, fehler: (m) => meldungen.push(m) }
// neue Datei und identische Datei: erlaubt
assert.equal(lauf([], { ...mitFehler, root }), 0)
assert.equal(readFileSync(ziel, 'utf8'), baueArchiv())
assert.equal(lauf([], { ...mitFehler, root }), 0, 'derselbe Inhalt darf erneut geschrieben werden')
assert.deepEqual(meldungen, [])
// abweichende Datei (zum Beispiel die ausgelieferte Fassung mit einem nachträglich geänderten Text): Exit 1, Datei unverändert
const ausgeliefert = `${baueArchiv()}Nachträglich geändert.\n`
writeFileSync(ziel, ausgeliefert)
assert.equal(lauf([], { ...mitFehler, root }), 1)
assert.equal(readFileSync(ziel, 'utf8'), ausgeliefert, 'ohne --force bleibt die Datei, wie sie war')
assert.match(meldungen[0], /weicht ab/)
assert.match(meldungen[0], /--force/)
assert.ok(meldungen[0].includes(archivPfad()), 'die Meldung nennt die Datei')
// mit --force wird überschrieben
assert.equal(lauf(['--force'], { ...mitFehler, root }), 0)
assert.equal(readFileSync(ziel, 'utf8'), baueArchiv())
// --check bleibt schreibfrei; --force zusammen mit --check ist ein falscher Aufruf
writeFileSync(ziel, ausgeliefert)
assert.equal(lauf(['--check'], { ...mitFehler, root }), 1)
assert.equal(readFileSync(ziel, 'utf8'), ausgeliefert)
assert.equal(lauf(['--check', '--force'], { ...mitFehler, root }), 2)
assert.equal(readFileSync(ziel, 'utf8'), ausgeliefert)
})
test('archiv_inhalt: alle Gästetexte stehen wörtlich im Archiv, die Betriebsangaben als Platzhalter', () => {
const text = baueArchiv()
const zitat = (s) => s.split('\n').map((z) => (z === '' ? '>' : `> ${z}`)).join('\n')