mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
123 lines
4.6 KiB
Python
123 lines
4.6 KiB
Python
"""Tests for hermes_cli.dump._get_git_commit — git SHA resolution for ``hermes dump``.
|
|
|
|
``hermes dump`` prints the running commit so support bug reports identify the
|
|
exact version. Source installs resolve it live via git; packaged builds
|
|
(Docker, Nix) use the install stamp. Both paths go through
|
|
``version_info.get_version_info()``.
|
|
|
|
These tests cover both paths plus the failure modes (no stamp, no git).
|
|
"""
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from hermes_cli.version_info import VersionInfo, _reset_version_info_cache
|
|
|
|
|
|
def setup_function():
|
|
_reset_version_info_cache()
|
|
|
|
|
|
def test_get_git_commit_uses_live_git_when_available(tmp_path):
|
|
"""Source install: version_info resolves commit from live git."""
|
|
from hermes_cli import dump
|
|
|
|
repo_dir = tmp_path / "repo"
|
|
repo_dir.mkdir()
|
|
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: None), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: repo_dir), \
|
|
patch("hermes_cli.version_info._git_version_info",
|
|
return_value=VersionInfo("0.19.0", "0.19.0+3", 3, "deadbeef" * 5, "main", "git")):
|
|
commit = dump._get_git_commit(repo_dir)
|
|
|
|
assert commit == "deadbeef"
|
|
|
|
|
|
def test_get_git_commit_uses_stamp_when_no_git(tmp_path):
|
|
"""Docker/Nix: version_info resolves commit from the install stamp."""
|
|
from hermes_cli import dump
|
|
|
|
repo_dir = tmp_path / "no-git-here"
|
|
repo_dir.mkdir()
|
|
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: tmp_path / "stamp.json"), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: None), \
|
|
patch("hermes_cli.version_info._stamp_version_info",
|
|
return_value=VersionInfo("0.19.0", "0.19.0", None, "cafef00d" * 5, None, "docker")):
|
|
commit = dump._get_git_commit(repo_dir)
|
|
|
|
assert commit == "cafef00d"
|
|
|
|
|
|
def test_get_git_commit_returns_unknown_when_neither_source_available(tmp_path):
|
|
"""Pip-installed wheel: no stamp, no git → '(unknown)'."""
|
|
from hermes_cli import dump
|
|
|
|
repo_dir = tmp_path / "repo"
|
|
repo_dir.mkdir()
|
|
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: None), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: None):
|
|
commit = dump._get_git_commit(repo_dir)
|
|
|
|
assert commit == "(unknown)"
|
|
|
|
|
|
def test_get_git_commit_output_format_identical_between_sources(tmp_path):
|
|
"""Regression guard: live-git and stamp outputs share the same shape."""
|
|
from hermes_cli import dump
|
|
|
|
repo_dir = tmp_path / "repo"
|
|
repo_dir.mkdir()
|
|
|
|
# Live-git path.
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: None), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: repo_dir), \
|
|
patch("hermes_cli.version_info._git_version_info",
|
|
return_value=VersionInfo("0.19.0", "0.19.0+3", 3, "b2f477a3" * 5, "main", "git")):
|
|
_reset_version_info_cache()
|
|
live = dump._get_git_commit(repo_dir)
|
|
|
|
# Stamp path.
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: tmp_path / "stamp.json"), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: None), \
|
|
patch("hermes_cli.version_info._stamp_version_info",
|
|
return_value=VersionInfo("0.19.0", "0.19.0", None, "b2f477a3" * 5, None, "docker")):
|
|
_reset_version_info_cache()
|
|
baked = dump._get_git_commit(repo_dir)
|
|
|
|
assert live == baked == "b2f477a3"
|
|
assert len(live) == 8
|
|
assert all(c in "0123456789abcdef" for c in live)
|
|
|
|
|
|
def test_get_git_commit_date_uses_version_info(tmp_path):
|
|
"""Source install: version_info carries the commit date from live git."""
|
|
from hermes_cli import dump
|
|
|
|
repo_dir = tmp_path / "repo"
|
|
repo_dir.mkdir()
|
|
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: None), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: repo_dir), \
|
|
patch("hermes_cli.version_info._git_version_info",
|
|
return_value=VersionInfo("0.19.0", "0.19.0+3", 3, "deadbeef" * 5, "main", "git", False, 1718662620)):
|
|
_reset_version_info_cache()
|
|
date = dump._get_git_commit_date(repo_dir)
|
|
|
|
assert date == "2024-06-17"
|
|
|
|
|
|
def test_get_git_commit_date_empty_when_unknown(tmp_path):
|
|
"""Docker/pip: no git, no stamp → '' so the dump line drops the date."""
|
|
from hermes_cli import dump
|
|
|
|
repo_dir = tmp_path / "no-git-here"
|
|
repo_dir.mkdir()
|
|
|
|
with patch("hermes_cli.version_info._resolve_stamp_file", lambda: None), \
|
|
patch("hermes_cli.version_info._resolve_repo_dir", lambda: None):
|
|
_reset_version_info_cache()
|
|
date = dump._get_git_commit_date(repo_dir)
|
|
|
|
assert date == ""
|