]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add a unit test for a recently fixed crash
authorFrank Reininghaus <frank78ac@googlemail.com>
Sun, 27 Jan 2013 13:09:39 +0000 (14:09 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Sun, 27 Jan 2013 13:09:39 +0000 (14:09 +0100)
Before commit 90c7fd400c34e6d4d583c54c04631856c387d359, adding a
KFileItem with an empty path caused a crash in
KFileItemModel::expandedParentsCountCompare().

src/tests/kfileitemmodeltest.cpp

index 9d53ea7e612c4476feebdc12fbf7dfa8bd906fc6..65368b75baf3addb2aa330ecf0fa172a6d5a26d3 100644 (file)
@@ -72,10 +72,9 @@ private slots:
     void testExpandItems();
     void testExpandParentItems();
     void testSorting();
-
     void testIndexForKeyboardSearch();
-
     void testNameFilter();
+    void testEmptyPath();
 
 private:
     bool isModelConsistent() const;
@@ -774,6 +773,31 @@ void KFileItemModelTest::testNameFilter()
     QCOMPARE(m_model->count(), 5);
 }
 
+/**
+ * Verifies that we do not crash when adding a KFileItem with an empty path.
+ * Before this issue was fixed, KFileItemModel::expandedParentsCountCompare()
+ * tried to always read the first character of the path, even if the path is empty.
+ */
+void KFileItemModelTest::testEmptyPath()
+{
+    QSet<QByteArray> roles;
+    roles.insert("text");
+    roles.insert("isExpanded");
+    roles.insert("isExpandable");
+    roles.insert("expandedParentsCount");
+    m_model->setRoles(roles);
+
+    const KUrl emptyUrl;
+    QVERIFY(emptyUrl.path().isEmpty());
+    
+    const KUrl url("file:///test/");
+    
+    KFileItemList items;
+    items << KFileItem(emptyUrl, QString(), KFileItem::Unknown) << KFileItem(url, QString(), KFileItem::Unknown);
+    m_model->slotNewItems(items);
+    m_model->slotCompleted();
+}
+
 bool KFileItemModelTest::isModelConsistent() const
 {
     if (m_model->m_items.count() != m_model->m_itemData.count()) {