Files
agentos/tests/test_workspace.py
T
2026-07-31 17:54:01 +08:00

49 lines
2.0 KiB
Python

import tempfile
import unittest
from pathlib import Path
from agentos.workspace import WorkspaceManager
class WorkspaceManagerTests(unittest.TestCase):
def setUp(self) -> None:
self.temporary = tempfile.TemporaryDirectory()
self.manager = WorkspaceManager(Path(self.temporary.name) / "workspace")
self.manager.initialize()
(self.manager.current / "state.txt").write_text("base\n", encoding="utf-8")
def tearDown(self) -> None:
self.temporary.cleanup()
def test_branch_does_not_mutate_base_and_can_commit_then_rollback(self) -> None:
branch = self.manager.create_branch("worldline-1")
(branch.path / "state.txt").write_text("changed\n", encoding="utf-8")
(branch.path / "new.txt").write_text("new\n", encoding="utf-8")
self.assertEqual((self.manager.current / "state.txt").read_text(encoding="utf-8"), "base\n")
changes = self.manager.changes(branch.path)
self.assertEqual({change.path for change in changes}, {"new.txt", "state.txt"})
backup = self.manager.commit_branch("worldline-1")
self.assertEqual(
(self.manager.current / "state.txt").read_text(encoding="utf-8"), "changed\n"
)
self.assertEqual((backup / "state.txt").read_text(encoding="utf-8"), "base\n")
self.manager.rollback_to("worldline-1")
self.assertEqual((self.manager.current / "state.txt").read_text(encoding="utf-8"), "base\n")
self.assertFalse((self.manager.current / "new.txt").exists())
def test_discard_leaves_base_unchanged(self) -> None:
branch = self.manager.create_branch("worldline-2")
(branch.path / "state.txt").unlink()
archive = self.manager.discard_branch("worldline-2")
self.assertEqual(archive, self.manager.history / "worldline-2.discarded")
self.assertTrue(archive.is_dir())
self.assertFalse(branch.path.exists())
self.assertEqual((self.manager.current / "state.txt").read_text(encoding="utf-8"), "base\n")
if __name__ == "__main__":
unittest.main()