#!/usr/bin/env node const fs = require('fs'); const path = require('path'); // Patterns pour détecter les variables JavaScript nommées "Tests" const patterns = [ // Déclarations de variables /\b(let|const|var)\s+Tests\b/g, // Paramètres de fonction /function\s+\w*\s*\([^)]*\bTests\b[^)]*\)/g, // Arrow functions avec paramètres /\(\s*[^)]*\bTests\b[^)]*\)\s*=>/g, // Arrow function avec un seul paramètre sans parenthèses /\bTests\s*=>/g, // Destructuration d'objets /\{\s*[^}]*\bTests\b[^}]*\}\s*=/g, // Destructuration de tableaux /\[\s*[^\]]*\bTests\b[^\]]*\]\s*=/g, // Catch clause /catch\s*\(\s*Tests\s*\)/g, // For...of/in loops /for\s*\(\s*(let|const|var)?\s*Tests\s+(of|in)\b/g, ]; function findTestsInFile(filePath) { const content = fs.readFileSync(filePath, 'utf-8'); const lines = content.split('\n'); const results = []; lines.forEach((line, index) => { patterns.forEach(pattern => { pattern.lastIndex = 0; // Reset regex if (pattern.test(line)) { results.push({ line: index + 1, content: line.trim() }); } }); }); return results; } function walkDirectory(dir) { const files = fs.readdirSync(dir); const allResults = {}; files.forEach(file => { const filePath = path.join(dir, file); const stat = fs.statSync(filePath); if (stat.isDirectory()) { Object.assign(allResults, walkDirectory(filePath)); } else if (file.endsWith('.js')) { const results = findTestsInFile(filePath); if (results.length > 0) { allResults[filePath] = results; } } }); return allResults; } // Main const scriptsDir = path.join(__dirname, 'scripts'); console.log('🔍 Recherche des variables JavaScript nommées "Tests" dans le répertoire scripts/...\n'); if (!fs.existsSync(scriptsDir)) { console.error('❌ Le répertoire scripts/ n\'existe pas'); process.exit(1); } const results = walkDirectory(scriptsDir); if (Object.keys(results).length === 0) { console.log('✅ Aucune variable JavaScript nommée "Tests" trouvée.'); } else { console.log(`⚠️ ${Object.keys(results).length} fichier(s) contenant des variables "Tests" :\n`); Object.entries(results).forEach(([filePath, occurrences]) => { const relativePath = path.relative(__dirname, filePath); console.log(`📄 ${relativePath}`); occurrences.forEach(({ line, content }) => { console.log(` Ligne ${line}: ${content}`); }); console.log(''); }); }