/
Nspection
/
rules-manager-mcp
Обзор
Документация
Войти
/
Nspection
/
rules-manager-mcp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
scripts/run-tests-sequential.js
83 строки
3 KB
Buglov Evgeny
Добавление механизма очистки бэк апа
08 мар 2026, 16:37
08 мар 2026, 16:37
586eb3b
Код
Авторство
О чём код?
import { execSync } from 'child_process'; import { readdirSync, existsSync, rmSync, unlinkSync, writeFileSync } from 'fs'; import { join, normalize } from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = join(__filename, '..'); const testsDir = join(process.cwd(), 'MCP Tools Tests', 'tests'); // Получаем все тестовые файлы и сортируем их по имени const testFiles = readdirSync(testsDir) .filter(file => file.endsWith('.test.ts')) .sort(); // Сортировка по имени (01, 02, 03...) console.log('Запуск тестов в последовательном порядке:\n'); let failed = false; for (const file of testFiles) { const testPath = join(testsDir, file); console.log(`\n▶️ Запуск: ${file}`); try { // Используем --testPathPattern с точным путем для запуска конкретного файла execSync(`npx jest --testPathPattern="${file}" --no-cache --runInBand`, { stdio: 'inherit', env: { ...process.env, FORCE_COLOR: '1' } }); console.log(`✅ Пройден: ${file}`); } catch (error) { console.error(`❌ Провален: ${file}`); failed = true; break; // Останавливаем выполнение при первой ошибке } } if (failed) { console.error('\n❌ Тесты не пройдены'); process.exit(1); } else { console.log('\n✅ Все тесты пройдены'); // Очищаем бэкапы после успешного прохождения всех тестов console.log('\n🧹 Очистка бэкапов после тестов...'); try { const backupsDir = join(process.cwd(), 'backups'); if (existsSync(backupsDir)) { rmSync(backupsDir, { recursive: true, force: true }); console.log('📁 Директория backups/ удалена'); } } catch (err) { console.error('⚠️ Ошибка при очистке бэкапов:', err.message); } // Очищаем тестовые данные в rules-md console.log('\n🧹 Очистка тестовых данных в rules-md...'); try { const rulesDir = join(process.cwd(), 'rules-md'); if (existsSync(rulesDir)) { const files = readdirSync(rulesDir); for (const file of files) { if (file.endsWith('.md') && file !== '_TEMPLATE.md') { unlinkSync(join(rulesDir, file)); console.log(` Удалён: ${file}`); } } // Сбрасываем индекс writeFileSync( join(rulesDir, '_index.json'), JSON.stringify({ version: '1.0', last_updated: new Date().toISOString(), rules: {} }, null, 2) ); console.log(' Индекс сброшен'); } } catch (err) { console.error('⚠️ Ошибка при очистке rules-md:', err.message); } console.log('\n✨ Очистка завершена'); }