From 25c99704f2136ed321fb4eb364107a46cac4439a Mon Sep 17 00:00:00 2001 From: Godopu Date: Thu, 8 Oct 2026 07:52:40 +0900 Subject: [PATCH] test(issue-17): herdr 0.9.3 keeps a removed directory as the restored pane's cwd test_b_only_the_resumed_sessions_restored_shell_is_closed asserted that a pane whose directory was removed comes back in $HOME. That is herdr 0.9.1; herdr 0.9.3 keeps the old path. The cwd check now takes either, with a note on which version does what; closing never looked at the cwd. herdr_restore.py's docstring said the same "$HOME when that directory is gone" and now names both versions. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01HCGpJXhSZasJLU38ksDghe --- .agents/skills/lib_py/herdr_restore.py | 6 ++++-- tests/test_issue45_restore.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.agents/skills/lib_py/herdr_restore.py b/.agents/skills/lib_py/herdr_restore.py index c1a5f23..679732b 100644 --- a/.agents/skills/lib_py/herdr_restore.py +++ b/.agents/skills/lib_py/herdr_restore.py @@ -1,8 +1,10 @@ """Issue #45 (B): close the restored empty shells of the session being resumed. With restore-on-restart off (lib_py/herdr_config.py) a restarted MAM server -still brings every saved pane back - as an empty shell in its old cwd, or in -$HOME when that directory is gone. A pane keeps the `agent_session` its agent +still brings every saved pane back - as an empty shell in its old cwd. When +that directory is gone, herdr 0.9.1 opens the shell in $HOME and herdr 0.9.3 +keeps the old path; nothing below looks at the cwd. A pane keeps the +`agent_session` its agent reported before the server died. resume_session.sh calls this once, right before it spawns, with the id it is about to resume; a pane is closed only when all of these hold: diff --git a/tests/test_issue45_restore.py b/tests/test_issue45_restore.py index 188e722..a50ca07 100644 --- a/tests/test_issue45_restore.py +++ b/tests/test_issue45_restore.py @@ -264,7 +264,7 @@ def test_b_only_the_resumed_sessions_restored_shell_is_closed(rig): rig.run_agent(rig.new_pane(rig.root / f"ws{k}", k), ids[k]) rig.new_pane(rig.root / "wsU", "U") # a user's plain shell: no agent_session rig.crash(*ids.values()) - shutil.rmtree(rig.root / "wsY") # a removed worktree: restored into $HOME + shutil.rmtree(rig.root / "wsY") # a removed worktree: still restored (cwd below) before = rig.restores() rig.start_via_shim() @@ -272,7 +272,9 @@ def test_b_only_the_resumed_sessions_restored_shell_is_closed(rig): rig.run_agent(_pane_with(rig, ids["Z"])["pane_id"], ids["Z"]) # running again rig.hd("pane", "run", _pane_with(rig, ids["X2"])["pane_id"], "sleep 60") # busy shell time.sleep(1) - assert _pane_with(rig, ids["Y"])["cwd"] == str(rig.root) + # Y's directory is gone: herdr 0.9.1 restores the pane into $HOME (rig.root), + # 0.9.3 keeps the old path. Closing does not look at the cwd either way. + assert _pane_with(rig, ids["Y"])["cwd"] in (str(rig.root), str(rig.root / "wsY")) n = len(rig.panes()) for k in ("Z", "X2"):