auto-request
Version:
通过Yapi JSON Schema生成接口Axios或Taro接口
105 lines (88 loc) • 2.94 kB
JavaScript
/**
* 对比快照文件
*/
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);
}