mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Add unit test for bug 314046
The regression happened in the master branch only, but I think it doesn't hurt to add the test to the stable branch. CCBUG: 314046
This commit is contained in:
parent
4396233d21
commit
89134d62c7
1 changed files with 51 additions and 0 deletions
|
@ -75,6 +75,7 @@ private slots:
|
|||
void testIndexForKeyboardSearch();
|
||||
void testNameFilter();
|
||||
void testEmptyPath();
|
||||
void testRemoveHiddenItems();
|
||||
|
||||
private:
|
||||
bool isModelConsistent() const;
|
||||
|
@ -798,6 +799,56 @@ void KFileItemModelTest::testEmptyPath()
|
|||
m_model->slotCompleted();
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that removing hidden files and folders from the model does not
|
||||
* result in a crash, see https://bugs.kde.org/show_bug.cgi?id=314046
|
||||
*/
|
||||
void KFileItemModelTest::testRemoveHiddenItems()
|
||||
{
|
||||
m_testDir->createDir(".a");
|
||||
m_testDir->createDir(".b");
|
||||
m_testDir->createDir("c");
|
||||
m_testDir->createDir("d");
|
||||
m_testDir->createFiles(QStringList() << ".f" << ".g" << "h" << "i");
|
||||
|
||||
QSignalSpy spyItemsInserted(m_model, SIGNAL(itemsInserted(KItemRangeList)));
|
||||
QSignalSpy spyItemsRemoved(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
|
||||
|
||||
m_model->setShowHiddenFiles(true);
|
||||
m_model->loadDirectory(m_testDir->url());
|
||||
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||
QCOMPARE(itemsInModel(), QStringList() << ".a" << ".b" << "c" << "d" <<".f" << ".g" << "h" << "i");
|
||||
QCOMPARE(spyItemsInserted.count(), 1);
|
||||
QCOMPARE(spyItemsRemoved.count(), 0);
|
||||
KItemRangeList itemRangeList = spyItemsInserted.takeFirst().at(0).value<KItemRangeList>();
|
||||
QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 8));
|
||||
|
||||
m_model->setShowHiddenFiles(false);
|
||||
QCOMPARE(itemsInModel(), QStringList() << "c" << "d" << "h" << "i");
|
||||
QCOMPARE(spyItemsInserted.count(), 0);
|
||||
QCOMPARE(spyItemsRemoved.count(), 1);
|
||||
itemRangeList = spyItemsRemoved.takeFirst().at(0).value<KItemRangeList>();
|
||||
QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 2) << KItemRange(4, 2));
|
||||
|
||||
m_model->setShowHiddenFiles(true);
|
||||
QCOMPARE(itemsInModel(), QStringList() << ".a" << ".b" << "c" << "d" <<".f" << ".g" << "h" << "i");
|
||||
QCOMPARE(spyItemsInserted.count(), 1);
|
||||
QCOMPARE(spyItemsRemoved.count(), 0);
|
||||
itemRangeList = spyItemsInserted.takeFirst().at(0).value<KItemRangeList>();
|
||||
QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 2) << KItemRange(2, 2));
|
||||
|
||||
m_model->clear();
|
||||
QCOMPARE(itemsInModel(), QStringList());
|
||||
QCOMPARE(spyItemsInserted.count(), 0);
|
||||
QCOMPARE(spyItemsRemoved.count(), 1);
|
||||
itemRangeList = spyItemsRemoved.takeFirst().at(0).value<KItemRangeList>();
|
||||
QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 8));
|
||||
|
||||
// Hiding hidden files makes the dir lister emit its itemsDeleted signal.
|
||||
// Verify that this does not make the model crash.
|
||||
m_model->setShowHiddenFiles(false);
|
||||
}
|
||||
|
||||
bool KFileItemModelTest::isModelConsistent() const
|
||||
{
|
||||
if (m_model->m_items.count() != m_model->m_itemData.count()) {
|
||||
|
|
Loading…
Reference in a new issue