Stabilize tst_QSpinBox::sizeHint()
The test function used to flake on Linux occasionally. 8e6ede7cd131682161180bfab0cc46686674709b provided a fix. While it seemed to work, further analysis has shown that the root cause is event sequence in case of multiple paint events. This patch re-engineers the test function: 1. Allocate test widget on the stack instead of the heap. 2. Send layout requests posted by QHBoxLayout constructor and QLayout::addWidget() before showing the widget. 3. Remove calls to QCoreApplication::processEvents(). They are unnessecary, because - the size hint request counter is supposed to increase (by any number) - QTRY_VERIFY processes events anyway until the counter increases or it times out. Change-Id: I54998483725cbdd4899ba6f5469d7dae0980ab1d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 71e67dec957d41d55ae03f32613a80394c928352) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
1550761a49
commit
6a0336c48b
@ -1150,34 +1150,32 @@ public:
|
||||
|
||||
void tst_QSpinBox::sizeHint()
|
||||
{
|
||||
QWidget *widget = new QWidget;
|
||||
QHBoxLayout *layout = new QHBoxLayout(widget);
|
||||
widget->setLayout(layout);
|
||||
QWidget widget;
|
||||
QHBoxLayout *layout = new QHBoxLayout(&widget);
|
||||
|
||||
sizeHint_SpinBox *spinBox = new sizeHint_SpinBox;
|
||||
layout->addWidget(spinBox);
|
||||
widget->show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(widget));
|
||||
// Make sure all layout requests posted by the QHBoxLayout constructor and addWidget
|
||||
// are processed before the widget is shown
|
||||
QCoreApplication::sendPostedEvents(&widget, QEvent::LayoutRequest);
|
||||
widget.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&widget));
|
||||
|
||||
// Prefix
|
||||
spinBox->sizeHintRequests = 0;
|
||||
spinBox->setPrefix(QLatin1String("abcdefghij"));
|
||||
qApp->processEvents();
|
||||
QTRY_VERIFY(spinBox->sizeHintRequests > 0);
|
||||
|
||||
// Suffix
|
||||
spinBox->sizeHintRequests = 0;
|
||||
spinBox->setSuffix(QLatin1String("abcdefghij"));
|
||||
qApp->processEvents();
|
||||
QTRY_VERIFY(spinBox->sizeHintRequests > 0);
|
||||
|
||||
// Range
|
||||
spinBox->sizeHintRequests = 0;
|
||||
spinBox->setRange(0, 1234567890);
|
||||
spinBox->setValue(spinBox->maximum());
|
||||
qApp->processEvents();
|
||||
QTRY_VERIFY(spinBox->sizeHintRequests > 0);
|
||||
|
||||
delete widget;
|
||||
}
|
||||
|
||||
void tst_QSpinBox::taskQTBUG_5008_textFromValueAndValidate()
|
||||
|
Loading…
x
Reference in New Issue
Block a user