mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-22 16:25:58 +00:00
Use the direct POSIX parent relationship instead of process creation time and pid_exists checks. Remove the dead create-time argument chain while preserving process-group cleanup and signal forwarding.\n\nRefs #62505
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
"""Contract tests for the direct POSIX stdio MCP child watchdog."""
|
|
|
|
import os
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
from tools import mcp_stdio_watchdog, mcp_tool
|
|
|
|
|
|
def test_is_orphaned_is_false_while_direct_parent_is_unchanged():
|
|
original_ppid = 1234
|
|
|
|
assert mcp_stdio_watchdog._is_orphaned(
|
|
original_ppid,
|
|
getppid=lambda: original_ppid,
|
|
) is False
|
|
|
|
|
|
def test_is_orphaned_is_true_after_direct_parent_changes():
|
|
assert mcp_stdio_watchdog._is_orphaned(
|
|
1234,
|
|
getppid=lambda: 5678,
|
|
) is True
|
|
|
|
|
|
@pytest.mark.skipif(os.name != "posix", reason="watchdog wrapping is POSIX-only")
|
|
def test_wrap_command_uses_stable_parent_pid_and_preserves_command_tail():
|
|
parent_pid = os.getpid()
|
|
command = "/opt/hermes/bin/mcp-server"
|
|
command_args = ["--label", "value with spaces", "--", "literal-tail"]
|
|
|
|
wrapped_command, wrapped_args = mcp_tool._wrap_command_with_watchdog(
|
|
command,
|
|
command_args,
|
|
)
|
|
|
|
assert wrapped_command == sys.executable
|
|
assert wrapped_args == [
|
|
os.path.join(os.path.dirname(mcp_tool.__file__), "mcp_stdio_watchdog.py"),
|
|
"--ppid",
|
|
str(parent_pid),
|
|
"--",
|
|
command,
|
|
*command_args,
|
|
]
|
|
assert "--create-time" not in wrapped_args
|