#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_DIR="$(cd "$SCRIPT_DIR/../../.." && pwd)" PARSER="$SCRIPT_DIR/parse_205_runner_output.py" WRAPPER="$SCRIPT_DIR/run_205_followup_via_agy.sh" REAL_REPO="$(git -C "$REPO_DIR" config --get remote.origin.url)" REAL_BRANCH="$(git -C "$REPO_DIR" rev-parse --abbrev-ref HEAD)" REAL_COMMIT="$(git -C "$REPO_DIR" rev-parse HEAD)" echo "=== ESECUZIONE TEST AUTOMATICI WRAPPER E PARSER AGY 1.1.11 ===" # Test 1: Output Jetski negato -> wrapper fallisce echo -n "Test 1: Output Jetski negato -> " TEST_BIN_DIR="$(mktemp -d)" cat << 'EOF' > "$TEST_BIN_DIR/agy-ultra" #!/usr/bin/env bash echo 'jetski: no output produced — a tool required permission auto-denied' exit 0 EOF chmod +x "$TEST_BIN_DIR/agy-ultra" set +e TEST1_OUT="$(PATH="$TEST_BIN_DIR:$PATH" "$WRAPPER" <<< "test prompt" 2>&1)" TEST1_EXIT=$? set -e rm -rf "$TEST_BIN_DIR" if [ $TEST1_EXIT -ne 0 ]; then echo "PASS (Exit Code: $TEST1_EXIT)" else echo "FAIL (Expected non-zero exit code, got 0)" exit 1 fi # Test 2: Output vuoto -> wrapper fallisce echo -n "Test 2: Output vuoto -> " TEST_BIN_DIR="$(mktemp -d)" cat << 'EOF' > "$TEST_BIN_DIR/agy-ultra" #!/usr/bin/env bash echo '' exit 0 EOF chmod +x "$TEST_BIN_DIR/agy-ultra" set +e TEST2_OUT="$(PATH="$TEST_BIN_DIR:$PATH" "$WRAPPER" <<< "test prompt" 2>&1)" TEST2_EXIT=$? set -e rm -rf "$TEST_BIN_DIR" if [ $TEST2_EXIT -ne 0 ]; then echo "PASS (Exit Code: $TEST2_EXIT)" else echo "FAIL (Expected non-zero exit code, got 0)" exit 1 fi # Test 3: task_id null -> parser fallisce echo -n "Test 3: task_id null -> " INCOMPLETE_REPORT="ESITO_205: riuscito REPOSITORY: ${REAL_REPO} BRANCH: ${REAL_BRANCH} COMMIT: ${REAL_COMMIT} CONSOLIDATED_UNIT_ID: 1545 DATES_USED: - 2026-08-10 TEST_ESEGUITI: - pest BLOCCO_DATI: no NOTE: - Incompleto ABSORBED_LEGACY_FRAGMENTS: - id_cond=12" set +e TEST3_OUT="$(python3 "$PARSER" --expected-repo "$REAL_REPO" --expected-branch "$REAL_BRANCH" --expected-commit "$REAL_COMMIT" <<< "$INCOMPLETE_REPORT" 2>&1)" TEST3_EXIT=$? set -e if [ $TEST3_EXIT -eq 1 ] && [[ "$TEST3_OUT" == *'"ok": false'* ]] && [[ "$TEST3_OUT" == *'"task_id"'* ]]; then echo "PASS (Exit Code: $TEST3_EXIT)" else echo "FAIL (Expected exit code 1 with task_id in missing list)" echo "$TEST3_OUT" exit 1 fi # Test 4: '- nessuno' viene scartato e restituisce lista vuota [] echo -n "Test 4: '- nessuno' viene scartato -> " NONE_REPORT="TASK_ID: CT-2026-08-10-TEST-NONE ESITO_205: riuscito REPOSITORY: ${REAL_REPO} BRANCH: ${REAL_BRANCH} COMMIT: ${REAL_COMMIT} CONSOLIDATED_UNIT_ID: 1545 ABSORBED_LEGACY_FRAGMENTS: - artisan-ultra-real-24825cbb OPEN_LEGACY_FRAGMENTS: - nessuno DATES_USED: - 2026-08-09 TEST_ESEGUITI: - test BLOCCO_DATI: no NOTE: - ARTISAN_ULTRA_OK" set +e TEST4_OUT="$(python3 "$PARSER" --expected-repo "$REAL_REPO" --expected-branch "$REAL_BRANCH" --expected-commit "$REAL_COMMIT" <<< "$NONE_REPORT" 2>&1)" TEST4_EXIT=$? set -e if [ $TEST4_EXIT -eq 0 ] && [[ "$TEST4_OUT" == *'"open_legacy_fragments": []'* ]]; then echo "PASS (Exit Code: $TEST4_EXIT)" else echo "FAIL (Expected open_legacy_fragments to be empty array [])" echo "$TEST4_OUT" exit 1 fi # Test 5: Liste restituite come array e smoke completo produce ok=true echo -n "Test 5: Smoke completo con liste array -> " COMPLETE_REPORT="TASK_ID: task-348c024293 ESITO_205: riuscito REPOSITORY: ${REAL_REPO} BRANCH: ${REAL_BRANCH} COMMIT: ${REAL_COMMIT} CONSOLIDATED_UNIT_ID: SMOKE-24825CBB ABSORBED_LEGACY_FRAGMENTS: - artisan-ultra-real-24825cbb OPEN_LEGACY_FRAGMENTS: DATES_USED: - 2026-08-09 TEST_ESEGUITI: - lettura AGENTS.md e parser rigoroso BLOCCO_DATI: no NOTE: - ARTISAN_ULTRA_24825CBB_REAL_OK" set +e TEST5_OUT="$(python3 "$PARSER" --expected-repo "$REAL_REPO" --expected-branch "$REAL_BRANCH" --expected-commit "$REAL_COMMIT" <<< "$COMPLETE_REPORT" 2>&1)" TEST5_EXIT=$? set -e if [ $TEST5_EXIT -eq 0 ] && [[ "$TEST5_OUT" == *'"ok": true'* ]] && [[ "$TEST5_OUT" == *'"absorbed_legacy_fragments": ['* ]]; then echo "PASS (Exit Code: $TEST5_EXIT)" else echo "FAIL (Expected ok: true with array fields)" echo "$TEST5_OUT" exit 1 fi # Test 6: Git diverso dal reale -> fallisce echo -n "Test 6: Git diverso dal reale -> " MISMATCH_REPORT="TASK_ID: CT-2026-08-10-TEST-001 ESITO_205: riuscito REPOSITORY: ssh://git@wrong-repo.git BRANCH: wrong-branch COMMIT: deadbeef1234 CONSOLIDATED_UNIT_ID: 1545 DATES_USED: - 2026-08-10 TEST_ESEGUITI: - pest BLOCCO_DATI: no NOTE: - Mismatch test ABSORBED_LEGACY_FRAGMENTS: - id_cond=12" set +e TEST6_OUT="$(python3 "$PARSER" --expected-repo "$REAL_REPO" --expected-branch "$REAL_BRANCH" --expected-commit "$REAL_COMMIT" <<< "$MISMATCH_REPORT" 2>&1)" TEST6_EXIT=$? set -e if [ $TEST6_EXIT -eq 1 ] && [[ "$TEST6_OUT" == *'"ok": false'* ]] && [[ "$TEST6_OUT" == *'"repository"'* ]]; then echo "PASS (Exit Code: $TEST6_EXIT)" else echo "FAIL (Expected exit code 1 with git mismatch)" echo "$TEST6_OUT" exit 1 fi echo "=== TUTTI I TEST HANNO AVUTO ESITO POSITIVO ==="