summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2023-12-20 01:37:27 +0200
committerAhmad Samir <a.samirh78@gmail.com>2024-02-04 14:04:18 +0200
commitd887e34b495c52a1168c7e7212172d879963c420 (patch)
tree1616b1ac85e53cc600f7fbc399d3415d9a7d9dd5
parentff1039c217fb1ae03b701557a5a50c2112555991 (diff)
tst_qdiriterator: add a test for QFsFileEngineIterator
As a baseline for subsequent commits. Change-Id: Ifac026848e92817b08a75ceafee6d06e0a8f399d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
index ce460eb24b..8f842e7c11 100644
--- a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
+++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
@@ -70,6 +70,8 @@ private slots:
void stopLinkLoop();
#ifdef QT_BUILD_INTERNAL
void engineWithNoIterator();
+ void testQFsFileEngineIterator_data() { iterateRelativeDirectory_data(); }
+ void testQFsFileEngineIterator();
#endif
void absoluteFilePathsFromRelativeIteratorPath();
void recurseWithFilters() const;
@@ -456,6 +458,38 @@ void tst_QDirIterator::engineWithNoIterator()
QDir("entrylist").entryList();
QVERIFY(true); // test that the above line doesn't crash
}
+
+class CustomEngineHandler : public QAbstractFileEngineHandler
+{
+public:
+ QAbstractFileEngine *create(const QString &fileName) const override
+ {
+ // We want to test QFSFileEngine specifically, so force QDirIterator to use it
+ // over the default QFileSystemEngine
+ return new QFSFileEngine(fileName);
+ }
+};
+
+void tst_QDirIterator::testQFsFileEngineIterator()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QDir::Filters, filters);
+ QFETCH(QDirIterator::IteratorFlags, flags);
+
+ if (dirName == u"empty")
+ return; // This row isn't useful in this test
+
+ CustomEngineHandler handler;
+ bool isEmpty = true;
+ QDirIterator iter(dirName, nameFilters, filters, flags);
+ while (iter.hasNext()) {
+ const QFileInfo &fi = iter.nextFileInfo();
+ if (fi.filePath().contains(u"entrylist"))
+ isEmpty = false; // At least one entry in `entrylist` dir
+ }
+ QVERIFY(!isEmpty);
+}
#endif
void tst_QDirIterator::absoluteFilePathsFromRelativeIteratorPath()