From: Kent Hansen Date: Mon, 12 Mar 2012 15:02:43 +0000 (+0100) Subject: Fix flakiness in qquicklistmodel autotest X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=255357541d8d6e692e8958dcf905b75642ef6b92;p=konrad%2Fqtdeclarative.git 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 --- diff --git a/tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp b/tests/auto/qml/qquicklistmodel/tst_qquicklistmodel.cpp index 69a8d2e..8d62376 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()