Files
2026-07-13 12:38:34 +08:00

59 lines
1.6 KiB
Python

"""Regression tests for SDK reference generation."""
from __future__ import annotations
import ast
import importlib.util
from pathlib import Path
import pytest
from composio.core.models.triggers import Triggers
def load_generate_docs_module():
script_path = Path(__file__).resolve().parents[1] / "scripts" / "generate-docs.py"
spec = importlib.util.spec_from_file_location("_generate_docs", script_path)
assert spec is not None
assert spec.loader is not None
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
def test_triggers_parse_generated_example_is_valid_python():
generate_docs = load_generate_docs_module()
parsed = generate_docs.parse_docstring(Triggers.parse.__doc__)
assert parsed["examples"], "Triggers.parse() must keep its public example"
try:
ast.parse(parsed["examples"][0])
except SyntaxError as exc:
pytest.fail(
"Triggers.parse() generated SDK reference example must be "
f"copy-pasteable Python: {exc}"
)
def test_generated_examples_do_not_keep_nested_markdown_fences():
generate_docs = load_generate_docs_module()
parsed = generate_docs.parse_docstring(
"""
Fetch SDK data.
Example:
```python
result = composio.tools.get_raw_tool_router_meta_tools("session_123")
print(result)
```
"""
)
assert parsed["examples"] == [
'result = composio.tools.get_raw_tool_router_meta_tools("session_123")\n'
"print(result)"
]