bug skill.md
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
#!/usr/bin/env bash
|
||||
# Tests ciblés pour install2.sh
|
||||
# Usage : cd tests && bash test_install2.sh
|
||||
set -euo pipefail
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
|
||||
assert_eq() {
|
||||
local desc="$1" expected="$2" actual="$3"
|
||||
if [[ "$expected" == "$actual" ]]; then
|
||||
echo " ✓ $desc"
|
||||
(( PASS++ )) || true
|
||||
else
|
||||
echo " ✗ $desc"
|
||||
echo " attendu : '$expected'"
|
||||
echo " obtenu : '$actual'"
|
||||
(( FAIL++ )) || true
|
||||
fi
|
||||
}
|
||||
|
||||
assert_true() {
|
||||
local desc="$1"
|
||||
shift
|
||||
if eval "$@" 2>/dev/null; then
|
||||
echo " ✓ $desc"
|
||||
(( PASS++ )) || true
|
||||
else
|
||||
echo " ✗ $desc"
|
||||
(( FAIL++ )) || true
|
||||
fi
|
||||
}
|
||||
|
||||
load_install() {
|
||||
local tmp; tmp=$(mktemp)
|
||||
grep -v '^main "\$@"' ../install2.sh > "$tmp"
|
||||
set +e
|
||||
# shellcheck disable=SC1090
|
||||
source "$tmp"
|
||||
set -e
|
||||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "══════════════════════════════════"
|
||||
echo " Tests install2.sh"
|
||||
echo "══════════════════════════════════"
|
||||
echo ""
|
||||
|
||||
load_install
|
||||
trap - EXIT
|
||||
|
||||
TMP_REPO=$(mktemp -d)
|
||||
TMP_HOME=$(mktemp -d)
|
||||
OLD_HOME="$HOME"
|
||||
HOME="$TMP_HOME"
|
||||
REPO_DIR="$TMP_REPO"
|
||||
SKILLS_TAG=""
|
||||
SKILLS_DEBUG=0
|
||||
DETECTED_AGENTS=(claude-code codex)
|
||||
|
||||
mkdir -p \
|
||||
"$TMP_REPO/skills/infra/bundle-demo/scripts" \
|
||||
"$TMP_REPO/skills/infra/bundle-demo/templates" \
|
||||
"$TMP_REPO/skills/dev/legacy-demo" \
|
||||
"$TMP_REPO/skills/dev/mixed-demo"
|
||||
|
||||
cat > "$TMP_REPO/skills/infra/bundle-demo/SKILL.md" <<'EOF'
|
||||
---
|
||||
name: bundle-demo
|
||||
version: 1.2.0
|
||||
description: >
|
||||
Skill bundle de test
|
||||
sur plusieurs lignes
|
||||
agents: [claude-code, codex]
|
||||
category: infra
|
||||
tags: [bundle, test]
|
||||
---
|
||||
# Bundle Demo
|
||||
EOF
|
||||
echo '#!/usr/bin/env bash' > "$TMP_REPO/skills/infra/bundle-demo/scripts/check.sh"
|
||||
echo 'template' > "$TMP_REPO/skills/infra/bundle-demo/templates/report.md"
|
||||
|
||||
cat > "$TMP_REPO/skills/dev/legacy-demo/claude-code.md" <<'EOF'
|
||||
---
|
||||
name: legacy-demo
|
||||
version: 1.0.0
|
||||
description: Skill legacy de test
|
||||
agents: [claude-code]
|
||||
category: dev
|
||||
tags: [legacy]
|
||||
---
|
||||
# Legacy Demo
|
||||
EOF
|
||||
|
||||
cat > "$TMP_REPO/skills/dev/mixed-demo/SKILL.md" <<'EOF'
|
||||
---
|
||||
name: mixed-demo
|
||||
version: 2.0.0
|
||||
description: Bundle prioritaire
|
||||
agents: [claude-code]
|
||||
category: dev
|
||||
tags: [mixed]
|
||||
---
|
||||
# Mixed Bundle
|
||||
EOF
|
||||
|
||||
cat > "$TMP_REPO/skills/dev/mixed-demo/claude-code.md" <<'EOF'
|
||||
---
|
||||
name: mixed-demo
|
||||
version: 1.0.0
|
||||
description: Legacy secondaire
|
||||
agents: [claude-code]
|
||||
category: dev
|
||||
tags: [mixed]
|
||||
---
|
||||
# Mixed Legacy
|
||||
EOF
|
||||
|
||||
echo "1. get_frontmatter_agents()"
|
||||
assert_eq "agents multi-agent" \
|
||||
"claude-code codex" \
|
||||
"$(get_frontmatter_agents "$TMP_REPO/skills/infra/bundle-demo/SKILL.md")"
|
||||
assert_eq "description YAML pliée" \
|
||||
"Skill bundle de test sur plusieurs lignes" \
|
||||
"$(get_frontmatter_desc "$TMP_REPO/skills/infra/bundle-demo/SKILL.md")"
|
||||
|
||||
echo ""
|
||||
echo "2. scan_skills()"
|
||||
scan_skills >/dev/null
|
||||
assert_eq "4 entrées détectées" "4" "${#SKILLS_LIST[@]}"
|
||||
assert_true "bundle claude détecté" \
|
||||
"printf '%s\n' \"\${SKILLS_LIST[@]}\" | grep -q '^infra|bundle-demo|claude-code|.*|bundle|'"
|
||||
assert_true "bundle codex détecté" \
|
||||
"printf '%s\n' \"\${SKILLS_LIST[@]}\" | grep -q '^infra|bundle-demo|codex|.*|bundle|'"
|
||||
assert_true "legacy détecté" \
|
||||
"printf '%s\n' \"\${SKILLS_LIST[@]}\" | grep -q '^dev|legacy-demo|claude-code|.*|legacy|'"
|
||||
assert_eq "bundle prioritaire sur legacy" \
|
||||
"1" \
|
||||
"$(printf '%s\n' "${SKILLS_LIST[@]}" | grep -c '^dev|mixed-demo|claude-code|')"
|
||||
|
||||
echo ""
|
||||
echo "3. install_selected()"
|
||||
STATE_FILE=$(mktemp)
|
||||
for entry in "${SKILLS_LIST[@]}"; do
|
||||
echo "$(make_key "$entry")=global" >> "$STATE_FILE"
|
||||
done
|
||||
SKILLS_DRY_RUN=0
|
||||
install_selected >/dev/null
|
||||
|
||||
assert_true "SKILL.md bundle copié" \
|
||||
"test -f '$TMP_HOME/.claude/skills/infra/bundle-demo/SKILL.md'"
|
||||
assert_true "script bundle copié" \
|
||||
"test -f '$TMP_HOME/.claude/skills/infra/bundle-demo/scripts/check.sh'"
|
||||
assert_true "template bundle copié" \
|
||||
"test -f '$TMP_HOME/.claude/skills/infra/bundle-demo/templates/report.md'"
|
||||
assert_true "legacy copié en SKILL.md" \
|
||||
"test -f '$TMP_HOME/.claude/skills/dev/legacy-demo/SKILL.md'"
|
||||
|
||||
rm -rf "$TMP_REPO" "$TMP_HOME"
|
||||
rm -f "$STATE_FILE"
|
||||
HOME="$OLD_HOME"
|
||||
|
||||
echo ""
|
||||
echo "══════════════════════════════════"
|
||||
printf " Résultats : %d passés, %d échoués\n" "$PASS" "$FAIL"
|
||||
echo "══════════════════════════════════"
|
||||
echo ""
|
||||
[[ "$FAIL" -eq 0 ]]
|
||||
Reference in New Issue
Block a user