zapretgui/tests/test_updater_changelog_progress_plan.py
loop-uh eee3f3ca4d
All checks were successful
Zapret source guards / validate (push) Successful in 5s
Переписать страницу обновлений на сервисы: DPI не остаётся выключенным, скачивание без склейки
Проверкой и установкой теперь владеют сервисы, страница «Серверы» только
показывает. Новые модули: updater/check (flow, sources, service),
updater/download (downloader, flow, service), dpi_guard, page_actions.
Удалены update_page_runtime (1700 строк), update_pipeline,
server_status_workers, settings_workers, retry_workers; планы карточек
перенесены в updater/ui/plans.py.

- DPI останавливается и запускается обратно только через DpiGuard: возврат
  в finally, запуск в главном потоке, не после запуска установщика и не
  при выходе из программы. Во время проверки новую не начать.
- Номер проверки у координатора закрывается всегда, даже при сбое.
- Кнопка установки видна после «Позже» при запуске, источник выпуска
  доходит до карточки, тексты этапов не теряются после скачивания,
  установка после подтверждения начинается без таймера.
- Скачивание: куски сразу на своё место в закрытом каталоге, при сбое
  одного куска остальные встают, размер на сервере сверяется до
  скачивания, SHA-256 проверяется у каждого источника, при полном диске
  или занятом файле зеркала не перебираются; повтор без DPI при сетевом
  сбое.
- Переключатель автопроверки и открытие канала — вне главного потока,
  записывается последнее значение.
2026-09-27 17:51:48 +03:00

43 lines
1.5 KiB
Python

from __future__ import annotations
import unittest
from updater.ui import plans as update_page_plans
class UpdaterChangelogProgressPlanTests(unittest.TestCase):
def test_download_speed_and_eta_stay_visible_between_samples(self) -> None:
first = update_page_plans.build_changelog_progress_plan(
percent=50,
done_bytes=50 * 1024 * 1024,
total_bytes=100 * 1024 * 1024,
last_speed_time=0.0,
last_speed_bytes=0,
smoothed_speed=0.0,
language="ru",
now=2.0,
progress_bar_visible=True,
)
second = update_page_plans.build_changelog_progress_plan(
percent=52,
done_bytes=52 * 1024 * 1024,
total_bytes=100 * 1024 * 1024,
last_speed_time=first.last_speed_time,
last_speed_bytes=first.last_speed_bytes,
smoothed_speed=first.smoothed_speed,
download_speed_kb=first.download_speed_kb,
download_eta_seconds=first.download_eta_seconds,
language="ru",
now=2.2,
progress_bar_visible=True,
)
self.assertNotEqual(second.speed_label_text, "Скорость: —")
self.assertNotEqual(second.eta_label_text, "Осталось: —")
self.assertEqual(second.download_speed_kb, first.download_speed_kb)
self.assertEqual(second.download_eta_seconds, first.download_eta_seconds)
if __name__ == "__main__":
unittest.main()