hermes-agent/tests/test_minisweagent_path.py
teknium1 df7a86f041 fix: restore terminal and file tools in worktrees
Root cause: terminal availability checks still imported minisweagent for the
local backend even though local/singularity now use Hermes wrappers directly.
In git worktrees, the local submodule path may also be an empty placeholder,
so direct path insertion could miss the populated mini-swe-agent checkout.

This change:
- adds a helper to discover mini-swe-agent from the current checkout or the
  main checkout behind a worktree
- uses that helper in terminal_tool and mini_swe_runner
- stops requiring minisweagent for the local backend requirements check
- adds regression tests and validates terminal/file tool resolution again
2026-03-13 23:05:49 -07:00

34 lines
1.1 KiB
Python

"""Tests for minisweagent_path.py."""
from pathlib import Path
from minisweagent_path import discover_minisweagent_src
def test_discover_minisweagent_src_in_current_checkout(tmp_path):
repo = tmp_path / "repo"
src = repo / "mini-swe-agent" / "src"
src.mkdir(parents=True)
assert discover_minisweagent_src(repo) == src.resolve()
def test_discover_minisweagent_src_falls_back_from_worktree_to_main_checkout(tmp_path):
main_repo = tmp_path / "main-repo"
(main_repo / ".git" / "worktrees" / "wt1").mkdir(parents=True)
main_src = main_repo / "mini-swe-agent" / "src"
main_src.mkdir(parents=True)
worktree = tmp_path / "worktree"
worktree.mkdir()
(worktree / ".git").write_text(f"gitdir: {main_repo / '.git' / 'worktrees' / 'wt1'}\n", encoding="utf-8")
(worktree / "mini-swe-agent").mkdir() # empty placeholder, no src/
assert discover_minisweagent_src(worktree) == main_src.resolve()
def test_discover_minisweagent_src_returns_none_when_missing(tmp_path):
repo = tmp_path / "repo"
repo.mkdir()
assert discover_minisweagent_src(repo) is None