diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2023-12-20 01:37:27 +0200 |
---|---|---|
committer | Ahmad Samir <a.samirh78@gmail.com> | 2024-02-04 14:04:18 +0200 |
commit | d887e34b495c52a1168c7e7212172d879963c420 (patch) | |
tree | 1616b1ac85e53cc600f7fbc399d3415d9a7d9dd5 | |
parent | ff1039c217fb1ae03b701557a5a50c2112555991 (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.cpp | 34 |
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() |