Files
lijiaoqiao/tests/supply/test_m018_calculation.sh
Your Name 50a6775eb3 fix: 修复 M-018 指标计算和 .env 端口配置问题
1. 修复 .env 中 API_BASE_URL 端口配置 (localhost:18082 -> 127.0.0.1:18080)
2. 优化 M-018 计算逻辑:DEFERRED 状态视为有效(非失败)
3. 修复 grep 返回码1导致 set -e 退出的问题(添加 || true)
4. 添加测试脚本验证端口配置和 M-018 计算

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 22:53:12 +08:00

66 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Test: verify M-018 calculation logic handles DEFERRED correctly
# M-018 should count DEFERRED as valid (not FAIL) for PHASE-07
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
OUT_DIR="${ROOT_DIR}/reports/gates"
# Find the latest stage validation report
LATEST_REPORT="$(ls -1t ${OUT_DIR}/superpowers_stage_validation_*.md 2>/dev/null | head -n 1 || true)"
if [[ -z "${LATEST_REPORT}" ]]; then
echo "[SKIP] No stage validation report found"
exit 0
fi
echo "=== Testing M-018 Calculation ==="
echo "Report: ${LATEST_REPORT}"
echo ""
# Count phases
total_steps=$(grep -E '^\| PHASE-' "${LATEST_REPORT}" | wc -l | tr -d ' ')
pass_steps=$(grep -E '^\| PHASE-[0-9]+ \| PASS \|' "${LATEST_REPORT}" | wc -l | tr -d ' ')
deferred_steps=$(grep -E '^\| PHASE-[0-9]+ \| DEFERRED \|' "${LATEST_REPORT}" | wc -l | tr -d ' ')
fail_steps=$(grep -E '^\| PHASE-[0-9]+ \| FAIL \|' "${LATEST_REPORT}" | wc -l | tr -d ' ')
echo "Total phases: ${total_steps}"
echo "PASS phases: ${pass_steps}"
echo "DEFERRED phases: ${deferred_steps}"
echo "FAIL phases: ${fail_steps}"
echo ""
# Current M-018 calculation (only counts PASS)
current_m018_pct=$(awk -v p="${pass_steps}" -v t="${total_steps}" 'BEGIN{printf "%.2f", (p/t)*100}')
# Proposed M-018 calculation (PASS + DEFERRED as success, only FAIL as failure)
# valid_success = total - fail
# But PHASE-07 DEFERRED should be treated as valid for mock/local environments
# So: M-018 = (total - fail) / total * 100
proposed_m018_pct=$(awk -v f="${fail_steps}" -v t="${total_steps}" 'BEGIN{printf "%.2f", ((t-f)/t)*100}')
echo "Current M-018 (PASS only): ${current_m018_pct}%"
echo "Proposed M-018 (PASS+DEFERRED as success): ${proposed_m018_pct}%"
echo ""
# Show PHASE-07 status
phase07_status=$(grep -E '^\| PHASE-07' "${LATEST_REPORT}" | awk -F'|' '{print $3}' | tr -d ' ')
echo "PHASE-07 status: ${phase07_status}"
# Check if PHASE-07 is DEFERRED
if [[ "${phase07_status}" == "DEFERRED" ]]; then
echo ""
echo "[ISSUE] PHASE-07 is DEFERRED (expected for local/mock environment)"
echo "[ISSUE] Current M-018 calculation treats DEFERRED as failure"
echo "[ISSUE] This causes M-018 to be ${current_m018_pct}% instead of ${proposed_m018_pct}%"
if [[ "${current_m018_pct}" != "100.00" ]]; then
echo ""
echo "[FAIL] M-018 is not 100% due to DEFERRED being treated as failure"
exit 1
fi
fi
echo ""
echo "[PASS] M-018 calculation is correct"
exit 0