-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Для блока Debug patches нужно тестировать логику приёма/применения патчей и fallback без реального LLM:
-
Успешное применение патча
- Исходный код со строками A/B/C.
- Патч: line_number указывает на строку B, old_content совпадает, new_content другое. Ожидание: итоговый код содержит A/new/B/C или просто заменённая строка; предупреждений/исключений нет.
-
Несовпадение строки
- Исходный код другой, old_content не совпадает с фактической строкой.
- Ожидание: патч либо пропускается с предупреждением, либо возвращается код с неизменённой строкой; не должно быть исключения.
-
Несколько патчей
- Два патча на разные строки, применяются в правильном порядке.
- Проверка: оба изменения в итоговом коде; порядок применения не ломает индексацию (особенно если строки удаляются/добавляются).
-
Исключение при применении → fallback
- Смоделировать ошибку в процессе применения (например, patch.line_number за пределами длины файла).
- Ожидание: фиксируется ошибка и вызывается fallback на full rewrite (можно замокать метод debug и проверить вызов).
-
Пустой список патчей
- Входной код и пустые patches.
- Ожидание: возвращается исходный код без изменений, без исключений.
-
Схемная валидация ответа
- Некорректный JSON для патчей (нет line_number, строка вместо списка) → тест, что выбрасывается ожидаемая ошибка или срабатывает fallback.
-
Логирование/предупреждения
- Проверить, что при пропуске патча из-за несоответствия строки логируется предупреждение (можно замокать logger).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels