Files
CrazyClaude/test_qwen3.sh
Eric Coissac 5a0874c3c0 refactor: rename MCP tool from qwen3_task to task and update delegation flow
- Rename MCP tool `qwen3_task` → `task` in server.py and all references
- Enforce direct use of `mcp__qwen3__task` (no sub-agents) in docs
- Add bootstrap logic to install.sh/update_crazyclaude.sh for repo self-installation
- Introduce tools-local/ directory for local tool overrides
- Add test suite (test_qwen3.sh, test_qwen3.md) to validate Qwen3 file generation
- Update .gitignore: ignore test_qwen3_output/, add missing .claude/
- Add system prompt to server.py for fs_write enforcement
- Update agent docs (qwen3-worker, code-reviewer, delegation-rules, task-planner) to reflect new tool name and workflow
- Add system instruction: always use fs_write/fs_patch, never display content in response
2026-03-27 17:31:52 +01:00

74 lines
3.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Test end-to-end de Qwen3 — tâches de difficulté croissante
set -uo pipefail
TESTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/test_qwen3_output"
mkdir -p "$TESTDIR"
pass=0
fail=0
check() {
local n="$1" desc="$2" cond="$3" reason="$4"
if eval "$cond" 2>/dev/null; then
echo " ✓ PASS"
pass=$((pass + 1))
else
echo " ✗ FAIL: $reason"
fail=$((fail + 1))
fi
}
run() {
local n="$1" desc="$2" file="$3" prompt="$4"
echo "[TEST $n] $desc"
content="$(aichat --no-stream "$prompt" 2>/dev/null | sed 's/^```[a-z]*$//' | sed '/^```$/d')" || true
printf '%s\n' "$content" > "$file"
}
# --- Programmation ---
run 1 "hello.py — Python basique" "$TESTDIR/hello.py" \
"Génère uniquement le contenu d'un fichier Python qui affiche 'Hello, World!' avec print. Sans balises markdown, sans explication."
check 1 "hello.py" \
"[[ -f '$TESTDIR/hello.py' ]] && grep -q 'print' '$TESTDIR/hello.py'" \
"fichier absent ou pas de print"
run 2 "count.sh — boucle bash 1 à 5" "$TESTDIR/count.sh" \
"Génère uniquement le contenu d'un script bash qui affiche les nombres de 1 à 5 un par ligne avec une boucle for. Sans balises markdown, sans explication."
chmod +x "$TESTDIR/count.sh" 2>/dev/null || true
check 2 "count.sh" \
"[[ -f '$TESTDIR/count.sh' ]] && bash '$TESTDIR/count.sh' | grep -q '5'" \
"fichier absent ou ne produit pas '5'"
run 3 "fibonacci.py — récursion" "$TESTDIR/fibonacci.py" \
"Génère uniquement le contenu d'un fichier Python avec une fonction fib(n) (fib(1)=1, fib(2)=1) et à la fin print(fib(10)). Sans balises markdown, sans explication."
check 3 "fibonacci.py" \
"[[ -f '$TESTDIR/fibonacci.py' ]] && [[ \"\$(python3 '$TESTDIR/fibonacci.py' 2>/dev/null)\" == '55' ]]" \
"fichier absent ou fib(10) != 55"
# --- Markdown ---
run 4 "intro.md — titre + paragraphe" "$TESTDIR/intro.md" \
"Génère uniquement le contenu markdown d'un fichier avec un titre H1 'CrazyClaude' et un paragraphe de présentation d'au moins 50 caractères. Sans balises de code."
check 4 "intro.md" \
"[[ -f '$TESTDIR/intro.md' ]] && head -1 '$TESTDIR/intro.md' | grep -q '^#' && [[ \$(wc -c < '$TESTDIR/intro.md') -gt 50 ]]" \
"fichier absent, pas de H1 ou trop court"
run 5 "api.md — documentation de fonction" "$TESTDIR/api.md" \
"Génère uniquement le contenu markdown documentant la fonction process(data, options) avec ces 4 sections : Description, Paramètres, Retour, Exemple. Sans balises de code."
check 5 "api.md" \
"[[ -f '$TESTDIR/api.md' ]] && grep -qi 'description' '$TESTDIR/api.md' && grep -qi 'param' '$TESTDIR/api.md' && grep -qi 'retour\|return' '$TESTDIR/api.md' && grep -qi 'exemple\|example' '$TESTDIR/api.md'" \
"fichier absent ou sections manquantes"
run 6 "changelog.md — format semver avec 3 entrées" "$TESTDIR/changelog.md" \
"Génère uniquement le contenu markdown d'un changelog avec 3 entrées au format '## [1.x.0] - YYYY-MM-DD', chacune avec au moins une sous-section ### Added, ### Fixed ou ### Changed. Sans balises de code."
check 6 "changelog.md" \
"[[ -f '$TESTDIR/changelog.md' ]] && [[ \$(grep -c '## \[' '$TESTDIR/changelog.md') -ge 3 ]]" \
"fichier absent ou moins de 3 entrées versionnées"
# --- Résumé ---
echo ""
echo "Sorties conservées dans $TESTDIR"
echo "=== Résultats : $pass/6 tests passés ==="
[[ $fail -eq 0 ]]