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 <axel.spoerl@qt.io>
(cherry picked from commit cf45ae08bc90b5dbbd20a7e7842856805205bca4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Frédéric Lefebvre 2024-11-29 11:46:32 +01:00 committed by Qt Cherry-pick Bot
parent 79390471e8
commit 8a874d5b31

View File

@ -4336,19 +4336,13 @@ void tst_QWidget::saveRestoreGeometry()
{ {
QWidget widget; QWidget widget;
widget.setWindowFlags(Qt::X11BypassWindowManagerHint);
widget.move(position); widget.move(position);
widget.resize(size); widget.resize(size);
widget.showNormal(); widget.showNormal();
QVERIFY(QTest::qWaitForWindowExposed(&widget)); QVERIFY(QTest::qWaitForWindowExposed(&widget));
QApplication::processEvents(); 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), QTRY_VERIFY2(HighDpi::fuzzyCompare(widget.pos(), position, m_fuzz),
qPrintable(HighDpi::msgPointMismatch(widget.pos(), position))); qPrintable(HighDpi::msgPointMismatch(widget.pos(), position)));
QCOMPARE(widget.size(), size); QCOMPARE(widget.size(), size);
@ -4357,6 +4351,7 @@ void tst_QWidget::saveRestoreGeometry()
{ {
QWidget widget; QWidget widget;
widget.setWindowFlags(Qt::X11BypassWindowManagerHint);
widget.setWindowTitle(QLatin1String(QTest::currentTestFunction())); widget.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
const QByteArray empty; const QByteArray empty;
@ -4376,7 +4371,6 @@ void tst_QWidget::saveRestoreGeometry()
QVERIFY(widget.restoreGeometry(savedGeometry)); QVERIFY(widget.restoreGeometry(savedGeometry));
widget.showNormal(); widget.showNormal();
QVERIFY(QTest::qWaitForWindowExposed(&widget)); QVERIFY(QTest::qWaitForWindowExposed(&widget));
QApplication::processEvents();
QVERIFY2(HighDpi::fuzzyCompare(widget.pos(), position, m_fuzz), QVERIFY2(HighDpi::fuzzyCompare(widget.pos(), position, m_fuzz),
qPrintable(HighDpi::msgPointMismatch(widget.pos(), position))); qPrintable(HighDpi::msgPointMismatch(widget.pos(), position)));
@ -4402,65 +4396,46 @@ void tst_QWidget::saveRestoreGeometry()
geom = widget.geometry(); geom = widget.geometry();
widget.setWindowState(widget.windowState() | Qt::WindowFullScreen); widget.setWindowState(widget.windowState() | Qt::WindowFullScreen);
QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen));
QTest::qWait(500);
QVERIFY(widget.restoreGeometry(savedGeometry)); QVERIFY(widget.restoreGeometry(savedGeometry));
QTest::qWait(120);
QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen));
QTRY_COMPARE(widget.geometry(), geom); QTRY_COMPARE(widget.geometry(), geom);
//Restore to full screen //Restore to full screen
widget.setWindowState(widget.windowState() | Qt::WindowFullScreen); widget.setWindowState(widget.windowState() | Qt::WindowFullScreen);
QTest::qWait(120);
QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen));
QTest::qWait(500);
savedGeometry = widget.saveGeometry(); savedGeometry = widget.saveGeometry();
geom = widget.geometry(); geom = widget.geometry();
widget.setWindowState(widget.windowState() ^ Qt::WindowFullScreen); widget.setWindowState(widget.windowState() ^ Qt::WindowFullScreen);
QTest::qWait(120);
QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen));
QTest::qWait(400);
QVERIFY(widget.restoreGeometry(savedGeometry)); QVERIFY(widget.restoreGeometry(savedGeometry));
QTest::qWait(120);
QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen));
QTRY_COMPARE(widget.geometry(), geom); QTRY_COMPARE(widget.geometry(), geom);
QVERIFY((widget.windowState() & Qt::WindowFullScreen)); QVERIFY((widget.windowState() & Qt::WindowFullScreen));
widget.setWindowState(widget.windowState() ^ Qt::WindowFullScreen); widget.setWindowState(widget.windowState() ^ Qt::WindowFullScreen);
QTest::qWait(120);
QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen));
QTest::qWait(120);
//Restore from Maximised //Restore from Maximised
widget.move(position); widget.move(position);
widget.resize(size); widget.resize(size);
QTest::qWait(10);
QTRY_COMPARE(widget.size(), size); QTRY_COMPARE(widget.size(), size);
QTest::qWait(500);
savedGeometry = widget.saveGeometry(); savedGeometry = widget.saveGeometry();
geom = widget.geometry(); geom = widget.geometry();
widget.setWindowState(widget.windowState() | Qt::WindowMaximized); widget.setWindowState(widget.windowState() | Qt::WindowMaximized);
QTest::qWait(120);
QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized));
QTRY_VERIFY(widget.geometry() != geom); QTRY_VERIFY(widget.geometry() != geom);
QTest::qWait(500);
QVERIFY(widget.restoreGeometry(savedGeometry)); QVERIFY(widget.restoreGeometry(savedGeometry));
QTest::qWait(120);
QTRY_COMPARE(widget.geometry(), geom); QTRY_COMPARE(widget.geometry(), geom);
QVERIFY(!(widget.windowState() & Qt::WindowMaximized)); QVERIFY(!(widget.windowState() & Qt::WindowMaximized));
//Restore to maximised //Restore to maximised
widget.setWindowState(widget.windowState() | Qt::WindowMaximized); widget.setWindowState(widget.windowState() | Qt::WindowMaximized);
QTest::qWait(120);
QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized));
QTest::qWait(500);
geom = widget.geometry(); geom = widget.geometry();
savedGeometry = widget.saveGeometry(); savedGeometry = widget.saveGeometry();
widget.setWindowState(widget.windowState() ^ Qt::WindowMaximized); widget.setWindowState(widget.windowState() ^ Qt::WindowMaximized);
QTest::qWait(120);
QTRY_VERIFY(!(widget.windowState() & Qt::WindowMaximized)); QTRY_VERIFY(!(widget.windowState() & Qt::WindowMaximized));
QTest::qWait(500);
QVERIFY(widget.restoreGeometry(savedGeometry)); QVERIFY(widget.restoreGeometry(savedGeometry));
QTest::qWait(120);
QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized));
QTRY_COMPARE(widget.geometry(), geom); QTRY_COMPARE(widget.geometry(), geom);
} }