ai-forever / ai-forever/gigachat
Примеры юнит-тестов в CONTRIBUTING.md не работают при копировании
- 主要语言
- Python
- 星标
- 168
- 派生
- 45
- 平均合并
- 1 分钟
- 30 天内合并 PR
- 1
描述
Примеры юнит-тестов из раздела Writing Unit Tests в CONTRIBUTING.md не
работают, если скопировать их как есть. Оба падают. Кроме того, раздел
Test Fixtures перечисляет фикстуры, которых в проекте нет.
Причина, судя по истории: CONTRIBUTING.md последний раз обновлялся в
b651704 (2025-12-26), а контракт клиента поменялся в 9281b1a (#119,
2026-07-24) — сменился хост по умолчанию и модель стала обязательной.
Примеры остались прежними.
### Воспроизведение
Проверено на 0b694b3, рабочее дерево чистое. Оба примера скопированы в
отдельные файлы вне репозитория, рядом положен pytest.ini с
asyncio_mode = auto.
```bash
uv run pytest /tmp/doccheck/test_doc_sync.py /tmp/doccheck/test_doc_async.py -q
```
```
E httpx.TimeoutException: No response can be found for POST request on
https://ngw.devices.sberbank.ru:9443/api/v2/oauth amongst:
E Match POST requests on https://gigachat.devices.sberbank.ru/api/v1/chat/completions
2 failed, 2 errors in 0.33s
```
### Что именно ломается
Дефекты проявляются по очереди, каждый следующий виден только после того,
как убран предыдущий:
1. Не замокан эндпоинт OAuth. С `credentials=` клиент сначала идёт за
токеном, поэтому оба примера падают ещё до обращения к чату.
2. Хост в моке устарел: примеры мокают gigachat.devices.sberbank.ru, а в
src/gigachat/settings.py сейчас `BASE_URL = "https://api.giga.chat/v1"`.
3. Не задан model — клиент кидает ModelNotSpecifiedError, модели по
умолчанию нет.
4. В теле ответа не хватает обязательных полей. ChatCompletion в
src/gigachat/models/chat.py требует created и object (алиас для
object_); в асинхронном примере нет ещё и index, finish_reason, model,
usage.
Отдельно: в разделе Test Fixtures написано, что в tests/unit/conftest.py
доступны base_url, auth_url и credentials. В этом файле определена только
автоиспользуемая фикстура _delenv, а поиск по дереву тестов ничего не
находит:
```bash
grep -rn "def base_url\|def auth_url\|def credentials" tests/ --include=*.py
```
Общие значения лежат в tests/constants.py.
### Ожидаемое поведение
Примеры из гайда для контрибьюторов проходят, если скопировать их как
написано, а перечисленные фикстуры существуют.
### Границы
Только документация, поведение библиотеки и набор тестов не затрагиваются.
Не проверялись и в этот отчёт не входят: остальная часть CONTRIBUTING.md,
пример интеграционного теста и примеры из README.md — при необходимости
можно завести отдельно.
### Окружение
gigachat 0.2.3 (0b694b3), Python 3.12.14, Linux (Ubuntu 22.04, WSL2).
Установка через `uv sync --all-extras --dev`, pytest 7.4.4,
pytest-httpx 0.26.0.
Существующие issues и PR проверены, дубликатов не нашёл. Патч готов,
пришлю PR со ссылкой на эту issue.
贡献指南
评估
这个 Issue 还没有评估数据。