O Map de tasks em DownloadManager nunca removia entradas; em um servidor de longa duração ele crescia sem limite, mesmo com os arquivos da sessão já apagados. O SessionManager agora avisa quando destrói uma sessão e o DownloadManager descarta as tasks dela.
19 lines
734 B
TypeScript
19 lines
734 B
TypeScript
import { mkdtempSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { vi } from "vitest";
|
|
|
|
/**
|
|
* Carrega os módulos do servidor com um STORAGE_ROOT temporário.
|
|
* O SessionManager lê a variável e cria o singleton no import, então o módulo
|
|
* precisa ser reimportado a cada teste.
|
|
*/
|
|
export async function loadModules() {
|
|
const storageRoot = mkdtempSync(join(tmpdir(), "downloader-test-"));
|
|
process.env.STORAGE_ROOT = storageRoot;
|
|
vi.resetModules();
|
|
const { sessionManager } = await import("../src/lib/SessionManager.js");
|
|
const { DownloadManager } = await import("../src/lib/DownloadManager.js");
|
|
return { storageRoot, sessionManager, DownloadManager };
|
|
}
|