]> 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 --combined src/main.cpp
index 06328bd2ed985d691df05e2555231c7c3fe5bae9,5addff19444b36dac0f968605d8820b38efe251f..59575fdaf696941fce5b2283005657cce4151e1a
@@@ -33,7 -33,7 +33,7 @@@ KDE_EXPORT int kdemain(int argc, char *
  {
      KAboutData about("dolphin", 0,
                       ki18nc("@title", "Dolphin"),
-                      "2.1.98",
+                      "2.2",
                       ki18nc("@title", "File Manager"),
                       KAboutData::License_GPL,
                       ki18nc("@info:credit", "(C) 2006-2012 Peter Penz and Frank Reininghaus"));
@@@ -50,9 -50,6 +50,9 @@@
      about.addAuthor(ki18nc("@info:credit", "David Faure"),
                      ki18nc("@info:credit", "Developer"),
                      "faure@kde.org");
 +    about.addAuthor(ki18nc("@info:credit", "Emmanuel Pescosta"),
 +                    ki18nc("@info:credit", "Developer"),
 +                    "emmanuelpescosta099@gmail.com");
      about.addAuthor(ki18nc("@info:credit", "Aaron J. Seigo"),
                      ki18nc("@info:credit", "Developer"),
                      "aseigo@kde.org");
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:
@@@ -151,7 -153,7 +152,7 @@@ void KFileItemModelTest::testNewItems(
  
      QCOMPARE(m_model->count(), 3);
  
 -    QVERIFY(isModelConsistent());
 +    QVERIFY(m_model->isConsistent());
  }
  
  void KFileItemModelTest::testRemoveItems()
      m_model->loadDirectory(m_testDir->url());
      QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
      QCOMPARE(m_model->count(), 2);
 -    QVERIFY(isModelConsistent());
 +    QVERIFY(m_model->isConsistent());
  
      m_testDir->removeFile("a.txt");
      m_model->m_dirLister->updateDirectory(m_testDir->url());
      QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsRemoved(KItemRangeList)), DefaultTimeout));
      QCOMPARE(m_model->count(), 1);
 -    QVERIFY(isModelConsistent());
 +    QVERIFY(m_model->isConsistent());
  }
  
  void KFileItemModelTest::testDirLoadingCompleted()
      QCOMPARE(itemsRemovedSpy.count(), 2);
      QCOMPARE(m_model->count(), 4);
  
 -    QVERIFY(isModelConsistent());
 +    QVERIFY(m_model->isConsistent());
  }
  
  void KFileItemModelTest::testSetData()
      values = m_model->data(0);
      QCOMPARE(values.value("customRole1").toString(), QString("Test1"));
      QCOMPARE(values.value("customRole2").toString(), QString("Test2"));
 -    QVERIFY(isModelConsistent());
 +    QVERIFY(m_model->isConsistent());
  }
  
  void KFileItemModelTest::testSetDataWithModifiedSortRole_data()
@@@ -312,7 -314,7 +313,7 @@@ void KFileItemModelTest::testSetDataWit
      QCOMPARE(m_model->data(0).value("rating").toInt(), ratingIndex0);
      QCOMPARE(m_model->data(1).value("rating").toInt(), ratingIndex1);
      QCOMPARE(m_model->data(2).value("rating").toInt(), ratingIndex2);
 -    QVERIFY(isModelConsistent());
 +    QVERIFY(m_model->isConsistent());
  }
  
  void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
              QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
          }
  
 -        QVERIFY(isModelConsistent());
 +        QVERIFY(m_model->isConsistent());
      }
  
      QCOMPARE(m_model->count(), 201);
@@@ -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;