summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp')
-rw-r--r--tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp112
1 files changed, 79 insertions, 33 deletions
diff --git a/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp b/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp
index df541ee710..e2ac1858da 100644
--- a/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp
+++ b/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp
@@ -85,9 +85,12 @@ private slots:
void uncPaths();
#endif
#ifndef Q_OS_WIN
- void hiddenDirs_hiddenFiles();
+ void hiddenFiles();
+ void hiddenDirs();
#endif
+ void withStdAlgorithms();
+
private:
QSharedPointer<QTemporaryDir> m_dataDir;
};
@@ -173,10 +176,10 @@ void tst_QDirListing::initTestCase()
createFile("hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile");
createFile("hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile");
createFile("hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile");
- createDirectory("hiddenDirs_hiddenFiles/normalDirectory/normalDirectory");
- createDirectory("hiddenDirs_hiddenFiles/normalDirectory/.hiddenDirectory");
- createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/normalDirectory");
- createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenDirectory");
+ createDirectory("hiddenDirs_hiddenFiles/normalDirectory/subdir");
+ createDirectory("hiddenDirs_hiddenFiles/normalDirectory/.hidden-subdir");
+ createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/subdir");
+ createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/.hidden-subdir");
#endif
}
@@ -427,7 +430,10 @@ public:
class EngineWithNoIteratorHandler : public QAbstractFileEngineHandler
{
+ Q_DISABLE_COPY_MOVE(EngineWithNoIteratorHandler)
public:
+ EngineWithNoIteratorHandler() = default;
+
std::unique_ptr<QAbstractFileEngine> create(const QString &fileName) const override
{
return std::make_unique<EngineWithNoIterator>(fileName);
@@ -446,7 +452,10 @@ void tst_QDirListing::engineWithNoIterator()
class CustomEngineHandler : public QAbstractFileEngineHandler
{
+ Q_DISABLE_COPY_MOVE(CustomEngineHandler)
public:
+ CustomEngineHandler() = default;
+
std::unique_ptr<QAbstractFileEngine> create(const QString &fileName) const override
{
// We want to test QFSFileEngine specifically, so force QDirListing to use it
@@ -565,40 +574,77 @@ void tst_QDirListing::uncPaths()
// In Unix it is easy to create hidden files, but in Windows it requires
// a special call since hidden files need to be "marked" while in Unix
// anything starting by a '.' is a hidden file.
-// For that reason this test is not run in Windows.
-void tst_QDirListing::hiddenDirs_hiddenFiles()
+// For that reason these two tests aren't run on Windows.
+
+void tst_QDirListing::hiddenFiles()
{
- // Only files
- {
- int matches = 0;
- int failures = 0;
- constexpr auto filters = QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot;
- for (const auto &dirEntry : QDirListing(u"hiddenDirs_hiddenFiles"_s, filters,
- ItFlag::Recursive)) {
- ++matches;
- if (dirEntry.isDir())
- ++failures; // search was only supposed to find files
- }
- QCOMPARE(matches, 6);
- QCOMPARE(failures, 0);
+ QStringList expected = {
+ "hiddenDirs_hiddenFiles/normalFile"_L1,
+ "hiddenDirs_hiddenFiles/.hiddenFile"_L1,
+ "hiddenDirs_hiddenFiles/normalDirectory/normalFile"_L1,
+ "hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile"_L1,
+ "hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile"_L1,
+ "hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile"_L1,
+ };
+ expected.sort();
+
+ constexpr auto filters = QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot;
+ QStringList list;
+ list.reserve(expected.size());
+ for (const auto &dirEntry : QDirListing(u"hiddenDirs_hiddenFiles"_s, filters,
+ ItFlag::Recursive)) {
+ QVERIFY(dirEntry.isFile());
+ list.emplace_back(dirEntry.filePath());
}
- // Only directories
- {
- int matches = 0;
- int failures = 0;
- constexpr auto filters = QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot;
- for (const auto &dirEntry : QDirListing(u"hiddenDirs_hiddenFiles"_s, filters,
- ItFlag::Recursive)) {
- ++matches;
- if (!dirEntry.isDir())
- ++failures; // search was only supposed to find files
- }
- QCOMPARE(matches, 6);
- QCOMPARE(failures, 0);
+
+ list.sort();
+
+ QCOMPARE_EQ(list, expected);
+}
+
+void tst_QDirListing::hiddenDirs()
+{
+ QStringList expected = {
+ "hiddenDirs_hiddenFiles/normalDirectory"_L1,
+ "hiddenDirs_hiddenFiles/normalDirectory/subdir"_L1,
+ "hiddenDirs_hiddenFiles/normalDirectory/.hidden-subdir"_L1,
+ "hiddenDirs_hiddenFiles/.hiddenDirectory"_L1,
+ "hiddenDirs_hiddenFiles/.hiddenDirectory/subdir"_L1,
+ "hiddenDirs_hiddenFiles/.hiddenDirectory/.hidden-subdir"_L1,
+ };
+ expected.sort();
+
+ constexpr auto filters = QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot;
+ QStringList list;
+ list.reserve(expected.size());
+ for (const auto &dirEntry : QDirListing(u"hiddenDirs_hiddenFiles"_s, filters,
+ ItFlag::Recursive)) {
+ QVERIFY(dirEntry.isDir());
+ list.emplace_back(dirEntry.filePath());
}
+ list.sort();
+
+ QCOMPARE_EQ(list, expected);
}
+
#endif // Q_OS_WIN
+void tst_QDirListing::withStdAlgorithms()
+{
+ QDirListing dirList(u"entrylist"_s, QDir::AllEntries | QDir::NoDotAndDotDot, ItFlag::Recursive);
+
+ std::for_each(dirList.cbegin(), dirList.cend(), [](const auto &dirEntry) {
+ QVERIFY(dirEntry.absoluteFilePath().contains("entrylist"));
+ });
+
+ const auto fileName = "dummy"_L1;
+ auto it = std::find_if(dirList.cbegin(), dirList.cend(), [fileName](const auto &dirEntry) {
+ return dirEntry.fileName() == fileName;
+ });
+ QVERIFY(it != dirList.cend());
+ QCOMPARE(it->fileName(), fileName);
+}
+
QTEST_MAIN(tst_QDirListing)
#include "tst_qdirlisting.moc"