85 lines
2.5 KiB
Bash
85 lines
2.5 KiB
Bash
#!/usr/bin/env bats
|
|
# sync_templates.sh 测试套件
|
|
|
|
setup() {
|
|
export PLAYBOOK_ROOT="$(cd "$BATS_TEST_DIRNAME/../.." && pwd)"
|
|
export SCRIPT_PATH="$PLAYBOOK_ROOT/scripts/sync_templates.sh"
|
|
export TARGET_DIR="$(mktemp -d)"
|
|
}
|
|
|
|
teardown() {
|
|
if [ -n "$TARGET_DIR" ] && [ -d "$TARGET_DIR" ]; then
|
|
chmod -R u+w "$TARGET_DIR" 2>/dev/null || true
|
|
rm -rf "$TARGET_DIR"
|
|
fi
|
|
}
|
|
|
|
# ==============================================
|
|
# 基础功能测试
|
|
# ==============================================
|
|
|
|
@test "sync_templates.sh 脚本存在且可执行" {
|
|
[ -f "$SCRIPT_PATH" ]
|
|
}
|
|
|
|
@test "sync_templates.sh - 基础同步与占位符替换" {
|
|
sh "$SCRIPT_PATH" -project-root "$TARGET_DIR" -project-name "DemoProject" -date "2026-02-03"
|
|
|
|
[ -d "$TARGET_DIR/memory-bank" ]
|
|
[ -f "$TARGET_DIR/memory-bank/project-brief.md" ]
|
|
[ -f "$TARGET_DIR/docs/prompts/coding/clarify.md" ]
|
|
[ -f "$TARGET_DIR/AGENTS.md" ]
|
|
[ -f "$TARGET_DIR/AGENT_RULES.md" ]
|
|
|
|
grep -q "DemoProject" "$TARGET_DIR/memory-bank/project-brief.md"
|
|
! grep -q "{{DATE}}" "$TARGET_DIR/AGENT_RULES.md"
|
|
|
|
[ -z "$(find "$TARGET_DIR" -name '*.template.md' -print -quit)" ]
|
|
}
|
|
|
|
@test "sync_templates.sh - 已存在目录不覆盖 (无 -force)" {
|
|
mkdir -p "$TARGET_DIR/memory-bank"
|
|
mkdir -p "$TARGET_DIR/docs/prompts"
|
|
echo "keep" > "$TARGET_DIR/memory-bank/keep.md"
|
|
echo "keep" > "$TARGET_DIR/docs/prompts/keep.md"
|
|
|
|
sh "$SCRIPT_PATH" -project-root "$TARGET_DIR"
|
|
|
|
[ -f "$TARGET_DIR/memory-bank/keep.md" ]
|
|
[ ! -f "$TARGET_DIR/memory-bank/project-brief.md" ]
|
|
[ -f "$TARGET_DIR/docs/prompts/keep.md" ]
|
|
[ ! -f "$TARGET_DIR/docs/prompts/README.md" ]
|
|
}
|
|
|
|
@test "sync_templates.sh - -force 覆盖并备份" {
|
|
mkdir -p "$TARGET_DIR/memory-bank"
|
|
echo "marker" > "$TARGET_DIR/memory-bank/marker.txt"
|
|
|
|
sh "$SCRIPT_PATH" -project-root "$TARGET_DIR" -force
|
|
|
|
[ -f "$TARGET_DIR/memory-bank/project-brief.md" ]
|
|
[ ! -f "$TARGET_DIR/memory-bank/marker.txt" ]
|
|
|
|
backup_dir="$(ls -d "$TARGET_DIR"/memory-bank.bak.* 2>/dev/null | head -n 1)"
|
|
[ -n "$backup_dir" ]
|
|
[ -f "$backup_dir/marker.txt" ]
|
|
}
|
|
|
|
@test "sync_templates.sh - -full 更新 framework 区块" {
|
|
cat > "$TARGET_DIR/AGENTS.md" << 'EOF'
|
|
# Agent Instructions
|
|
|
|
<!-- playbook:framework:start -->
|
|
OLD_FRAMEWORK
|
|
<!-- playbook:framework:end -->
|
|
|
|
Footer
|
|
EOF
|
|
|
|
sh "$SCRIPT_PATH" -project-root "$TARGET_DIR" -full
|
|
|
|
! grep -q "OLD_FRAMEWORK" "$TARGET_DIR/AGENTS.md"
|
|
grep -q "<!-- playbook:framework:start -->" "$TARGET_DIR/AGENTS.md"
|
|
grep -q "Footer" "$TARGET_DIR/AGENTS.md"
|
|
}
|