From a9ecea7cd12e6d5cd8d9a10c9424ded4cc3ccdc7 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Tue, 5 Apr 2011 23:55:37 +0200 Subject: [PATCH] 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). --- src/tests/dolphindetailsviewtest.cpp | 13 +++++++++++- src/tests/dolphinviewtest_allviewmodes.cpp | 24 ++++++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) 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); } -- 2.47.3