Fix session parser robustness and test assertion

This commit is contained in:
BruceChen 2026-04-12 19:21:07 +08:00
parent 4c6d5b566b
commit 1be001bdf8
2 changed files with 88 additions and 9 deletions

View file

@ -161,8 +161,19 @@ mcc-cmd() {
local command="" local command=""
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
--session) session="$2"; shift 2 ;; --session)
*) command="$1"; shift ;; shift
if [[ $# -eq 0 ]]; then
echo "mcc-cmd: --session requires a value" >&2
return 1
fi
session="$1"
shift
;;
*)
command="$1"
shift
;;
esac esac
done done
@ -191,6 +202,17 @@ mcc-tui() {
} }
_mcc_session_log_tail() { _mcc_session_log_tail() {
local session="$1"
local log_file
log_file="$(_mcc_session_log_file "$session")"
if [[ -e "$log_file" ]]; then
tail -n 30 "$log_file" 2>/dev/null
else
echo "No MCC log found"
fi
}
_mcc_session_log_follow() {
local session="$1" local session="$1"
local log_file local log_file
log_file="$(_mcc_session_log_file "$session")" log_file="$(_mcc_session_log_file "$session")"
@ -200,21 +222,71 @@ _mcc_session_log_tail() {
# --- Debug helpers --- # --- Debug helpers ---
mcc-debug() { bash "$MCC_REPO/tools/mcc-debug.sh" "$@"; } mcc-debug() { bash "$MCC_REPO/tools/mcc-debug.sh" "$@"; }
mcc-log-mcc() { mcc-log-mcc() {
local session="${1:-}" local session=""
if [[ "$session" == "--session" ]]; then while [[ $# -gt 0 ]]; do
session="${2:-}" case "$1" in
fi --session)
shift
if [[ $# -eq 0 ]]; then
echo "mcc-log-mcc: --session requires a value" >&2
return 1
fi
session="$1"
shift
;;
*)
echo "Unknown option: $1" >&2
return 1
;;
esac
done
session="$(_mcc_resolve_session "$session")" session="$(_mcc_resolve_session "$session")"
_mcc_session_log_follow "$session"
}
mcc-state() {
local session=""
while [[ $# -gt 0 ]]; do
case "$1" in
--session)
shift
if [[ $# -eq 0 ]]; then
echo "mcc-state: --session requires a value" >&2
return 1
fi
session="$1"
shift
;;
*)
echo "Unknown option: $1" >&2
return 1
;;
esac
done
session="$(_mcc_resolve_session "$session")"
mcc-cmd --session "$session" "debug state"
sleep 1
_mcc_session_log_tail "$session" _mcc_session_log_tail "$session"
} }
mcc-state() { echo "debug state" >> "$MCC_REPO/mcc_input.txt"; sleep 1; tail -30 "${TMPDIR:-/tmp}/mcc-debug/mcc-debug.log" 2>/dev/null; }
mcc-preflight() { bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" "$@"; } mcc-preflight() { bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" "$@"; }
mcc-reset-session() { mcc-reset-session() {
local session="" local session=""
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
--session) session="$2"; shift 2 ;; --session)
*) echo "Unknown option: $1" >&2; return 1 ;; shift
if [[ $# -eq 0 ]]; then
echo "mcc-reset-session: --session requires a value" >&2
return 1
fi
session="$1"
shift
;;
*)
echo "Unknown option: $1" >&2
return 1
;;
esac esac
done done

View file

@ -84,5 +84,12 @@ grep -Fq "debug state" "$input_file"
mcc-reset-session --session "$session" mcc-reset-session --session "$session"
[[ ! -e "$(_mcc_session_root "$session")" ]] [[ ! -e "$(_mcc_session_root "$session")" ]]
malformed_log="${TMPDIR:-/tmp}/mcc-env-session-hang-test.log"
if mcc-cmd --session >"$malformed_log" 2>&1; then
echo "FAIL: --session accepted without value" >&2
cat "$malformed_log" >&2
exit 1
fi
grep -Fq -- "--session requires a value" "$malformed_log"
echo "PASS" echo "PASS"