59 lines
1.6 KiB
Python
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)"
|
|
]
|