QDirListing: split a unitttest for easier debugging

Also rename the subdirs in the hiddenDirs_hiddenFiles test dir,
normalDirectory/normalDirectory/ is a bit confusing.

Make the test more deterministic by comparing lists of files/dirs
instead of just counts.

Change-Id: I12fdb5428bbef8382d4ee591792d167abcd216cf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Ahmad Samir 2024-05-26 19:53:14 +03:00
parent 87896c03c1
commit 1c6f594c38

View File

@ -85,7 +85,8 @@ private slots:
void uncPaths(); void uncPaths();
#endif #endif
#ifndef Q_OS_WIN #ifndef Q_OS_WIN
void hiddenDirs_hiddenFiles(); void hiddenFiles();
void hiddenDirs();
#endif #endif
private: private:
@ -173,10 +174,10 @@ void tst_QDirListing::initTestCase()
createFile("hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile"); createFile("hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile");
createFile("hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile"); createFile("hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile");
createFile("hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile"); createFile("hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile");
createDirectory("hiddenDirs_hiddenFiles/normalDirectory/normalDirectory"); createDirectory("hiddenDirs_hiddenFiles/normalDirectory/subdir");
createDirectory("hiddenDirs_hiddenFiles/normalDirectory/.hiddenDirectory"); createDirectory("hiddenDirs_hiddenFiles/normalDirectory/.hidden-subdir");
createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/normalDirectory"); createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/subdir");
createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenDirectory"); createDirectory("hiddenDirs_hiddenFiles/.hiddenDirectory/.hidden-subdir");
#endif #endif
} }
@ -571,38 +572,59 @@ void tst_QDirListing::uncPaths()
// In Unix it is easy to create hidden files, but in Windows it requires // 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 // a special call since hidden files need to be "marked" while in Unix
// anything starting by a '.' is a hidden file. // anything starting by a '.' is a hidden file.
// For that reason this test is not run in Windows. // For that reason these two tests aren't run on Windows.
void tst_QDirListing::hiddenDirs_hiddenFiles()
void tst_QDirListing::hiddenFiles()
{ {
// Only files QStringList expected = {
{ "hiddenDirs_hiddenFiles/normalFile"_L1,
int matches = 0; "hiddenDirs_hiddenFiles/.hiddenFile"_L1,
int failures = 0; "hiddenDirs_hiddenFiles/normalDirectory/normalFile"_L1,
constexpr auto filters = QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot; "hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile"_L1,
for (const auto &dirEntry : QDirListing(u"hiddenDirs_hiddenFiles"_s, filters, "hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile"_L1,
ItFlag::Recursive)) { "hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile"_L1,
++matches; };
if (dirEntry.isDir()) expected.sort();
++failures; // search was only supposed to find files
} constexpr auto filters = QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot;
QCOMPARE(matches, 6); QStringList list;
QCOMPARE(failures, 0); list.reserve(expected.size());
} for (const auto &dirEntry : QDirListing(u"hiddenDirs_hiddenFiles"_s, filters,
// Only directories ItFlag::Recursive)) {
{ QVERIFY(dirEntry.isFile());
int matches = 0; list.emplace_back(dirEntry.filePath());
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 #endif // Q_OS_WIN
QTEST_MAIN(tst_QDirListing) QTEST_MAIN(tst_QDirListing)