Add local live smoke test suite (#148)

## Summary
- add an opt-in local `smoke/` pytest suite for API, auth, providers,
CLI, IDE-shaped requests, messaging, voice, tools, and thinking stream
contracts
- keep smoke tests out of normal CI collection with `testpaths =
["tests"]`
- write sanitized smoke artifacts under `.smoke-results/`

## Verification
- `uv run ruff format`
- `uv run ruff check`
- `uv run ty check`
- `uv run ty check smoke`
- `FCC_LIVE_SMOKE=1 FCC_SMOKE_TARGETS=all FCC_SMOKE_RUN_VOICE=1 uv run
pytest smoke -n 0 -m live -s --tb=short` -> 17 passed, 9 skipped
- `uv run pytest` -> 904 passed

## Notes
- Skipped live checks require local credentials/tools/services, such as
provider models, Telegram/Discord targets, voice backend, or Claude CLI.
- `claude-pick` smoke was intentionally removed.
This commit is contained in:
Ali Khokhar
2026-04-23 19:06:09 -07:00
committed by GitHub
parent e8e13b9fea
commit 462a9430bb
24 changed files with 1789 additions and 2 deletions
+21
View File
@@ -79,6 +79,27 @@ def test_convert_tools():
assert result[1]["function"]["description"] == "" # Check default empty string
@pytest.mark.parametrize(
"tool_choice,expected",
[
(
{"type": "tool", "name": "echo_smoke"},
{"type": "function", "function": {"name": "echo_smoke"}},
),
({"type": "any"}, "required"),
({"type": "auto"}, "auto"),
({"type": "none"}, "none"),
(
{"type": "function", "function": {"name": "already_openai"}},
{"type": "function", "function": {"name": "already_openai"}},
),
],
)
def test_convert_tool_choice(tool_choice, expected):
result = AnthropicToOpenAIConverter.convert_tool_choice(tool_choice)
assert result == expected
# --- Message Conversion Tests: User ---