Process window startup requests before testing geometry saves

This commit is contained in:
evgeny committed 2026-11-02 22:49:15 +01:00
1 parent 53f8efa920
commit 39a2895074
2 files changed
+10 -6

No files matched your search

+5 -6
View File
@@ -5,12 +5,11 @@
## Текущие задачи
[ ] **GUI: проверить очередь задач в test_settings_save::windowGeometry** — 02.11.2026.
После исправления линковки форматирования полная сборка GUI проходит, но 15 вариантов windowGeometry
падают на test_settings_save.cpp:330: после show()/processEvents() очередь posted_tasks_head уже непустая.
Остальные 79 проверок этого теста проходят; запуск вне песочницы, QT_QPA_PLATFORM=offscreen, XDG_SESSION_TYPE=x11.
Требуется определить источник фоновой задачи и согласовать ожидания стенда.
Лог: /tmp/chat-link-fix-tests-unrestricted.log.
[+] **GUI: проверить очередь задач в test_settings_save::windowGeometry** — 02.11.2026.
Диагностика очереди подтвердила начальный CHAT_DEVGROUP_STATUS от initDevgroupUi при создании MainWindow.
Стенд обрабатывает начальные запросы до проверки очереди, учёта памяти и инъекции OOM для сохранения геометрии.
Все 94 проверки test_settings_save проходят, включая исполнение/отмену и ошибки выделения памяти.
Логи: /tmp/settings-queue-diagnosis.log, /tmp/settings-queue-fix-tests.log.
[ ] **Проверить зависание test_group_connect / test_group_connect_standby** — 02.11.2026.
Обнаружено при проверке вызовов подгруппы: полный check.sh — таймаут90с в обоих тестах.
@@ -316,6 +316,11 @@ private slots:
// Ядро принадлежит fixture, nullptr db отключает создание фонового UtunNode в настоящем окне.
auto window = std::make_unique<MainWindow>(nullptr, nullptr, QString());
window->show(); QCoreApplication::processEvents();
// Окно запрашивает статус «Моих устройств»; завершаем инициализацию до учёта команд сохранения/OOM.
int startupTasks = 0;
for (auto* task = core.ua->posted_tasks_head; task; task = task->next) ++startupTasks;
DEBUG_DEBUG(DEBUG_CATEGORY_CONFIG, "Window geometry setup: processing startup tasks=%d", startupTasks);
uasync_poll(core.ua, 0); QCoreApplication::processEvents();
auto* splitter = qobject_cast<QSplitter*>(window->centralWidget());
QVERIFY(splitter); QCOMPARE(splitter->sizes().size(), 3);
const QRect geometry = window->normalGeometry();