zapretgui/tests/test_ui_log_limits.py
loop-uh b05e720ed2 Сделал. Ветка осталась main, чужие уже существовавшие изменения не трогал. Что изменил: - Добавил общий ограничитель строк: [src/ui/log_limits.py](/mnt/g/Privacy/zapretgui/public_zapretgui/src/ui/log_limits.py:7). - Поставил лимиты на поля логов: обычные логи, ошибки, вывод winws, диагностика, BlockCheck, Telegram Proxy, Orchestra. - Ограничил очередь логов Telegram Proxy: [proxy_logger.py](/mnt/g/Privacy/zapretgui/public_zapretgui/src/telegram_proxy/proxy_logger.py:81). - Ограничил очередь логов Orchestra до обработки интерфейсом: [page.py](/mnt/g/Privacy/zapretgui/public_zapretgui/src/orchestra/ui/page.py:414). - Добавил тесты: [test_ui_log_limits.py](/mnt/g/Privacy/zapretgui/public_zapretgui/tests/test_ui_log_limits.py:1). Проверил: - PYTHONPATH=src python -m unittest discover -s tests — 28 тестов прошли. - PYTHONPATH=src python -m app.architecture_checks — проверка архитектуры прошла. - py_compile по изменённым файлам — без ошибок. Теперь старые строки в логовых окнах будут автоматически выкидываться, а в памяти останется только последний ограниченный хвост.
2026-05-17 17:35:03 +03:00

30 lines
859 B
Python

import queue
import unittest
from ui.log_limits import append_bounded_line, put_latest_bounded
class UiLogLimitsTests(unittest.TestCase):
def test_append_bounded_line_keeps_latest_lines(self) -> None:
lines: list[str] = []
for index in range(5):
append_bounded_line(lines, f"line-{index}", max_lines=3)
self.assertEqual(lines, ["line-2", "line-3", "line-4"])
def test_put_latest_bounded_drops_oldest_queue_items(self) -> None:
log_queue: queue.Queue[str] = queue.Queue()
for index in range(5):
put_latest_bounded(log_queue, f"line-{index}", max_items=3)
drained = []
while not log_queue.empty():
drained.append(log_queue.get_nowait())
self.assertEqual(drained, ["line-2", "line-3", "line-4"])
if __name__ == "__main__":
unittest.main()