Veroeffentlichung ueber Gitea, BOM-Toleranz, Tests fuer den YAML-Leser

Das Repo ist jetzt oeffentlich, die Pakete haengen an der Veroeffentlichung
`latest`. Damit funktioniert `abdulive update` ohne Token.

- config.example.yaml traegt die gepruefte Update-Adresse
- .gitea/workflows/release.yml baut beim Tag und ersetzt `latest`
- Byte Order Mark: Notepad und `Set-Content -Encoding utf8` schreiben eines,
  und ohne Behandlung hiess der erste Schluessel in der config.yaml
  "\ufeffchannel" - die Einstellung waere stillschweigend ignoriert worden
- Der YAML-Leser hatte gar keine Tests; er liest die Konfiguration, an der
  alles haengt. Jetzt acht.

Der Updater ist einmal komplett durchgelaufen: 0.4.0 erkannt, 119 MB geladen,
Pruefsumme geprueft, bereitgelegt, von launcher.ps1 getauscht.

93 Tests, Typpruefung sauber.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AhVSfMFdWnXKCv5JfLnArZ
This commit is contained in:
ZeasyAlexandClaude Opus 5 committed 2026-09-09 17:43:43 +02:00
1 parent 5f6301268a
commit 08f7c21450
8 files changed
+165 -33

No files matched your search

+10 -1
View File
@@ -5,7 +5,7 @@
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { isNewer, looksLikeLogin } from './update.ts';
import { isNewer, looksLikeLogin, parseJsonLoose } from './update.ts';
test('vergleicht Versionen als Zahlen, nicht als Text', () => {
// Der Fall, der bei Zeichenkettenvergleich falsch herauskaeme
@@ -42,3 +42,12 @@ test('haelt ein echtes Manifest nicht faelschlich fuer HTML', () => {
}));
assert.equal(looksLikeLogin(null, manifest), false);
});
test('ein Byte Order Mark macht das Manifest nicht unlesbar', () => {
// Windows PowerShell 5.1 schreibt bei `Set-Content -Encoding utf8` eines,
// und Notepad ebenso. JSON.parse verschluckt sich daran.
const mitBom = '{"version":"0.5.0"}';
assert.throws(() => JSON.parse(mitBom));
assert.deepEqual(parseJsonLoose(mitBom), { version: '0.5.0' });
assert.deepEqual(parseJsonLoose('{"a":1}'), { a: 1 });
});