diff --git a/server-internal/test-altabbruch.mjs b/server-internal/test-altabbruch.mjs index 6e764bd9..f0b0047b 100644 --- a/server-internal/test-altabbruch.mjs +++ b/server-internal/test-altabbruch.mjs @@ -117,4 +117,29 @@ pruefe("zweiter Durchlauf aendert nichts mehr", console.log(`\n===== ${ok} bestanden, ${fehl} fehlgeschlagen =====`); db.close(); -process.exit(fehl ? 1 : 0); +/* ⚠️ process.exitCode STATT process.exit() (geaendert 27.08.2026). + + Auf dem Server brach dieser Test reproduzierbar ab: + + node::RemoveEnvironmentCleanupHook … Assertion failed: (env) != nullptr + Statement::~Statement() … better_sqlite3.node + Abgebrochen + + Ein erster Versuch entfernte db.close() -- das half NICHT. Die + Ursache liegt eine Ebene tiefer: process.exit() beendet Node sofort, + waehrend better-sqlite3 noch offene Statements haelt. Deren + Aufraeumhaken laeuft dann ins Leere. + + process.exitCode setzt nur den Rueckgabewert; Node beendet sich + danach von selbst, sobald nichts mehr aussteht -- und raeumt dabei in + der richtigen Reihenfolge auf. + + WARUM DAS MEHR ALS EIN SCHOENHEITSFEHLER WAR + + Der Absturz kam NACH allen Pruefungen und VOR der Zusammenfassung. + Der Test meldete also einen Fehler, obwohl inhaltlich alles bestanden + war. In einer mit && verketteten Befehlsfolge blieb deshalb der + anschliessende Dienst-Neustart aus, und neue Endpunkte antworteten + weiter mit 404. Man sucht dann bei den Endpunkten -- die Ursache lag + beim Beenden eines Testprozesses. */ +process.exitCode = fehl ? 1 : 0; diff --git a/server-internal/test-personendaten.mjs b/server-internal/test-personendaten.mjs index 5026ec95..5736fd00 100644 --- a/server-internal/test-personendaten.mjs +++ b/server-internal/test-personendaten.mjs @@ -179,4 +179,29 @@ for (const e of ["", "-wal", "-shm"]) { } console.log(`\n===== ${ok} bestanden, ${fehl} fehlgeschlagen =====`); -process.exit(fehl ? 1 : 0); +/* ⚠️ process.exitCode STATT process.exit() (geaendert 27.08.2026). + + Auf dem Server brach dieser Test reproduzierbar ab: + + node::RemoveEnvironmentCleanupHook … Assertion failed: (env) != nullptr + Statement::~Statement() … better_sqlite3.node + Abgebrochen + + Ein erster Versuch entfernte db.close() -- das half NICHT. Die + Ursache liegt eine Ebene tiefer: process.exit() beendet Node sofort, + waehrend better-sqlite3 noch offene Statements haelt. Deren + Aufraeumhaken laeuft dann ins Leere. + + process.exitCode setzt nur den Rueckgabewert; Node beendet sich + danach von selbst, sobald nichts mehr aussteht -- und raeumt dabei in + der richtigen Reihenfolge auf. + + WARUM DAS MEHR ALS EIN SCHOENHEITSFEHLER WAR + + Der Absturz kam NACH allen Pruefungen und VOR der Zusammenfassung. + Der Test meldete also einen Fehler, obwohl inhaltlich alles bestanden + war. In einer mit && verketteten Befehlsfolge blieb deshalb der + anschliessende Dienst-Neustart aus, und neue Endpunkte antworteten + weiter mit 404. Man sucht dann bei den Endpunkten -- die Ursache lag + beim Beenden eines Testprozesses. */ +process.exitCode = fehl ? 1 : 0; diff --git a/server-internal/test-push-kette.mjs b/server-internal/test-push-kette.mjs index 983b5ebd..02ddda7b 100644 --- a/server-internal/test-push-kette.mjs +++ b/server-internal/test-push-kette.mjs @@ -215,4 +215,29 @@ for (const e of ["", "-wal", "-shm"]) { } console.log(`\n===== ${ok} bestanden, ${fehl} fehlgeschlagen =====`); -process.exit(fehl ? 1 : 0); +/* ⚠️ process.exitCode STATT process.exit() (geaendert 27.08.2026). + + Auf dem Server brach dieser Test reproduzierbar ab: + + node::RemoveEnvironmentCleanupHook … Assertion failed: (env) != nullptr + Statement::~Statement() … better_sqlite3.node + Abgebrochen + + Ein erster Versuch entfernte db.close() -- das half NICHT. Die + Ursache liegt eine Ebene tiefer: process.exit() beendet Node sofort, + waehrend better-sqlite3 noch offene Statements haelt. Deren + Aufraeumhaken laeuft dann ins Leere. + + process.exitCode setzt nur den Rueckgabewert; Node beendet sich + danach von selbst, sobald nichts mehr aussteht -- und raeumt dabei in + der richtigen Reihenfolge auf. + + WARUM DAS MEHR ALS EIN SCHOENHEITSFEHLER WAR + + Der Absturz kam NACH allen Pruefungen und VOR der Zusammenfassung. + Der Test meldete also einen Fehler, obwohl inhaltlich alles bestanden + war. In einer mit && verketteten Befehlsfolge blieb deshalb der + anschliessende Dienst-Neustart aus, und neue Endpunkte antworteten + weiter mit 404. Man sucht dann bei den Endpunkten -- die Ursache lag + beim Beenden eines Testprozesses. */ +process.exitCode = fehl ? 1 : 0; diff --git a/server-internal/test-webdesign-anfragen.mjs b/server-internal/test-webdesign-anfragen.mjs index bebc1491..a23b3bfa 100644 --- a/server-internal/test-webdesign-anfragen.mjs +++ b/server-internal/test-webdesign-anfragen.mjs @@ -190,4 +190,29 @@ console.log("\n5. Verwaltung ohne Anmeldung"); } console.log(`\n=== ${ok} bestanden, ${schlecht} gescheitert ===\n`); -process.exit(schlecht === 0 ? 0 : 1); +/* ⚠️ process.exitCode STATT process.exit() (geaendert 27.08.2026). + + Auf dem Server brach dieser Test reproduzierbar ab: + + node::RemoveEnvironmentCleanupHook … Assertion failed: (env) != nullptr + Statement::~Statement() … better_sqlite3.node + Abgebrochen + + Ein erster Versuch entfernte db.close() -- das half NICHT. Die + Ursache liegt eine Ebene tiefer: process.exit() beendet Node sofort, + waehrend better-sqlite3 noch offene Statements haelt. Deren + Aufraeumhaken laeuft dann ins Leere. + + process.exitCode setzt nur den Rueckgabewert; Node beendet sich + danach von selbst, sobald nichts mehr aussteht -- und raeumt dabei in + der richtigen Reihenfolge auf. + + WARUM DAS MEHR ALS EIN SCHOENHEITSFEHLER WAR + + Der Absturz kam NACH allen Pruefungen und VOR der Zusammenfassung. + Der Test meldete also einen Fehler, obwohl inhaltlich alles bestanden + war. In einer mit && verketteten Befehlsfolge blieb deshalb der + anschliessende Dienst-Neustart aus, und neue Endpunkte antworteten + weiter mit 404. Man sucht dann bei den Endpunkten -- die Ursache lag + beim Beenden eines Testprozesses. */ +process.exitCode = schlecht === 0 ? 0 : 1; diff --git a/server-internal/test-webdesign-paypal.mjs b/server-internal/test-webdesign-paypal.mjs index 48031feb..4f8a257c 100644 --- a/server-internal/test-webdesign-paypal.mjs +++ b/server-internal/test-webdesign-paypal.mjs @@ -234,4 +234,29 @@ console.log("\n3. Vollstaendiger Ablauf gegen einen nachgebauten PayPal-Server") } console.log(`\n=== ${bestanden} bestanden, ${gescheitert} gescheitert ===\n`); -process.exit(gescheitert === 0 ? 0 : 1); +/* ⚠️ process.exitCode STATT process.exit() (geaendert 27.08.2026). + + Auf dem Server brach dieser Test reproduzierbar ab: + + node::RemoveEnvironmentCleanupHook … Assertion failed: (env) != nullptr + Statement::~Statement() … better_sqlite3.node + Abgebrochen + + Ein erster Versuch entfernte db.close() -- das half NICHT. Die + Ursache liegt eine Ebene tiefer: process.exit() beendet Node sofort, + waehrend better-sqlite3 noch offene Statements haelt. Deren + Aufraeumhaken laeuft dann ins Leere. + + process.exitCode setzt nur den Rueckgabewert; Node beendet sich + danach von selbst, sobald nichts mehr aussteht -- und raeumt dabei in + der richtigen Reihenfolge auf. + + WARUM DAS MEHR ALS EIN SCHOENHEITSFEHLER WAR + + Der Absturz kam NACH allen Pruefungen und VOR der Zusammenfassung. + Der Test meldete also einen Fehler, obwohl inhaltlich alles bestanden + war. In einer mit && verketteten Befehlsfolge blieb deshalb der + anschliessende Dienst-Neustart aus, und neue Endpunkte antworteten + weiter mit 404. Man sucht dann bei den Endpunkten -- die Ursache lag + beim Beenden eines Testprozesses. */ +process.exitCode = gescheitert === 0 ? 0 : 1; diff --git a/server-internal/test-webdesign-portal.mjs b/server-internal/test-webdesign-portal.mjs index 65772203..1c164440 100644 --- a/server-internal/test-webdesign-portal.mjs +++ b/server-internal/test-webdesign-portal.mjs @@ -293,4 +293,29 @@ console.log("\n8. Fehlversuche"); } console.log(`\n=== ${ok} bestanden, ${schlecht} gescheitert ===\n`); -process.exit(schlecht === 0 ? 0 : 1); +/* ⚠️ process.exitCode STATT process.exit() (geaendert 27.08.2026). + + Auf dem Server brach dieser Test reproduzierbar ab: + + node::RemoveEnvironmentCleanupHook … Assertion failed: (env) != nullptr + Statement::~Statement() … better_sqlite3.node + Abgebrochen + + Ein erster Versuch entfernte db.close() -- das half NICHT. Die + Ursache liegt eine Ebene tiefer: process.exit() beendet Node sofort, + waehrend better-sqlite3 noch offene Statements haelt. Deren + Aufraeumhaken laeuft dann ins Leere. + + process.exitCode setzt nur den Rueckgabewert; Node beendet sich + danach von selbst, sobald nichts mehr aussteht -- und raeumt dabei in + der richtigen Reihenfolge auf. + + WARUM DAS MEHR ALS EIN SCHOENHEITSFEHLER WAR + + Der Absturz kam NACH allen Pruefungen und VOR der Zusammenfassung. + Der Test meldete also einen Fehler, obwohl inhaltlich alles bestanden + war. In einer mit && verketteten Befehlsfolge blieb deshalb der + anschliessende Dienst-Neustart aus, und neue Endpunkte antworteten + weiter mit 404. Man sucht dann bei den Endpunkten -- die Ursache lag + beim Beenden eines Testprozesses. */ +process.exitCode = schlecht === 0 ? 0 : 1;