From 255357541d8d6e692e8958dcf905b75642ef6b92 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Mon, 12 Mar 2012 16:02:43 +0100 Subject: Fix flakiness in qquicklistmodel autotest The worker_remove_element test calls processEvents() before calling waitForWorker(). It's possible that the worker actually finishes during the processEvents() call. In such a situation, waitForWorker() should return right away; otherwise it would wait for 10000ms for a signal that had already emitted, and the test would fail. Change-Id: I8e98a3297cf5f360c1c405b1baa7524cc6593d81 Reviewed-by: Lars Knoll --- tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'tests/auto/qml/qquicklistmodel') diff --git a/tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp b/tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp index 69a8d2ecd8..8d6237679f 100644 --- a/tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp +++ b/tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp @@ -216,17 +216,21 @@ QQuickItem *tst_qquicklistmodel::createWorkerTest(QQmlEngine *eng, QQmlComponent void tst_qquicklistmodel::waitForWorker(QQuickItem *item) { + QQmlProperty prop(item, "done"); + QVERIFY(prop.isValid()); + if (prop.read().toBool()) + return; // already finished + QEventLoop loop; QTimer timer; timer.setSingleShot(true); connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); - QQmlProperty prop(item, "done"); - QVERIFY(prop.isValid()); QVERIFY(prop.connectNotifySignal(&loop, SLOT(quit()))); timer.start(10000); loop.exec(); QVERIFY(timer.isActive()); + QVERIFY(prop.read().toBool()); } void tst_qquicklistmodel::static_types_data() -- cgit v1.2.3