From 8a874d5b31d1896e5ceb559ec68a8976153a606f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Lefebvre?= Date: Fri, 29 Nov 2024 11:46:32 +0100 Subject: [PATCH] Fix flakiness in tst_QWidget::saveRestoreGeometry() Add setWindowFlags(Qt::X11BypassWindowManagerHint) to bypass the creation of the frame. We are checking the geometry of the widget itself, not of his frame in this test. Remove the comments preventing that it can be flaky when debugging. Remove unnecessary QApplication::processEvents(). Remove several unnecessary qWait(). Change-Id: I4a4bcf5cb9522a9a504925c1ae31f0677deae3b1 Pick-to: 6.7 6.5 Reviewed-by: Axel Spoerl (cherry picked from commit cf45ae08bc90b5dbbd20a7e7842856805205bca4) Reviewed-by: Qt Cherry-pick Bot --- .../widgets/kernel/qwidget/tst_qwidget.cpp | 29 ++----------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 8d06dae6d09..ecaafeb334a 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -4336,19 +4336,13 @@ void tst_QWidget::saveRestoreGeometry() { QWidget widget; + widget.setWindowFlags(Qt::X11BypassWindowManagerHint); widget.move(position); widget.resize(size); widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QApplication::processEvents(); - - /* --------------------------------------------------------------------- - * This test function is likely to flake when debugged with Qt Creator. - * (29px offset making the following QTRY_VERIFY2 fail) - * --------------------------------------------------------------------- - */ - QTRY_VERIFY2(HighDpi::fuzzyCompare(widget.pos(), position, m_fuzz), qPrintable(HighDpi::msgPointMismatch(widget.pos(), position))); QCOMPARE(widget.size(), size); @@ -4357,6 +4351,7 @@ void tst_QWidget::saveRestoreGeometry() { QWidget widget; + widget.setWindowFlags(Qt::X11BypassWindowManagerHint); widget.setWindowTitle(QLatin1String(QTest::currentTestFunction())); const QByteArray empty; @@ -4376,7 +4371,6 @@ void tst_QWidget::saveRestoreGeometry() QVERIFY(widget.restoreGeometry(savedGeometry)); widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); - QApplication::processEvents(); QVERIFY2(HighDpi::fuzzyCompare(widget.pos(), position, m_fuzz), qPrintable(HighDpi::msgPointMismatch(widget.pos(), position))); @@ -4402,65 +4396,46 @@ void tst_QWidget::saveRestoreGeometry() geom = widget.geometry(); widget.setWindowState(widget.windowState() | Qt::WindowFullScreen); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); - QTest::qWait(500); QVERIFY(widget.restoreGeometry(savedGeometry)); - QTest::qWait(120); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); QTRY_COMPARE(widget.geometry(), geom); //Restore to full screen widget.setWindowState(widget.windowState() | Qt::WindowFullScreen); - QTest::qWait(120); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); - QTest::qWait(500); savedGeometry = widget.saveGeometry(); geom = widget.geometry(); widget.setWindowState(widget.windowState() ^ Qt::WindowFullScreen); - QTest::qWait(120); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); - QTest::qWait(400); QVERIFY(widget.restoreGeometry(savedGeometry)); - QTest::qWait(120); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); QTRY_COMPARE(widget.geometry(), geom); QVERIFY((widget.windowState() & Qt::WindowFullScreen)); widget.setWindowState(widget.windowState() ^ Qt::WindowFullScreen); - QTest::qWait(120); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); - QTest::qWait(120); //Restore from Maximised widget.move(position); widget.resize(size); - QTest::qWait(10); QTRY_COMPARE(widget.size(), size); - QTest::qWait(500); savedGeometry = widget.saveGeometry(); geom = widget.geometry(); widget.setWindowState(widget.windowState() | Qt::WindowMaximized); - QTest::qWait(120); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); QTRY_VERIFY(widget.geometry() != geom); - QTest::qWait(500); QVERIFY(widget.restoreGeometry(savedGeometry)); - QTest::qWait(120); QTRY_COMPARE(widget.geometry(), geom); QVERIFY(!(widget.windowState() & Qt::WindowMaximized)); //Restore to maximised widget.setWindowState(widget.windowState() | Qt::WindowMaximized); - QTest::qWait(120); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); - QTest::qWait(500); geom = widget.geometry(); savedGeometry = widget.saveGeometry(); widget.setWindowState(widget.windowState() ^ Qt::WindowMaximized); - QTest::qWait(120); QTRY_VERIFY(!(widget.windowState() & Qt::WindowMaximized)); - QTest::qWait(500); QVERIFY(widget.restoreGeometry(savedGeometry)); - QTest::qWait(120); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); QTRY_COMPARE(widget.geometry(), geom); }