mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-08 03:01:47 +00:00
Merge pull request #4692 from NousResearch/feat/ink-refactor
Feat/ink refactor
This commit is contained in:
commit
e9b8ece103
272 changed files with 51548 additions and 938 deletions
|
|
@ -250,6 +250,15 @@ class TestWslHasImage:
|
|||
mock_run.return_value = MagicMock(stdout="False\n", returncode=0)
|
||||
assert _wsl_has_image() is False
|
||||
|
||||
def test_falls_back_to_get_clipboard_image(self):
|
||||
with patch("hermes_cli.clipboard.subprocess.run") as mock_run:
|
||||
mock_run.side_effect = [
|
||||
MagicMock(stdout="False\n", returncode=0),
|
||||
MagicMock(stdout="True\n", returncode=0),
|
||||
]
|
||||
assert _wsl_has_image() is True
|
||||
assert mock_run.call_count == 2
|
||||
|
||||
def test_powershell_not_found(self):
|
||||
with patch("hermes_cli.clipboard.subprocess.run", side_effect=FileNotFoundError):
|
||||
assert _wsl_has_image() is False
|
||||
|
|
@ -269,6 +278,18 @@ class TestWslSave:
|
|||
assert _wsl_save(dest) is True
|
||||
assert dest.read_bytes() == FAKE_PNG
|
||||
|
||||
def test_falls_back_to_get_clipboard_extraction(self, tmp_path):
|
||||
dest = tmp_path / "out.png"
|
||||
b64_png = base64.b64encode(FAKE_PNG).decode()
|
||||
with patch("hermes_cli.clipboard.subprocess.run") as mock_run:
|
||||
mock_run.side_effect = [
|
||||
MagicMock(stdout="", returncode=1),
|
||||
MagicMock(stdout=b64_png + "\n", returncode=0),
|
||||
]
|
||||
assert _wsl_save(dest) is True
|
||||
assert mock_run.call_count == 2
|
||||
assert dest.read_bytes() == FAKE_PNG
|
||||
|
||||
def test_no_image_returns_false(self, tmp_path):
|
||||
dest = tmp_path / "out.png"
|
||||
with patch("hermes_cli.clipboard.subprocess.run") as mock_run:
|
||||
|
|
@ -528,6 +549,16 @@ class TestWindowsHasImage:
|
|||
mock_run.return_value = MagicMock(stdout="False\n", returncode=0)
|
||||
assert _windows_has_image() is False
|
||||
|
||||
def test_falls_back_to_get_clipboard_image(self):
|
||||
with patch("hermes_cli.clipboard._get_ps_exe", return_value="powershell"):
|
||||
with patch("hermes_cli.clipboard.subprocess.run") as mock_run:
|
||||
mock_run.side_effect = [
|
||||
MagicMock(stdout="False\n", returncode=0),
|
||||
MagicMock(stdout="True\n", returncode=0),
|
||||
]
|
||||
assert _windows_has_image() is True
|
||||
assert mock_run.call_count == 2
|
||||
|
||||
def test_no_powershell_available(self):
|
||||
with patch("hermes_cli.clipboard._get_ps_exe", return_value=None):
|
||||
assert _windows_has_image() is False
|
||||
|
|
@ -559,6 +590,20 @@ class TestWindowsSave:
|
|||
assert _windows_save(dest) is True
|
||||
assert dest.read_bytes() == FAKE_PNG
|
||||
|
||||
def test_falls_back_to_filedrop_image(self, tmp_path):
|
||||
dest = tmp_path / "out.png"
|
||||
b64_png = base64.b64encode(FAKE_PNG).decode()
|
||||
with patch("hermes_cli.clipboard._get_ps_exe", return_value="powershell"):
|
||||
with patch("hermes_cli.clipboard.subprocess.run") as mock_run:
|
||||
mock_run.side_effect = [
|
||||
MagicMock(stdout="", returncode=1),
|
||||
MagicMock(stdout="", returncode=1),
|
||||
MagicMock(stdout=b64_png + "\n", returncode=0),
|
||||
]
|
||||
assert _windows_save(dest) is True
|
||||
assert mock_run.call_count == 3
|
||||
assert dest.read_bytes() == FAKE_PNG
|
||||
|
||||
def test_no_image_returns_false(self, tmp_path):
|
||||
dest = tmp_path / "out.png"
|
||||
with patch("hermes_cli.clipboard._get_ps_exe", return_value="powershell"):
|
||||
|
|
@ -734,6 +779,18 @@ class TestHasClipboardImage:
|
|||
assert has_clipboard_image() is True
|
||||
m.assert_called_once()
|
||||
|
||||
def test_wsl_falls_through_to_wayland_when_windows_path_empty(self):
|
||||
"""WSLg often bridges images to wl-paste even when powershell.exe check fails."""
|
||||
with patch("hermes_cli.clipboard.sys") as mock_sys:
|
||||
mock_sys.platform = "linux"
|
||||
with patch("hermes_cli.clipboard._is_wsl", return_value=True):
|
||||
with patch("hermes_cli.clipboard._wsl_has_image", return_value=False) as wsl:
|
||||
with patch.dict(os.environ, {"WAYLAND_DISPLAY": "wayland-0"}):
|
||||
with patch("hermes_cli.clipboard._wayland_has_image", return_value=True) as wl:
|
||||
assert has_clipboard_image() is True
|
||||
wsl.assert_called_once()
|
||||
wl.assert_called_once()
|
||||
|
||||
def test_linux_wayland_dispatch(self):
|
||||
with patch("hermes_cli.clipboard.sys") as mock_sys:
|
||||
mock_sys.platform = "linux"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue