File size: 2,157 Bytes
0e9cb33 1c77a4c 0e9cb33 1c77a4c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import pytest
from app.agents.docs_agent import DocsAgent
from app.schemas import CodeChunk, Severity
@pytest.mark.anyio
async def test_docs_agent_flags_incomplete_readme():
chunk = CodeChunk(
file_path="README.md",
language="Markdown",
line_start=1,
line_end=2,
content="# Demo\nShort description only.",
)
output = await DocsAgent().analyze([chunk])
titles = {finding.title for finding in output.findings}
assert "README missing usage/setup guidance" in titles
assert "README missing test instructions" in titles
assert "README missing configuration notes" in titles
@pytest.mark.anyio
async def test_docs_agent_accepts_useful_readme():
chunk = CodeChunk(
file_path="README.md",
language="Markdown",
line_start=1,
line_end=6,
content="# Demo\n\n## Quick Start\nInstall and run it.\n## Tests\nRun pytest.\n## Configuration\nCopy .env.example.",
)
output = await DocsAgent().analyze([chunk])
assert output.findings == []
@pytest.mark.anyio
async def test_docs_agent_flags_public_python_symbol_without_docstring():
chunk = CodeChunk(
file_path="service.py",
language="Python",
line_start=10,
line_end=12,
content="def run_audit():\n return True",
)
output = await DocsAgent().analyze([chunk])
assert output.findings[0].title == "Public Python symbols missing docstrings"
assert output.findings[0].severity == Severity.low
assert output.findings[0].line_start == 10
@pytest.mark.anyio
async def test_docs_agent_summarizes_missing_docstrings_per_chunk():
chunk = CodeChunk(
file_path="service.py",
language="Python",
line_start=1,
line_end=4,
content="def first():\n pass\n\ndef second():\n pass",
)
output = await DocsAgent().analyze([chunk])
docstring_findings = [
finding for finding in output.findings if finding.title == "Public Python symbols missing docstrings"
]
assert len(docstring_findings) == 1
assert "2 public symbols" in docstring_findings[0].description
|