Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
"""Regression tests for the /rollback all-directories fallback (#10505).
|
||||
|
||||
Bare /rollback searched only TERMINAL_CWD's project; checkpoints created
|
||||
under a different session cwd were invisible ("No checkpoints found for
|
||||
/home/user" while checkpoints existed seconds earlier). Reapply of PR
|
||||
#10633 by @nightq onto the v2 single-store layout.
|
||||
"""
|
||||
|
||||
import json
|
||||
|
||||
import tools.checkpoint_manager as cm
|
||||
from tools.checkpoint_manager import CheckpointManager, format_checkpoint_list
|
||||
|
||||
|
||||
def _make_store_with_project(tmp_path, workdir: str):
|
||||
store = tmp_path / "store"
|
||||
(store / cm._PROJECTS_DIRNAME).mkdir(parents=True)
|
||||
(store / "HEAD").write_text("ref: refs/heads/main\n")
|
||||
dir_hash = cm._project_hash(workdir)
|
||||
meta = {"workdir": workdir, "created_at": 1, "last_touch": 2}
|
||||
(store / cm._PROJECTS_DIRNAME / f"{dir_hash}.json").write_text(json.dumps(meta))
|
||||
return store
|
||||
|
||||
|
||||
class TestListAllCheckpoints:
|
||||
def test_aggregates_projects_and_labels_workdir(self, tmp_path, monkeypatch):
|
||||
workdir = str(tmp_path / "proj")
|
||||
store = _make_store_with_project(tmp_path, workdir)
|
||||
monkeypatch.setattr(cm, "CHECKPOINT_BASE", tmp_path)
|
||||
monkeypatch.setattr(cm, "_store_path", lambda base=None: store)
|
||||
|
||||
mgr = CheckpointManager(enabled=True)
|
||||
fake_entries = [
|
||||
{"hash": "a" * 40, "short_hash": "aaaaaaa", "timestamp": "2026-08-19T10:00:00",
|
||||
"reason": "before write_file", "files_changed": 1, "insertions": 2, "deletions": 0},
|
||||
]
|
||||
monkeypatch.setattr(
|
||||
CheckpointManager, "list_checkpoints", lambda self, wd: list(fake_entries)
|
||||
)
|
||||
|
||||
results = mgr.list_all_checkpoints()
|
||||
assert len(results) == 1
|
||||
assert results[0]["workdir"] == workdir
|
||||
|
||||
def test_empty_store_returns_empty(self, tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(cm, "CHECKPOINT_BASE", tmp_path)
|
||||
monkeypatch.setattr(cm, "_store_path", lambda base=None: tmp_path / "missing")
|
||||
assert CheckpointManager(enabled=True).list_all_checkpoints() == []
|
||||
|
||||
|
||||
class TestFormatAllDirectories:
|
||||
def test_workdir_label_shown_in_all_directories_view(self):
|
||||
cps = [{
|
||||
"hash": "b" * 40, "short_hash": "bbbbbbb",
|
||||
"timestamp": "2026-08-19T10:00:00", "reason": "before patch",
|
||||
"files_changed": 0, "insertions": 0, "deletions": 0,
|
||||
"workdir": "/tmp/qa-repo",
|
||||
}]
|
||||
out = format_checkpoint_list(cps, "all directories")
|
||||
assert "[qa-repo]" in out
|
||||
|
||||
def test_single_directory_view_unchanged(self):
|
||||
cps = [{
|
||||
"hash": "c" * 40, "short_hash": "ccccccc",
|
||||
"timestamp": "2026-08-19T10:00:00", "reason": "before patch",
|
||||
"files_changed": 0, "insertions": 0, "deletions": 0,
|
||||
}]
|
||||
out = format_checkpoint_list(cps, "/tmp/qa-repo")
|
||||
assert "[qa-repo]" not in out
|
||||
assert "ccccccc" in out
|
||||
Reference in New Issue
Block a user