UNPKG

auto-request

Version:

通过Yapi JSON Schema生成接口Axios或Taro接口

105 lines (88 loc) 2.94 kB
/** * 对比快照文件 */ const fs = require('fs'); const path = require('path'); // 自动扫描快照文件 const snapshotDir = path.join(__dirname, '..', 'tests/snapshots/before'); const comparisons = []; if (fs.existsSync(snapshotDir)) { const files = fs.readdirSync(snapshotDir); // 为每个快照文件找到对应的生成文件 files.forEach((file) => { if (file.endsWith('.snapshot.ts')) { const name = file.replace('.snapshot.ts', ''); const isDefine = name.includes('.define'); if (isDefine) { const baseName = name.replace('.define', ''); comparisons.push({ before: `tests/snapshots/before/${file}`, after: `example/${baseName}/api/${baseName}.define.ts`, name: name, }); } else { comparisons.push({ before: `tests/snapshots/before/${file}`, after: `example/${name}/api/${name}.ts`, name: name, }); } } else if (file.endsWith('.snapshot.js')) { const name = file.replace('.snapshot.js', ''); comparisons.push({ before: `tests/snapshots/before/${file}`, after: `example/${name}/api/index.js`, name: name, }); } }); } console.log('\n📸 对比快照...\n'); let allPassed = true; let passCount = 0; let skipCount = 0; let failCount = 0; comparisons.forEach((comp) => { const beforePath = path.join(__dirname, '..', comp.before); const afterPath = path.join(__dirname, '..', comp.after); if (!fs.existsSync(beforePath)) { console.log(`⚠️ ${comp.name}: 快照文件不存在,跳过`); skipCount++; return; } if (!fs.existsSync(afterPath)) { console.log(`❌ ${comp.name}: 生成文件不存在`); allPassed = false; failCount++; return; } const beforeContent = fs.readFileSync(beforePath, 'utf-8'); const afterContent = fs.readFileSync(afterPath, 'utf-8'); if (beforeContent === afterContent) { console.log(`✅ ${comp.name}: 一致`); passCount++; } else { console.log(`❌ ${comp.name}: 不一致`); allPassed = false; failCount++; // 显示差异统计 const beforeLines = beforeContent.split('\n').length; const afterLines = afterContent.split('\n').length; const diff = afterLines - beforeLines; const diffStr = diff > 0 ? `+${diff}` : diff.toString(); console.log(` 重构前: ${beforeLines} 行,重构后: ${afterLines} 行 (${diffStr})`); } }); console.log(`\n${'='.repeat(50)}`); console.log( `📊 快照对比结果: ${passCount} 一致, ${failCount} 不一致, ${skipCount} 跳过` ); console.log(`${'='.repeat(50)}\n`); if (allPassed) { console.log('✅ 所有快照测试通过!\n'); process.exit(0); } else { console.log('❌ 部分快照测试失败\n'); console.log('💡 提示: 如果这是预期的改进(如注释优化),请更新快照基准\n'); process.exit(1); }