Files
manual_slop/tests/test_context_composition_phase6.py
T

127 lines
3.8 KiB
Python

import pytest
from pathlib import Path
from src import aggregate
def test_view_mode_summary(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
test_file = base_dir / "test.py"
test_file.write_text("def hello():\n print('world')\n", encoding="utf-8")
files = [{"path": "test.py", "view_mode": "summary"}]
items = aggregate.build_file_items(base_dir, files)
assert len(items) == 1
assert items[0]["view_mode"] == "summary"
# Content should be a summary, which typically starts with **Python** or similar
assert "**Python**" in items[0]["content"]
assert "functions: hello" in items[0]["content"]
def test_view_mode_full(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
test_file = base_dir / "test.py"
content = "def hello():\n print('world')\n"
test_file.write_text(content, encoding="utf-8")
files = [{"path": "test.py", "view_mode": "full"}]
items = aggregate.build_file_items(base_dir, files)
assert len(items) == 1
assert items[0]["view_mode"] == "full"
assert items[0]["content"] == content
def test_view_mode_skeleton(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
test_file = base_dir / "test.py"
content = "def hello():\n \"\"\"Docstring.\"\"\"\n print('world')\n"
test_file.write_text(content, encoding="utf-8")
files = [{"path": "test.py", "view_mode": "skeleton"}]
items = aggregate.build_file_items(base_dir, files)
assert len(items) == 1
assert items[0]["view_mode"] == "skeleton"
# Skeleton should have '...' instead of 'print'
assert "def hello():" in items[0]["content"]
assert "Docstring" in items[0]["content"]
assert "..." in items[0]["content"]
assert "print('world')" not in items[0]["content"]
def test_view_mode_outline(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
test_file = base_dir / "test.py"
content = "def hello():\n \"\"\"Docstring.\"\"\"\n print('world')\n"
test_file.write_text(content, encoding="utf-8")
files = [{"path": "test.py", "view_mode": "outline"}]
items = aggregate.build_file_items(base_dir, files)
assert len(items) == 1
assert items[0]["view_mode"] == "outline"
# Outline should have [Func] hello (Lines 1-3)
assert "[Func] hello (Lines 1-3)" in items[0]["content"]
def test_view_mode_none(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
test_file = base_dir / "test.py"
test_file.write_text("def hello():\n print('world')\n", encoding="utf-8")
files = [{"path": "test.py", "view_mode": "none"}]
items = aggregate.build_file_items(base_dir, files)
assert len(items) == 1
assert items[0]["view_mode"] == "none"
assert items[0]["content"] == "(context excluded)"
def test_view_mode_default_summary(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
test_file = base_dir / "test.py"
test_file.write_text("def hello():\n print('world')\n", encoding="utf-8")
# Test with simple string path
files = ["test.py"]
items = aggregate.build_file_items(base_dir, files)
assert len(items) == 1
assert items[0]["view_mode"] == "summary"
assert "**Python**" in items[0]["content"]
def test_files_section_rendering(tmp_path):
base_dir = tmp_path / "project"
base_dir.mkdir()
# Full item
full_item = {
"path": base_dir / "full.txt",
"entry": "full.txt",
"content": "Full content",
"view_mode": "full",
"auto_aggregate": True
}
# Summary item
summary_item = {
"path": base_dir / "summary.txt",
"entry": "summary.txt",
"content": "**Summary** content",
"view_mode": "summary",
"auto_aggregate": True
}
sections = aggregate._build_files_section_from_items([full_item, summary_item])
# Full should be in backticks
assert "### `full.txt`" in sections
assert "```txt\nFull content\n```" in sections
# Summary should NOT be in backticks
assert "### `summary.txt`" in sections
assert "```txt\n**Summary** content\n```" not in sections
assert "**Summary** content" in sections