From 60c1e7be942f8c9baae426a4e3dbef960b7b28da Mon Sep 17 00:00:00 2001 From: Dogfather Date: Sat, 22 Aug 2026 22:57:59 +0200 Subject: [PATCH] Test: Absturz beim Beenden vermeiden (better-sqlite3) --- server-internal/test-aufgaben-postfach.mjs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/server-internal/test-aufgaben-postfach.mjs b/server-internal/test-aufgaben-postfach.mjs index 196edd86..634c4775 100644 --- a/server-internal/test-aufgaben-postfach.mjs +++ b/server-internal/test-aufgaben-postfach.mjs @@ -203,6 +203,18 @@ pruefe("Die Aufgaben des ANDEREN Kunden bleiben", db.prepare(`SELECT COUNT(*) n FROM wd_aufgaben WHERE kunde_id = ?`).get(kundeA).n > 0); console.log(`\n===== ${ok} bestanden, ${fehler} fehlgeschlagen =====`); -db.close(); -rmSync(tmp, { recursive: true, force: true }); -process.exit(fehler ? 1 : 0); + +/* Weder db.close() noch process.exit(). + + Beides zusammen bringt better-sqlite3 zum Absturz ("Assertion failed: + (env) != nullptr"): process.exit() reisst die Node-Umgebung ab, + waehrend der Aufraeumer der geschlossenen Datenbank noch laeuft. Der + Absturz kam NACH allen Prüfungen, verschluckte aber die gepufferte + Ausgabe -- es sah deshalb so aus, als waere der Test gar nicht + gelaufen. Eine halbe Stunde Fehlersuche an der falschen Stelle. + + process.exitCode setzen statt exit() aufzurufen: Node beendet sich von + selbst, wenn nichts mehr zu tun ist, raeumt dabei ordentlich auf und + schreibt die Ausgabe vollstaendig raus. */ +process.on("exit", () => rmSync(tmp, { recursive: true, force: true })); +process.exitCode = fehler ? 1 : 0;