real-debrid-downloader/tests
Sucukdeluxe 6cde08dac3 Fix: Komplett leere Liste nach unsauberem Neustart (Datenverlust bei Stromausfall/Crash waehrend Download)
Ursache: Session-Writes (writeFile + atomic rename) liefen ohne fsync. Waehrend eines
Downloads feuert persistSoon alle 700ms-3s, die Session-Datei bleibt damit dauerhaft
dirty im OS-Cache. Bei hartem Stromausfall auf NTFS ist die rename-Metadatentransaktion
journaled (durable), aber die Datenbloecke der temp-Datei sind nicht geflusht -> primary
zeigt nach Reboot auf Null/Garbage. Die .bak-Kopie stammt per copyFileSync aus einer
ebenfalls ungeflushten primary -> ebenfalls korrupt. loadSession faellt durch
primary -> bak -> temp auf emptySession() durch, und der naechste persistSoon speichert
diese leere Session ueber die Platte -> dauerhaft leer. Tritt nur bei UNSAUBEREM Neustart
auf (sauberes Beenden flusht ohnehin).

Fix in drei Schichten:
- Durable atomic write: temp wird vor dem rename gefsynct. Reihenfolge zwingend
  write -> fsync -> close -> rename (NTFS kann eine Datei mit offenem Handle nicht renamen).
  Sync-Pfad via openSync/writeSync/fsyncSync/closeSync, Async-Pfad via FileHandle.sync()
  (laeuft auf dem libuv-Threadpool, blockiert den Hot-Path nicht). Kein Throttle: ein
  throttle-skip wuerde eine ungeflushte temp ueber die durable primary renamen und das
  Korruptionsfenster wieder oeffnen.
- Read-Retry: readSessionFile wiederholt bei transienten Sperren (EBUSY/EPERM/EAGAIN, z.B.
  Virenscanner/Disk-not-ready beim Boot) 5x mit Backoff. EACCES und JSON-Parse-Fehler
  werden nicht wiederholt.
- Empty-Clobber-Guard: loadSessionWithStatus meldet, ob alle Tiers unlesbar waren (Status
  empty-unreadable). In dem Fall blockiert der DownloadManager das Speichern einer leeren
  Session ueber vorhandene Daten, bis wieder echte Daten vorliegen; die erste nicht-leere
  Speicherung hebt den Schutz auf.

