69 lines
1.9 KiB
Bash
69 lines
1.9 KiB
Bash
#!/bin/sh
|
||
# 小程序冒烟测试 —— 预提交钩子
|
||
#
|
||
# 安装方式(二选一):
|
||
#
|
||
# 1. 使用 Husky(推荐):
|
||
# npx husky add .husky/pre-commit "sh scripts/pre-commit-miniapp-test.sh"
|
||
#
|
||
# 2. 手动复制到 .git/hooks/:
|
||
# cp scripts/pre-commit-miniapp-test.sh .git/hooks/pre-commit
|
||
# chmod +x .git/hooks/pre-commit
|
||
#
|
||
# 注意:此钩子会在本地 IDE 已开启时运行冒烟测试。
|
||
# 未检测到 IDE 运行时自动跳过(不会阻塞提交)。
|
||
|
||
set -e
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
|
||
echo ""
|
||
echo " 🔍 小程序冒烟测试 (Pre-commit)"
|
||
echo " ─────────────────────────────"
|
||
|
||
# 仅检查小程序相关文件的变更
|
||
CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E "^gym-manage-uniapp/(pages|e2e)/" || true)
|
||
|
||
if [ -z "$CHANGED_FILES" ]; then
|
||
echo " ⏭ 无小程序页面/测试文件变更,跳过测试"
|
||
exit 0
|
||
fi
|
||
|
||
echo " 📝 检测到小程序相关变更:"
|
||
echo "$CHANGED_FILES" | while read -r f; do echo " • $f"; done
|
||
echo ""
|
||
|
||
# 检查 IDE 是否运行
|
||
IDE_RUNNING=$(powershell.exe -Command "
|
||
try {
|
||
\$(Get-Process -Name '微信开发者工具' -ErrorAction Stop).Count;
|
||
Write-Output 'yes'
|
||
} catch {
|
||
Write-Output 'no'
|
||
}
|
||
" 2>/dev/null || echo "no")
|
||
|
||
if [ "$IDE_RUNNING" != "yes" ]; then
|
||
echo " ⚠ 微信开发者工具未运行,跳过小程序测试"
|
||
echo " 快测方式(IDE 已运行时):npm test"
|
||
exit 0
|
||
fi
|
||
|
||
echo " 🚀 运行冒烟测试..."
|
||
|
||
# 切换到 uniapp 目录运行
|
||
cd "$PROJECT_DIR"
|
||
npm run test:quick:smoke 2>&1
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo ""
|
||
echo " ✅ 冒烟测试通过"
|
||
exit 0
|
||
else
|
||
echo ""
|
||
echo " ❌ 冒烟测试失败!"
|
||
echo " 请修复后再提交,或使用 git commit --no-verify 跳过"
|
||
exit 1
|
||
fi
|