]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge remote-tracking branch 'origin/KDE/4.10'
authorFrank Reininghaus <frank78ac@googlemail.com>
Wed, 30 Jan 2013 20:06:34 +0000 (21:06 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Wed, 30 Jan 2013 20:06:34 +0000 (21:06 +0100)
Conflicts:
dolphin/src/tests/kfileitemmodeltest.cpp

1  2 
src/main.cpp
src/tests/kfileitemmodeltest.cpp

diff --cc src/main.cpp
Simple merge
index d0f2e1eaaf3c4b52d1c4489ccef7f5b3ddc5d540,719459c6f7acc08a1642f52aef782f9a46ef4ab7..2ad18428a84fd5fe13c762b0e3967776a2cf3617
@@@ -75,8 -75,10 +75,9 @@@ private slots
      void testIndexForKeyboardSearch();
      void testNameFilter();
      void testEmptyPath();
+     void testRemoveHiddenItems();
  
  private:
 -    bool isModelConsistent() const;
      QStringList itemsInModel() const;
  
  private:
@@@ -797,6 -799,79 +798,56 @@@ void KFileItemModelTest::testEmptyPath(
      m_model->slotCompleted();
  }
  
 -bool KFileItemModelTest::isModelConsistent() const
 -{
 -    if (m_model->m_items.count() != m_model->m_itemData.count()) {
 -        return false;
 -    }
 -
 -    for (int i = 0; i < m_model->count(); ++i) {
 -        const KFileItem item = m_model->fileItem(i);
 -        if (item.isNull()) {
 -            qWarning() << "Item" << i << "is null";
 -            return false;
 -        }
 -
 -        const int itemIndex = m_model->index(item);
 -        if (itemIndex != i) {
 -            qWarning() << "Item" << i << "has a wrong index:" << itemIndex;
 -            return false;
 -        }
 -    }
 -
 -    return true;
 -}
 -
+ /**
+  * 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);
+ }
  QStringList KFileItemModelTest::itemsInModel() const
  {
      QStringList items;