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=""
while [[ $# -gt 0 ]]; do
case "$1" in
--session) session="$2"; shift 2 ;;
*) command="$1"; shift ;;
--session)
shift
if [[ $# -eq 0 ]]; then
echo "mcc-cmd: --session requires a value" >&2
return 1
fi
session="$1"
shift
;;
*)
command="$1"
shift
;;
esac
done
@ -191,6 +202,17 @@ mcc-tui() {
}
_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 log_file
log_file="$(_mcc_session_log_file "$session")"
@ -200,21 +222,71 @@ _mcc_session_log_tail() {
# --- Debug helpers ---
mcc-debug() { bash "$MCC_REPO/tools/mcc-debug.sh" "$@"; }
mcc-log-mcc() {
local session="${1:-}"
if [[ "$session" == "--session" ]]; then
session="${2:-}"
fi
local session=""
while [[ $# -gt 0 ]]; do
case "$1" in
--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")"
_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-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-reset-session() {
local session=""
while [[ $# -gt 0 ]]; do
case "$1" in
--session) session="$2"; shift 2 ;;
*) echo "Unknown option: $1" >&2; return 1 ;;
--session)
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
done

View file

@ -84,5 +84,12 @@ grep -Fq "debug state" "$input_file"
mcc-reset-session --session "$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"