Files
chopin/tests/dev/_setup.js
T

47 lines
1.9 KiB
JavaScript

// 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 };