mirror of
https://github.com/khodges42/nightShift.git
synced 2026-06-14 10:08:37 +00:00
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
|
|
from nightshift.artifacts import ArtifactStore
|
|
from nightshift.context import ContextManager
|
|
from nightshift.tasks import parse_tasks
|
|
|
|
|
|
TASK_MD = """# Tasks
|
|
|
|
- [ ] TASK-001: Build context
|
|
|
|
Description:
|
|
Create compact task context.
|
|
|
|
Acceptance Criteria:
|
|
- Context files are created
|
|
- Retry notes are persisted
|
|
"""
|
|
|
|
|
|
class ContextManagerTests(unittest.TestCase):
|
|
def test_creates_project_task_and_context_out_files(self) -> None:
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
root = Path(directory)
|
|
artifacts = ArtifactStore(root, ".nightshift", run_id="test-run")
|
|
manager = ContextManager(artifacts)
|
|
task = parse_tasks(TASK_MD)[0]
|
|
|
|
project_path = manager.ensure_project_context()
|
|
task_path = manager.create_task_context(task)
|
|
context = manager.read_context(task, ["retry once"])
|
|
out_path = manager.write_context_out(task, "complete", "done", ["retry once"], ["useful fact"])
|
|
|
|
self.assertTrue(project_path.exists())
|
|
self.assertTrue(task_path.exists())
|
|
self.assertTrue(out_path.exists())
|
|
self.assertIn("TASK-001", context.task_context)
|
|
self.assertIn("retry once", context.retry_context)
|
|
self.assertIn("useful fact", out_path.read_text(encoding="utf-8"))
|
|
|
|
def test_append_project_context_adds_durable_notes(self) -> None:
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
root = Path(directory)
|
|
manager = ContextManager(ArtifactStore(root, ".nightshift", run_id="test-run"))
|
|
task = parse_tasks(TASK_MD)[0]
|
|
|
|
manager.append_project_context(task, ["Remember this"])
|
|
|
|
content = (root / ".nightshift" / "project-context.md").read_text(encoding="utf-8")
|
|
self.assertIn("TASK-001", content)
|
|
self.assertIn("Remember this", content)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|