Initial commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user