Files
Tdarr-plugin/tests/run-tests.js
T

72 lines
3.3 KiB
JavaScript

'use strict';
/**
* run-tests.js
* Orchestrates all 4 test cases.
* Usage: node tests/run-tests.js [--skip-transcode]
*
* Options:
* --skip-transcode Skip test3 (which runs actual FFmpeg x265 encode)
*/
const args = process.argv.slice(2);
const skipTranscode = args.includes('--skip-transcode');
const tests = [
{ name: 'Test 1 — Film 23.976fps (AC3 ITA + EAC3 ENG)', file: './test-cases/test1-movie-23976fps', heavy: false },
{ name: 'Test 2 — Anime 25fps DTS ITA (Naruto)', file: './test-cases/test2-anime-25fps', heavy: false },
{ name: 'Test 3 — Ultrawide 3840x1600 Scale', file: './test-cases/test3-ultrawide', heavy: true },
{ name: 'Test 4 — Subtitle Extraction (forced + SDH)', file: './test-cases/test4-subtitles', heavy: false },
{ name: 'Test 5 — Copy/Replace Progress & Subtitle Rules', file: './test-cases/test-copy-and-subtitles', heavy: false },
];
async function main() {
console.log('╔══════════════════════════════════════════════════════════╗');
console.log('║ Tdarr Plugin Suite — Test Runner ║');
console.log('╚══════════════════════════════════════════════════════════╝\n');
const results = [];
for (const test of tests) {
if (test.heavy && skipTranscode) {
console.log(`[SKIP] ${test.name} (--skip-transcode)\n`);
results.push({ name: test.name, status: 'SKIPPED' });
continue;
}
console.log(`[RUN] ${test.name}`);
try {
const fn = require(test.file);
await fn();
results.push({ name: test.name, status: 'PASSED' });
} catch (err) {
console.error(`\n[FAIL] ${test.name}\n ${err.message}\n`);
results.push({ name: test.name, status: 'FAILED', error: err.message });
}
}
// ── Summary ───────────────────────────────────────────────────────────────
console.log('\n╔══════════════════════════════════════════════════════════╗');
console.log('║ SUMMARY ║');
console.log('╚══════════════════════════════════════════════════════════╝\n');
let passed = 0, failed = 0, skipped = 0;
for (const r of results) {
const icon = r.status === 'PASSED' ? '[OK]' : r.status === 'SKIPPED' ? '[--]' : '[!!]';
console.log(` ${icon} ${r.name}`);
if (r.error) console.log(` Error: ${r.error}`);
if (r.status === 'PASSED') passed++;
if (r.status === 'FAILED') failed++;
if (r.status === 'SKIPPED') skipped++;
}
console.log(`\n Results: ${passed} passed, ${failed} failed, ${skipped} skipped\n`);
if (failed > 0) process.exit(1);
}
main().catch((err) => {
console.error('Fatal error:', err);
process.exit(1);
});