diff --git a/tests/auto/widgets/widgets/qdockwidget/BLACKLIST b/tests/auto/widgets/widgets/qdockwidget/BLACKLIST index 8b7a126b4dd..bb9118f9ee3 100644 --- a/tests/auto/widgets/widgets/qdockwidget/BLACKLIST +++ b/tests/auto/widgets/widgets/qdockwidget/BLACKLIST @@ -5,23 +5,22 @@ android # QDockWidget::isFloating() is flaky after state change on these OS [closeAndDelete] macos -[floatingTabs] +b2qt +arm +android + # QTBUG-103091 +[floatingTabs] +arm +android qnx macos -[closeAndDelete] b2qt -[floatingTabs] -macos b2qt arm android -[closeAndDelete] + +# QTBUG-103091 +[hoverWithoutDrop] +arm +android +qnx +macos b2qt -[floatingTabs] -arm -[closeAndDelete] -macos b2qt arm android -[floatingTabs] -arm -[closeAndDelete] -android -[floatingTabs] -android diff --git a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp index 64615173a2b..f5d3a6b6f05 100644 --- a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp +++ b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp @@ -1529,7 +1529,6 @@ void tst_QDockWidget::closeAndDelete() QSKIP("Test skipped on Wayland."); #ifdef QT_BUILD_INTERNAL // Create a mainwindow with a central widget and two dock widgets - QObject localContext; QPointer d1; QPointer d2; QPointer cent; @@ -1555,8 +1554,10 @@ void tst_QDockWidget::closeAndDelete() qWarning("OS flakiness: D2 is docked and reports being floating"); // Close everything with a single shot. Expected behavior: Event loop stops - bool eventLoopStopped = true; - QTimer::singleShot(0, &localContext, [mainWindow, d1, d2] { + QSignalSpy closeSpy(qApp, &QApplication::lastWindowClosed); + QObject localContext; + + QTimer::singleShot(0, &localContext, [&](){ mainWindow->close(); QTRY_VERIFY(!mainWindow->isVisible()); QTRY_VERIFY(d1->isVisible()); @@ -1565,19 +1566,12 @@ void tst_QDockWidget::closeAndDelete() d2->close(); QTRY_VERIFY(!d1->isVisible()); QTRY_VERIFY(!d2->isVisible()); - }); - - // Fallback timer to report event loop still running - QTimer::singleShot(100, &localContext, [&eventLoopStopped] { - qCDebug(lcTestDockWidget) << "Last dock widget hasn't shout down event loop!"; - eventLoopStopped = false; + QTRY_COMPARE(closeSpy.count(), 1); QApplication::quit(); }); QApplication::exec(); - QTRY_VERIFY(eventLoopStopped); - // Check heap cleanup qCDebug(lcTestDockWidget) << "Deleting mainWindow"; up_mainWindow.reset();