mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-06 02:41:48 +00:00
fix(local): test root as ancestor candidate; use real pipe for fake stdout
Address Copilot review on PR #17569: 1. _resolve_safe_cwd never tested the filesystem root because the loop exited when `os.path.dirname(parent) == parent`, which is true once `parent == '/'`. Restructure so the root is checked before the self-equal exit. Adds `test_returns_root_when_only_root_exists` — regression-guarded by reverting the loop and watching it fail. 2. The fake `Popen.stdout` was a `MagicMock`; `BaseEnvironment._wait_for_process` calls `proc.stdout.fileno()` then `select.select`/`os.read` against it, which raised `TypeError: fileno() returned a non-integer` (visible as a thread exception in test output) and could in theory read from an unrelated real fd. Hand `fake_popen` a real `os.pipe()` with the write end pre-closed so the drain loop sees EOF immediately. Helper records each fd so the test cleans up after itself. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9644b8ae67
commit
9fa3a093f2
2 changed files with 58 additions and 17 deletions
|
|
@ -31,10 +31,15 @@ def _resolve_safe_cwd(cwd: str) -> str:
|
|||
if cwd and os.path.isdir(cwd):
|
||||
return cwd
|
||||
parent = os.path.dirname(cwd) if cwd else ""
|
||||
while parent and parent != os.path.dirname(parent):
|
||||
while parent:
|
||||
if os.path.isdir(parent):
|
||||
return parent
|
||||
parent = os.path.dirname(parent)
|
||||
next_parent = os.path.dirname(parent)
|
||||
if next_parent == parent:
|
||||
# Reached the filesystem root and it doesn't exist either —
|
||||
# genuinely nothing to fall back to except the temp dir.
|
||||
break
|
||||
parent = next_parent
|
||||
return tempfile.gettempdir()
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue