From: Frank Reininghaus Date: Tue, 5 Apr 2011 21:55:37 +0000 (+0200) Subject: Do not reload the DolphinView in the tests' initView() members X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/a9ecea7cd12e6d5cd8d9a10c9424ded4cc3ccdc7 Do not reload the DolphinView in the tests' initView() members Rather than reloading the view after it is initilised, we just wait until the view emits its finishedPathLoading() signal. This saves some time when running the tests (at least on my system). --- diff --git a/src/tests/dolphindetailsviewtest.cpp b/src/tests/dolphindetailsviewtest.cpp index d17341f6f..2aaf95e01 100644 --- a/src/tests/dolphindetailsviewtest.cpp +++ b/src/tests/dolphindetailsviewtest.cpp @@ -53,13 +53,24 @@ private: * Therefore, a pointer to the details view is returned by initView(DolphinView*). */ DolphinDetailsView* initView(DolphinView* view) const { + QSignalSpy spyFinishedPathLoading(view, SIGNAL(finishedPathLoading(const KUrl&))); view->setMode(DolphinView::DetailsView); DolphinDetailsView* detailsView = qobject_cast(itemView(view)); + Q_ASSERT(detailsView); detailsView->setFoldersExpandable(true); view->resize(400, 400); view->show(); QTest::qWaitForWindowShown(view); - reloadViewAndWait(view); + + // If the DolphinView's finishedPathLoading(const KUrl&) signal has not been received yet, + // we have to wait a bit more. + // The reason why the if-statement is needed here is that the signal might have been emitted + // while we were waiting in QTest::qWaitForWindowShown(view) + // -> waitForFinishedPathLoading(view) would fail in that case. + if (spyFinishedPathLoading.isEmpty()) { + Q_ASSERT(waitForFinishedPathLoading(view)); + } + return detailsView; } diff --git a/src/tests/dolphinviewtest_allviewmodes.cpp b/src/tests/dolphinviewtest_allviewmodes.cpp index 7673f9df9..d9db5b141 100644 --- a/src/tests/dolphinviewtest_allviewmodes.cpp +++ b/src/tests/dolphinviewtest_allviewmodes.cpp @@ -389,14 +389,34 @@ void DolphinViewTest_AllViewModes::testKeyboardFocus() } } +// Private member functions which are used by the tests + +/** + * initView(DolphinView*) sets the correct view mode, shows the view on the screen, and waits until loading the + * folder in the view is finished. + * + * Many unit tests need access to DolphinVie's internal item view (icons, details, or columns). + * Therefore, a pointer to the item view is returned by initView(DolphinView*). + */ + QAbstractItemView* DolphinViewTest_AllViewModes::initView(DolphinView* view) const { + QSignalSpy spyFinishedPathLoading(view, SIGNAL(finishedPathLoading(const KUrl&))); view->setMode(mode()); + Q_ASSERT(verifyCorrectViewMode(view)); view->resize(200, 300); view->show(); QTest::qWaitForWindowShown(view); - Q_ASSERT(verifyCorrectViewMode(view)); - reloadViewAndWait(view); + + // If the DolphinView's finishedPathLoading(const KUrl&) signal has not been received yet, + // we have to wait a bit more. + // The reason why the if-statement is needed here is that the signal might have been emitted + // while we were waiting in QTest::qWaitForWindowShown(view) + // -> waitForFinishedPathLoading(view) would fail in that case. + if (spyFinishedPathLoading.isEmpty()) { + Q_ASSERT(waitForFinishedPathLoading(view)); + } + return itemView(view); }