102 lines
3.1 KiB
JavaScript
102 lines
3.1 KiB
JavaScript
|
|
#!/usr/bin/env node
|
||
|
|
|
||
|
|
/**
|
||
|
|
* GetSkill 基本验证脚本
|
||
|
|
* 用于验证模块是否正确加载和基本功能是否正常
|
||
|
|
*/
|
||
|
|
|
||
|
|
const getskill = require('./index.js');
|
||
|
|
const os = require('os');
|
||
|
|
|
||
|
|
console.log('=== GetSkill 验证测试 ===\n');
|
||
|
|
|
||
|
|
// 测试 1: 模块导出验证
|
||
|
|
console.log('✓ 测试 1: 验证模块导出');
|
||
|
|
const requiredExports = [
|
||
|
|
'searchSkills',
|
||
|
|
'getSkillDetail',
|
||
|
|
'downloadSkill',
|
||
|
|
'updateSkill',
|
||
|
|
'listLocalSkills',
|
||
|
|
'getSkillsDirectory',
|
||
|
|
'getSkillsCacheDirectory',
|
||
|
|
'checkGitInstalled',
|
||
|
|
'ensureGitInstalled',
|
||
|
|
'cloneOrUpdateRepo',
|
||
|
|
'copySkillFiles'
|
||
|
|
];
|
||
|
|
|
||
|
|
let allExportsPresent = true;
|
||
|
|
requiredExports.forEach(exportName => {
|
||
|
|
if (typeof getskill[exportName] !== 'function') {
|
||
|
|
console.error(` ✗ 缺少导出函数: ${exportName}`);
|
||
|
|
allExportsPresent = false;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
if (allExportsPresent) {
|
||
|
|
console.log(` ✓ 所有 ${requiredExports.length} 个导出函数都存在\n`);
|
||
|
|
} else {
|
||
|
|
console.error(' ✗ 部分导出函数缺失\n');
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试 2: 目录路径验证
|
||
|
|
console.log('✓ 测试 2: 验证目录路径');
|
||
|
|
try {
|
||
|
|
const skillsDir = getskill.getSkillsDirectory();
|
||
|
|
const cacheDir = getskill.getSkillsCacheDirectory();
|
||
|
|
|
||
|
|
console.log(` 技能目录: ${skillsDir}`);
|
||
|
|
console.log(` 缓存目录: ${cacheDir}`);
|
||
|
|
|
||
|
|
const homeDir = os.homedir();
|
||
|
|
if (!skillsDir.includes(homeDir)) {
|
||
|
|
throw new Error('技能目录路径不包含用户主目录');
|
||
|
|
}
|
||
|
|
if (!cacheDir.includes(homeDir)) {
|
||
|
|
throw new Error('缓存目录路径不包含用户主目录');
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log(' ✓ 目录路径正确\n');
|
||
|
|
} catch (error) {
|
||
|
|
console.error(` ✗ 目录路径验证失败: ${error.message}\n`);
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试 3: Git 检测
|
||
|
|
console.log('✓ 测试 3: Git 安装检测');
|
||
|
|
getskill.checkGitInstalled()
|
||
|
|
.then(isInstalled => {
|
||
|
|
if (isInstalled) {
|
||
|
|
console.log(' ✓ Git 已安装\n');
|
||
|
|
} else {
|
||
|
|
console.log(' ⚠ Git 未安装(功能正常,但需要安装 Git 才能使用 install/update 命令)\n');
|
||
|
|
}
|
||
|
|
})
|
||
|
|
.catch(error => {
|
||
|
|
console.error(` ✗ Git 检测失败: ${error.message}\n`);
|
||
|
|
})
|
||
|
|
.finally(() => {
|
||
|
|
// 测试 4: 列出本地技能
|
||
|
|
console.log('✓ 测试 4: 列出本地技能');
|
||
|
|
try {
|
||
|
|
const localSkills = getskill.listLocalSkills();
|
||
|
|
console.log(` 本地技能数量: ${localSkills.length}`);
|
||
|
|
if (localSkills.length > 0) {
|
||
|
|
console.log(' 已安装的技能:');
|
||
|
|
localSkills.forEach(skill => {
|
||
|
|
console.log(` - ${skill}`);
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
console.log(' (未安装任何技能)');
|
||
|
|
}
|
||
|
|
console.log(' ✓ 列出本地技能功能正常\n');
|
||
|
|
} catch (error) {
|
||
|
|
console.error(` ✗ 列出本地技能失败: ${error.message}\n`);
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('=== 验证完成 ===');
|
||
|
|
console.log('\n提示: 运行 "node index.js" 或 "getskill" 查看完整命令帮助');
|
||
|
|
});
|