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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HCGpJXhSZasJLU38ksDghe
This commit is contained in:
1 parent
56d0bfda54
commit
25c99704f2
2 files changed
+8
-4
No files matched your search
@@ -1,8 +1,10 @@
|
|||||||
"""Issue #45 (B): close the restored empty shells of the session being resumed.
|
"""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
|
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
|
still brings every saved pane back - as an empty shell in its old cwd. When
|
||||||
$HOME when that directory is gone. A pane keeps the `agent_session` its agent
|
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
|
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
|
before it spawns, with the id it is about to resume; a pane is closed only when
|
||||||
all of these hold:
|
all of these hold:
|
||||||
|
|||||||
@@ -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.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.new_pane(rig.root / "wsU", "U") # a user's plain shell: no agent_session
|
||||||
rig.crash(*ids.values())
|
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()
|
before = rig.restores()
|
||||||
rig.start_via_shim()
|
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.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
|
rig.hd("pane", "run", _pane_with(rig, ids["X2"])["pane_id"], "sleep 60") # busy shell
|
||||||
time.sleep(1)
|
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())
|
n = len(rig.panes())
|
||||||
|
|
||||||
for k in ("Z", "X2"):
|
for k in ("Z", "X2"):
|
||||||
|
|||||||
Reference in new issue
Block a user