The qwebhistory Qt unit test falls into infinite loop. After this revision the tst_qwebhistory stuck with this output: ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.6.2, Qt 4.6.2 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::title() PASS : tst_QWebHistory::count()
Perhaps this is related to the addition of the HistoryItem::itemSequenceNumber property. http://trac.webkit.org/changeset/61207 I don't know enough about the Qt port, but if you have any questions about that patch, I'd more than happy to help answer them.
I reprodced it, It is not an infite loop it simply hangs. I don't think that it is related to HistoryItem::itemSequenceNumber. It seems that QWebPage doesn't emit signal loadFinished() after call to QWebHistory::back().
FYI: I disabled running tst_qwebhistory test on http://webkit.sed.hu/buildbot/waterfall site temporarily (until fix) to make bot happier.
(In reply to comment #2) > I don't think that it is related to HistoryItem::itemSequenceNumber. I was wrong; reverting the http://trac.webkit.org/changeset/61207 helps.
Created attachment 59103 [details] Fix v1 The patch slightly change behavior of the functions goToItem, back, forward. Now loadFinished signal can be emitted immediately. I think that it should be ok, as we didn't explicitly define it.
Comment on attachment 59103 [details] Fix v1 WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp:87 + connect(page, SIGNAL(loadFinished(bool)), &waitForLoadFinished, SLOT(quit()), Qt::QueuedConnection); Why the queued connection?
Comment on attachment 59103 [details] Fix v1 Clearing flags on attachment: 59103 Committed r61504: <http://trac.webkit.org/changeset/61504>
All reviewed patches have been landed. Closing bug.
(In reply to comment #6) > (From update of attachment 59103 [details]) > WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp:87 > + connect(page, SIGNAL(loadFinished(bool)), &waitForLoadFinished, SLOT(quit()), Qt::QueuedConnection); > Why the queued connection? As I wrote in comment 5 the patch slightly change behavior. I think it is because load function isn't called while traversing through history.
It works with Qt-4.7: ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.7.0, Qt 4.7.0 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::title() PASS : tst_QWebHistory::count() PASS : tst_QWebHistory::back() PASS : tst_QWebHistory::forward() PASS : tst_QWebHistory::itemAt() PASS : tst_QWebHistory::goToItem() PASS : tst_QWebHistory::items() PASS : tst_QWebHistory::serialize_1() PASS : tst_QWebHistory::serialize_2() PASS : tst_QWebHistory::serialize_3() PASS : tst_QWebHistory::saveAndRestore_crash_1() PASS : tst_QWebHistory::saveAndRestore_crash_2() PASS : tst_QWebHistory::saveAndRestore_crash_3() PASS : tst_QWebHistory::popPushState() PASS : tst_QWebHistory::clear() PASS : tst_QWebHistory::cleanupTestCase() Totals: 17 passed, 0 failed, 0 skipped ********* Finished testing of tst_QWebHistory ********* But unfortunately it still hangs with Qt 4.6.2: ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.6.2, Qt 4.6.2 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::title() PASS : tst_QWebHistory::count() PASS : tst_QWebHistory::back() PASS : tst_QWebHistory::forward() PASS : tst_QWebHistory::itemAt() PASS : tst_QWebHistory::goToItem() PASS : tst_QWebHistory::items() PASS : tst_QWebHistory::serialize_1() ^CQFATAL : tst_QWebHistory::serialize_2() Received signal 2 --> I stopped here.
(In reply to comment #10) > It works with Qt-4.7: (...) > But unfortunately it still hangs with Qt 4.6.2: I can confirm, it doesn't work with 4.6.2, but I tried 4.6.3 (default on my debian machine) and it is ok.
It is really odd, It seems that there are a dependency between tests even if an operation are applied to different instances of the QWebPage. Each of the test pass separetelly. But: ./tst_qwebhistory serialize_1 serialize_1 ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.6.2, Qt 4.6.2 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::serialize_1() FAIL! : tst_QWebHistory::serialize_1() Compared values are not the same Actual (hist->count()): 0 Expected (histsize): 5 Loc: [/home/nierob/dev/WebKit/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp(210)] PASS : tst_QWebHistory::cleanupTestCase() Problem is trigered by serialization, only...
Created attachment 60212 [details] Fix I removed a bug workaround. It seems that it is not needed for the Qt 4.6 (checked with 4.6.1, 4.6.2, 4.6.3). I couldn't find a Qt change that was neccessery for the workaround as the only link to it was via an expired pasbin's element.
Comment on attachment 60212 [details] Fix It doesn't work correctly.
We can close this, we do not support 4.6 anymore.