From fdb6e5db4cf31813c60a131bf4194c4982a2379a Mon Sep 17 00:00:00 2001 From: BruceChen Date: Sun, 12 Apr 2026 19:00:42 +0800 Subject: [PATCH] tools: harden session helper and tests --- tools/mcc-env.sh | 11 ++++++++++- tools/test-mcc-env.sh | 13 +++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/mcc-env.sh b/tools/mcc-env.sh index 490bf10b..505b0ea3 100644 --- a/tools/mcc-env.sh +++ b/tools/mcc-env.sh @@ -26,7 +26,16 @@ _mcc_servers_root() { } _mcc_current_worktree_name() { - git -C "$MCC_REPO_ROOT" rev-parse --show-toplevel 2>/dev/null | xargs basename + local worktree_root + if ! worktree_root="$(git -C "$MCC_REPO_ROOT" rev-parse --show-toplevel 2>/dev/null)"; then + return 0 + fi + + if [[ -z "$worktree_root" ]]; then + return 0 + fi + + basename "$worktree_root" } _mcc_resolve_session() { diff --git a/tools/test-mcc-env.sh b/tools/test-mcc-env.sh index 73278e1f..6fb9957d 100755 --- a/tools/test-mcc-env.sh +++ b/tools/test-mcc-env.sh @@ -43,6 +43,19 @@ assert_eq "${TMPDIR:-/tmp}/mcc-debug/demo-branch" "$(_mcc_session_root "demo-bra assert_eq "mcc-demo-branch" "$(_mcc_tmux_session_name "demo-branch")" "tmux session name" MCC_BUILD_MODE=tmpfs + +original_repo_root="$MCC_REPO_ROOT" +fallback_root="$REPO_ROOT/nonexistent-worktree" +MCC_REPO_ROOT="$fallback_root" + +fallback_session="$(_mcc_resolve_session)" +assert_eq "$(basename "$fallback_root")" "$fallback_session" "session fallback without git" + +fallback_build_root="$(_mcc_build_root)" +assert_regex "^(/dev/shm|/tmp)/mcc-build/$(basename "$fallback_root")\$" "$fallback_build_root" "tmpfs build root fallback" + +MCC_REPO_ROOT="$original_repo_root" + build_root="$(_mcc_build_root)" assert_regex '^(/dev/shm|/tmp)/mcc-build/.+$' "$build_root" "tmpfs build root"