Tests: tests/session-restart-loss.test.ts um Status-Klassifizierung, fsync-Nachweis,
async-Roundtrip (close-before-rename), EBUSY-Retry und Guard-Clear-Pfad erweitert.
Suite 929 gruen, tsc unveraendert bei 6 Baseline-Fehlern.
2026-06-19 22:42:05 +02:00
..
account-check.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
account-dialog-prefer-api.test.ts Fix: Bearbeiten eines Mega-Debrid-Accounts ändert nicht mehr heimlich die API/Web-Bevorzugung 2026-06-17 05:54:42 +02:00
account-rotation-log.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
app-order.test.ts Release v1.6.18 2026-03-04 17:31:20 +01:00
audit-log.test.ts Harden support logging and debug setup 2026-03-09 02:47:49 +01:00
auto-rename.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
backup-crypto.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
backup-mcp.test.ts Ferndiagnose-Backup: auch Full-Backup-Import schreibt die MCP-Dateien 2026-06-19 19:48:44 +02:00
backup-payload.test.ts Backup: nur Settings als Default + 4 Selektions/Flicker-Bugfixes 2026-06-07 04:40:54 +02:00
bestdebrid-web.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
cleanup.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
connection-code.test.ts Ferndiagnose (MCP): Verbindungscode + abgesicherter Fernzugriff + stdio-Bridge 2026-06-19 17:05:28 +02:00
container.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
conversion-trace.test.ts Diagnose: Vollstaendiges Conversion-Trace-Logging (conversion.log) fuer haengende/langsame Link-Umwandlung 2026-06-17 02:52:44 +02:00
debrid.test.ts Fix: Mega-Debrid 'Linkgenerierung lieferte kein Ergebnis' nicht mehr als 30s-Cooldown (schneller Transient) 2026-06-17 20:38:32 +02:00
debug-server-allowlist.test.ts Sicherheit: Allowlist anhand des echten Socket-Peers statt X-Forwarded-For 2026-06-19 17:10:11 +02:00
debug-server.test.ts Sicherheit: Allowlist anhand des echten Socket-Peers statt X-Forwarded-For 2026-06-19 17:10:11 +02:00
desktop-rename-log.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
download-completion.test.ts Fix: Stille Datei-Korruption auf Windows bei vorab-allozierten Downloads (Null-Bytes am Ende) 2026-06-17 04:48:11 +02:00
download-manager.test.ts Fix: Statistik-Doppelzaehlung bei Retry + Debrid-Link Key-Cooldown bei Abbruch (Nutzer-Nachforderung Audit) 2026-06-17 20:23:28 +02:00
error-ring.test.ts Add extended diagnostics logging 2026-06-07 17:00:06 +02:00
extractor-jvm.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
extractor.test.ts Fix: Nicht-Archiv-".00x"-Dateien werden beim Aufräumen nicht mehr gelöscht (Datenverlust) 2026-06-17 04:52:54 +02:00
fs-error.test.ts Add extended diagnostics logging 2026-06-07 17:00:06 +02:00
german-audio-integration.test.ts Feature: Tonspur-Ergebnis sichtbar am Paket (audioStripSummary) 2026-06-09 20:42:22 +02:00
hybrid-collect-race.test.ts Fix: Hybrid-Race liess .DL.+Doppeltonspur auf einzelnen Episoden zurueck 2026-06-10 15:53:47 +02:00
integrity.test.ts Fix: Falsch benannte Hash-Manifeste löschen keine korrekten Dateien mehr 2026-06-17 05:07:13 +02:00
item-log.test.ts Harden download integrity, extraction safety, and update security 2026-03-28 16:27:21 +01:00
link-export.test.ts Add app runtime statistics 2026-03-09 04:59:00 +01:00
link-parser.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
log-timestamp.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
mega-debrid-errors.test.ts Fix: Mega-Debrid-Umwandlung robust + parallel — schneller Retry, alle Accounts, sichtbarer Grund 2026-06-17 02:07:25 +02:00
mega-public-api.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
mega-web-fallback.test.ts Fix: Mega-Web Selbst-Cooldown bei belegter Queue + Legacy-Config Mega-Demotion (Audit Runde 9+10) 2026-06-17 14:23:41 +02:00
notify-hooks.test.ts Test: Regressionstests fuer die Failed-Transition-Benachrichtigung (Mixed-Paket, Dedup, Run-Guard, Marker-Freigabe) 2026-06-10 00:37:40 +02:00
notify.test.ts Fix: Webhook-Zustellung haertbar — Discord-Rate-Limit, Retries, Kappung, Logging 2026-06-10 00:17:57 +02:00
package-log.test.ts Harden download integrity, extraction safety, and update security 2026-03-28 16:27:21 +01:00
package-order.test.ts Backup: nur Settings als Default + 4 Selektions/Flicker-Bugfixes 2026-06-07 04:40:54 +02:00
realdebrid-web.test.ts Fix Real-Debrid web login session reuse 2026-03-09 00:03:05 +01:00
realdebrid.test.ts Release v1.4.27 with bug audit hardening fixes 2026-02-28 14:12:16 +01:00
rename-log.test.ts Add dedicated rename support logging 2026-03-09 04:48:58 +01:00
resolve-archive-items.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
selection.test.ts Backup: nur Settings als Default + 4 Selektions/Flicker-Bugfixes 2026-06-07 04:40:54 +02:00
self-check.ts Comprehensive bugfix release v1.6.45 2026-03-05 03:53:28 +01:00
session-log.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
session-restart-loss.test.ts Fix: Komplett leere Liste nach unsauberem Neustart (Datenverlust bei Stromausfall/Crash waehrend Download) 2026-06-19 22:42:05 +02:00
startup-health-check.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
storage.test.ts Fix: Mega-Web Selbst-Cooldown bei belegter Queue + Legacy-Config Mega-Demotion (Audit Runde 9+10) 2026-06-17 14:23:41 +02:00
support-bundle.test.ts Fix: Support-Bundle-Export friert die UI nicht mehr 1-2 Minuten ein (asynchrones IO) 2026-06-17 03:14:01 +02:00
trace-log.test.ts Harden support logging and debug setup 2026-03-09 02:47:49 +01:00
unrestrict-retry.test.ts Fix: Mega "bis Tagesreset gesperrt" parkt das Paket bis zum Reset statt es den ganzen Tag alle 2 min neu zu versuchen 2026-06-17 10:16:16 +02:00
update-install-flow.test.ts Fix: Download-Queue läuft nach fehlgeschlagenem Update weiter (kein Stillstand bis Neustart) 2026-06-17 05:50:55 +02:00
update-restart-resume.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
update.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
utils.test.ts chore: remove all source code comments and internal artifacts 2026-06-06 04:53:54 +02:00
video-processor.test.ts Fix: deutsche Tonspur-Erkennung waehlt nicht mehr eine falsch-getaggte Spur per Titel (Datenverlust-Schutz, Runde-7-Audit) 2026-06-17 11:30:32 +02:00