131 lines
5.0 KiB
JavaScript
131 lines
5.0 KiB
JavaScript
/**
|
||
* Главный скрипт для запуска всех тестов
|
||
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||
*/
|
||
|
||
const { spawn } = require('child_process');
|
||
const path = require('path');
|
||
|
||
console.log('🧪 ЗАПУСК ВСЕХ ТЕСТОВ ДЛЯ ВЫЯВЛЕНИЯ ПРОБЛЕМЫ');
|
||
console.log('=' .repeat(70));
|
||
|
||
const tests = [
|
||
{
|
||
name: 'Тест создания файла',
|
||
script: './test-file-creation.js',
|
||
description: 'Проверяет базовое создание и обновление файла current-params.json'
|
||
},
|
||
{
|
||
name: 'Тест полного потока деплоя',
|
||
script: './test-deploy-flow.js',
|
||
description: 'Имитирует полный процесс деплоя DLE с созданием файла'
|
||
},
|
||
{
|
||
name: 'Тест сохранения файла',
|
||
script: './test-file-persistence.js',
|
||
description: 'Проверяет сохранение файла после различных операций'
|
||
},
|
||
{
|
||
name: 'Тест обработки ошибок',
|
||
script: './test-error-handling.js',
|
||
description: 'Проверяет поведение при ошибках деплоя'
|
||
}
|
||
];
|
||
|
||
async function runTest(testInfo, index) {
|
||
return new Promise((resolve, reject) => {
|
||
console.log(`\n${index + 1}️⃣ ${testInfo.name}`);
|
||
console.log(`📝 ${testInfo.description}`);
|
||
console.log('─'.repeat(50));
|
||
|
||
const testPath = path.join(__dirname, testInfo.script);
|
||
const testProcess = spawn('node', [testPath], {
|
||
stdio: 'inherit',
|
||
cwd: __dirname
|
||
});
|
||
|
||
testProcess.on('close', (code) => {
|
||
if (code === 0) {
|
||
console.log(`✅ ${testInfo.name} - УСПЕШНО`);
|
||
resolve(true);
|
||
} else {
|
||
console.log(`❌ ${testInfo.name} - ОШИБКА (код: ${code})`);
|
||
resolve(false);
|
||
}
|
||
});
|
||
|
||
testProcess.on('error', (error) => {
|
||
console.log(`❌ ${testInfo.name} - ОШИБКА ЗАПУСКА: ${error.message}`);
|
||
resolve(false);
|
||
});
|
||
});
|
||
}
|
||
|
||
async function runAllTests() {
|
||
console.log('🚀 Запуск всех тестов...\n');
|
||
|
||
const results = [];
|
||
|
||
for (let i = 0; i < tests.length; i++) {
|
||
const result = await runTest(tests[i], i);
|
||
results.push({
|
||
name: tests[i].name,
|
||
success: result
|
||
});
|
||
|
||
// Небольшая пауза между тестами
|
||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||
}
|
||
|
||
// Итоговый отчет
|
||
console.log('\n' + '='.repeat(70));
|
||
console.log('📊 ИТОГОВЫЙ ОТЧЕТ ТЕСТОВ');
|
||
console.log('='.repeat(70));
|
||
|
||
const successfulTests = results.filter(r => r.success).length;
|
||
const totalTests = results.length;
|
||
|
||
results.forEach((result, index) => {
|
||
const status = result.success ? '✅' : '❌';
|
||
console.log(`${index + 1}. ${status} ${result.name}`);
|
||
});
|
||
|
||
console.log(`\n📈 Результаты: ${successfulTests}/${totalTests} тестов прошли успешно`);
|
||
|
||
if (successfulTests === totalTests) {
|
||
console.log('🎉 ВСЕ ТЕСТЫ ПРОШЛИ УСПЕШНО!');
|
||
console.log('💡 Проблема НЕ в базовых операциях с файлами');
|
||
console.log('🔍 Возможные причины проблемы:');
|
||
console.log(' - Процесс деплоя прерывается до создания файла');
|
||
console.log(' - Ошибка в логике dleV2Service.js');
|
||
console.log(' - Проблема с правами доступа к файлам');
|
||
console.log(' - Конфликт с другими процессами');
|
||
} else {
|
||
console.log('⚠️ НЕКОТОРЫЕ ТЕСТЫ НЕ ПРОШЛИ');
|
||
console.log('🔍 Это поможет локализовать проблему');
|
||
}
|
||
|
||
console.log('\n🛠️ СЛЕДУЮЩИЕ ШАГИ:');
|
||
console.log('1. Запустите: node debug-file-monitor.js (в отдельном терминале)');
|
||
console.log('2. Запустите деплой DLE в другом терминале');
|
||
console.log('3. Наблюдайте за созданием/удалением файлов в реальном времени');
|
||
console.log('4. Проверьте логи Docker: docker logs dapp-backend -f');
|
||
|
||
console.log('\n📋 ДОПОЛНИТЕЛЬНЫЕ КОМАНДЫ ДЛЯ ОТЛАДКИ:');
|
||
console.log('# Проверить права доступа к директориям:');
|
||
console.log('ls -la backend/scripts/deploy/');
|
||
console.log('ls -la backend/temp/');
|
||
console.log('');
|
||
console.log('# Проверить процессы Node.js:');
|
||
console.log('ps aux | grep node');
|
||
console.log('');
|
||
console.log('# Проверить использование диска:');
|
||
console.log('df -h backend/scripts/deploy/');
|
||
}
|
||
|
||
// Запускаем все тесты
|
||
runAllTests().catch(error => {
|
||
console.error('❌ КРИТИЧЕСКАЯ ОШИБКА:', error.message);
|
||
process.exit(1);
|
||
});
|