// Environnement de test : loguix dans le scratchpad, données YouTube isolées (jamais backend/data/youtube) const path = require('path'); const fs = require('fs'); const os = require('os'); const BACKEND = require("path").resolve(__dirname, "../.."); // Données jetables hors du dépôt const SCRATCH = path.join(os.tmpdir(), 'chopin-tests'); fs.mkdirSync(SCRATCH, { recursive: true }); const LOGS = path.join(__dirname, 'logs'); fs.mkdirSync(LOGS, { recursive: true }); const loguix = require(path.join(BACKEND, 'node_modules', 'loguix')); loguix.setup(LOGS, path.join(BACKEND, 'package.json')); const { __glob } = require(path.join(BACKEND, 'src', 'utils', 'GlobalVars')); function isolateData(name = 'ytdata') { const dir = fs.mkdtempSync(path.join(SCRATCH, `${name}-`)); __glob.YOUTUBE_DIR = dir; __glob.YOUTUBE_COOKIES = path.join(dir, 'cookies.txt'); __glob.YOUTUBE_STATE = path.join(dir, 'state.json'); __glob.YOUTUBE_SETTINGS = path.join(dir, 'settings.json'); // Le cache yt-dlp peut rester partagé entre les essais (dans le scratchpad) __glob.YOUTUBE_CACHE = path.join(SCRATCH, 'ytcache'); // Par défaut aucun ancien fichier : chaque test choisit __glob.COOKIES = path.join(dir, 'legacy-none.txt'); __glob.COOKIES_JSON = path.join(dir, 'legacy-none.json'); return dir; } let failures = 0, passes = 0; function check(name, cond, extra) { if (cond) { passes++; console.log(` ok ${name}`); } else { failures++; console.log(` FAIL ${name}${extra !== undefined ? ' -> ' + JSON.stringify(extra) : ''}`); } } function done() { console.log(`\n${passes} ok, ${failures} échec(s)`); process.exitCode = failures ? 1 : 0; } function req(rel) { return require(path.join(BACKEND, rel)); } function chopinTmpDirs() { return fs.readdirSync(os.tmpdir()).filter(e => e.startsWith('chopin-ytc-')); } module.exports = { BACKEND, SCRATCH, __glob, isolateData, check, done, req, chopinTmpDirs };