Brush up and stabilize tst_QSizeGrip

- Remove unused dummyWidget and thus empty slots initTestCase(),
  cleanupTestCase().
- Add slot cleanup() checking for an empty top level widgets list
  and introduce QScopedPointer to ensure it passes.
- Use QTRY_VERIFY in hideAndShowOnWindowStateChange().

Flakyness has been observed on openSUSE:

 FAIL!  : tst_QSizeGrip::hideAndShowOnWindowStateChange(Qt::Window) '!sizeGrip->isVisible()' returned FALSE. ()
           Loc: [tst_qsizegrip.cpp(126)]

Change-Id: I340fc1892dc00bcff1985e5a8a1e535975736484
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This commit is contained in:
Friedemann Kleint 2019-04-02 10:17:31 +02:00
parent accf7ce024
commit 06d753e87b

View File

@ -59,25 +59,22 @@ class tst_QSizeGrip : public QObject
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void cleanup();
private slots:
void hideAndShowOnWindowStateChange_data();
void hideAndShowOnWindowStateChange();
void orientation();
void dontCrashOnTLWChange();
private:
QLineEdit *dummyWidget;
};
class TestWidget : public QWidget
{
public:
TestWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0) : QWidget(parent, flags) {}
QSize sizeHint() const { return QSize(300, 200); }
void changeEvent(QEvent *event)
using QWidget::QWidget;
QSize sizeHint() const override { return QSize(300, 200); }
void changeEvent(QEvent *event) override
{
QWidget::changeEvent(event);
if (isWindow() && event->type() == QEvent::WindowStateChange)
@ -85,16 +82,9 @@ public:
}
};
void tst_QSizeGrip::initTestCase()
void tst_QSizeGrip::cleanup()
{
dummyWidget = new QLineEdit;
dummyWidget->show();
}
void tst_QSizeGrip::cleanupTestCase()
{
delete dummyWidget;
dummyWidget = 0;
QVERIFY(QApplication::topLevelWidgets().isEmpty());
}
void tst_QSizeGrip::hideAndShowOnWindowStateChange_data()
@ -111,46 +101,45 @@ void tst_QSizeGrip::hideAndShowOnWindowStateChange()
QSKIP("Broken on WinRT - QTBUG-68297");
#endif
QWidget *parentWidget = windowType == Qt::Window ? 0 : new QWidget;
TestWidget *widget = new TestWidget(parentWidget, Qt::WindowFlags(windowType));
QSizeGrip *sizeGrip = new QSizeGrip(widget);
QScopedPointer<QWidget> parentWidget;
if (windowType != Qt::Window)
parentWidget.reset(new QWidget);
QScopedPointer<TestWidget> widget(new TestWidget(parentWidget.data(), Qt::WindowFlags(windowType)));
QSizeGrip *sizeGrip = new QSizeGrip(widget.data());
// Normal.
if (parentWidget)
parentWidget->show();
else
widget->show();
QVERIFY(sizeGrip->isVisible());
QTRY_VERIFY(sizeGrip->isVisible());
widget->showFullScreen();
QVERIFY(!sizeGrip->isVisible());
QTRY_VERIFY(!sizeGrip->isVisible());
widget->showNormal();
QVERIFY(sizeGrip->isVisible());
QTRY_VERIFY(sizeGrip->isVisible());
widget->showMaximized();
#ifndef Q_OS_MAC
QVERIFY(!sizeGrip->isVisible());
QTRY_VERIFY(!sizeGrip->isVisible());
#else
QEXPECT_FAIL("", "QTBUG-23681", Abort);
QVERIFY(sizeGrip->isVisible());
#endif
widget->showNormal();
QVERIFY(sizeGrip->isVisible());
QTRY_VERIFY(sizeGrip->isVisible());
sizeGrip->hide();
QVERIFY(!sizeGrip->isVisible());
QTRY_VERIFY(!sizeGrip->isVisible());
widget->showFullScreen();
widget->showNormal();
QVERIFY(!sizeGrip->isVisible());
QTRY_VERIFY(!sizeGrip->isVisible());
widget->showMaximized();
widget->showNormal();
QVERIFY(!sizeGrip->isVisible());
delete widget;
delete parentWidget;
QTRY_VERIFY(!sizeGrip->isVisible());
}
void tst_QSizeGrip::orientation()
@ -196,10 +185,10 @@ void tst_QSizeGrip::dontCrashOnTLWChange()
QMdiArea mdiArea;
mdiArea.show();
QMainWindow *mw = new QMainWindow();
QMdiSubWindow *mdi = mdiArea.addSubWindow(mw);
QScopedPointer<QMainWindow> mw(new QMainWindow);
QMdiSubWindow *mdi = mdiArea.addSubWindow(mw.data());
mw->statusBar()->setSizeGripEnabled(true);
mdiArea.removeSubWindow(mw);
mdiArea.removeSubWindow(mw.data());
delete mdi;
mw->show();
@ -209,7 +198,7 @@ void tst_QSizeGrip::dontCrashOnTLWChange()
QEXPECT_FAIL("", "Broken on WinRT - QTBUG-68297", Abort);
#endif
QVERIFY(QTest::qWaitForWindowExposed(&mdiArea));
QVERIFY(QTest::qWaitForWindowExposed(mw));
QVERIFY(QTest::qWaitForWindowExposed(mw.data()));
}
QTEST_MAIN(tst_QSizeGrip)