from pathlib import Path from hermes_cli import hf_space_update def test_pick_target_ref_defaults_to_latest_tag(monkeypatch): monkeypatch.setattr(hf_space_update, "list_remote_tags", lambda *_args, **_kwargs: ["v2026.4.16", "v2026.4.13"]) assert hf_space_update.pick_target_ref(None) == "v2026.4.16" def test_pick_target_ref_preserves_explicit_ref(): assert hf_space_update.pick_target_ref("v2026.4.8") == "v2026.4.8" def test_apply_space_repo_update_writes_ref_and_pushes(monkeypatch, tmp_path): repo_dir = tmp_path / "repo" docker_dir = repo_dir / "docker" docker_dir.mkdir(parents=True) ref_file = docker_dir / "HERMES_UPSTREAM_REF" ref_file.write_text("v2026.4.13\n", encoding="utf-8") calls = [] def fake_run(cmd, **kwargs): calls.append((cmd, kwargs)) if cmd[:2] == ["git", "clone"]: return None if cmd[:3] == ["git", "config", "user.email"]: return None if cmd[:3] == ["git", "config", "user.name"]: return None if cmd[:2] == ["git", "add"]: return None if cmd[:2] == ["git", "commit"]: return None if cmd[:2] == ["git", "push"]: return None if cmd[:3] == ["git", "rev-parse", "HEAD"]: class Result: stdout = "abc123\n" return Result() raise AssertionError(f"unexpected command: {cmd}") monkeypatch.setattr(hf_space_update, "run", fake_run) monkeypatch.setattr(hf_space_update, "clone_space_repo", lambda *_args, **_kwargs: repo_dir) commit_sha = hf_space_update.apply_space_repo_update( space_id="cjovs/HermesAgent", token="secret", target_ref="v2026.4.16", ) assert commit_sha == "abc123" assert ref_file.read_text(encoding="utf-8") == "v2026.4.16\n" assert any(cmd[:2] == ["git", "push"] for cmd, _ in calls)