From 2c90b02a32ec5929b9f4aefc11c0c0faebe6703c Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 5 Jul 2023 01:13:15 +0300 Subject: [PATCH] gwenview: stabilize the RecursiveDirModel test note that this race that was observed by the author of the test will happen outside the test - if files are created while the KDirLister is listing (because an automatic update was issued for example) some files may not be listed Signed-off-by: Ivailo Monev --- gwenview/lib/recursivedirmodel.cpp | 7 +++++++ gwenview/lib/recursivedirmodel.h | 1 + gwenview/tests/auto/recursivedirmodeltest.cpp | 21 +++------------------ gwenview/tests/auto/testutils.cpp | 1 + 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/gwenview/lib/recursivedirmodel.cpp b/gwenview/lib/recursivedirmodel.cpp index bd5117df..6c0a7cf1 100644 --- a/gwenview/lib/recursivedirmodel.cpp +++ b/gwenview/lib/recursivedirmodel.cpp @@ -119,6 +119,11 @@ void RecursiveDirModel::setUrl(const KUrl& url) d->mDirLister->openUrl(url, true); } +void RecursiveDirModel::updateDirectory() +{ + d->mDirLister->updateDirectory(); +} + int RecursiveDirModel::rowCount(const QModelIndex& parent) const { if (parent.isValid()) { @@ -153,6 +158,7 @@ QVariant RecursiveDirModel::data(const QModelIndex& index, int role) const void RecursiveDirModel::slotItemsAdded(const KFileItemList& newList) { + // qDebug() << Q_FUNC_INFO << newList; KFileItemList fileList; Q_FOREACH(const KFileItem& item, newList) { if (item.isFile()) { @@ -173,6 +179,7 @@ void RecursiveDirModel::slotItemsAdded(const KFileItemList& newList) void RecursiveDirModel::slotItemsDeleted(const KFileItemList& list) { + // qDebug() << Q_FUNC_INFO << list; Q_FOREACH(const KFileItem& item, list) { if (item.isDir()) { continue; diff --git a/gwenview/lib/recursivedirmodel.h b/gwenview/lib/recursivedirmodel.h index d859c86a..3fd74e7a 100644 --- a/gwenview/lib/recursivedirmodel.h +++ b/gwenview/lib/recursivedirmodel.h @@ -48,6 +48,7 @@ public: KUrl url() const; void setUrl(const KUrl&); + void updateDirectory(); int rowCount(const QModelIndex&) const; // reimp QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const; // reimp diff --git a/gwenview/tests/auto/recursivedirmodeltest.cpp b/gwenview/tests/auto/recursivedirmodeltest.cpp index 3e6cfba9..7b0f8f9d 100644 --- a/gwenview/tests/auto/recursivedirmodeltest.cpp +++ b/gwenview/tests/auto/recursivedirmodeltest.cpp @@ -138,39 +138,24 @@ void RecursiveDirModelTest::testBasic() // Test adding new files sandBoxDir.fill(addedFiles); + model.updateDirectory(); loop.exec(); out = listModelUrls(&model); expected = listExpectedUrls(sandBoxDir, initialFiles + addedFiles); QCOMPARE(out, expected); -# if 0 - /* FIXME: This part of the test is not reliable :/ Sometimes some tests pass, - * sometimes they don't. It feels like KDirLister::itemsDeleted() is not - * always emitted. - */ - // Test removing files Q_FOREACH(const QString &name, removedFiles) { bool ok = sandBoxDir.remove(name); Q_ASSERT(ok); expected.removeOne(KUrl(sandBoxDir.absoluteFilePath(name))); } - QTime chrono; - chrono.start(); - while (chrono.elapsed() < 2000) { - waitForDeferredDeletes(); - } + model.updateDirectory(); + loop.exec(); out = listModelUrls(&model); - if (out != expected) { - kWarning() << "out:"; - logLst(out); - kWarning() << "expected:"; - logLst(expected); - } QCOMPARE(out, expected); -#endif } void RecursiveDirModelTest::testSetNewUrl() diff --git a/gwenview/tests/auto/testutils.cpp b/gwenview/tests/auto/testutils.cpp index 53bcc4e4..8e5b989c 100644 --- a/gwenview/tests/auto/testutils.cpp +++ b/gwenview/tests/auto/testutils.cpp @@ -155,6 +155,7 @@ void SandBoxDir::fill(const QStringList& filePaths) Q_FOREACH(const QString& filePath, filePaths) { QFileInfo info(*this, filePath); mkpath(info.absolutePath()); + // qDebug() << Q_FUNC_INFO << info.absoluteFilePath(); createEmptyFile(info.absoluteFilePath()); } } -- 2.11.0