summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2020-02-13 09:14:09 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-02-13 18:31:40 +0100
commit6b2535ea15cdbdb2355416b604f072fc13ff36b2 (patch)
tree4bf1560bab77c8b315850c5337ba31a0ea87b5f0 /tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
parent54c2cebabdda0280b8443c6947b6fee02445e138 (diff)
parent67491e2df5357706dbf88ddaf1f030ff095b4528 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts: examples/widgets/graphicsview/boxes/scene.h src/corelib/Qt5CoreMacros.cmake src/corelib/Qt6CoreMacros.cmake src/network/ssl/qsslsocket.cpp src/network/ssl/qsslsocket.h src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp src/testlib/CMakeLists.txt src/testlib/.prev_CMakeLists.txt tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp Disabled building manual tests with CMake for now, because qmake doesn't do it, and it confuses people. Done-With: Alexandru Croitor <alexandru.croitor@qt.io> Done-With: Volker Hilsheimer <volker.hilsheimer@qt.io> Change-Id: I865ae347bd01f4e59f16d007b66d175a52f1f152
Diffstat (limited to 'tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp')
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index 4e31c3e57c..63bf103725 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -1014,30 +1014,38 @@ void tst_QFileSystemModel::drives()
void tst_QFileSystemModel::dirsBeforeFiles()
{
- QDir dir(flatDirTestPath);
+ auto diagnosticMsg = [](int row, const QFileInfo &left, const QFileInfo &right) -> QByteArray {
+ QString message;
+ QDebug(&message).noquote() << "Unexpected sort order at #" << row << ':' << left << right;
+ return message.toLocal8Bit();
+ };
+ QTemporaryDir testDir(flatDirTestPath);
+ QVERIFY2(testDir.isValid(), qPrintable(testDir.errorString()));
+ QDir dir(testDir.path());
const int itemCount = 3;
for (int i = 0; i < itemCount; ++i) {
QLatin1Char c('a' + char(i));
QVERIFY(dir.mkdir(c + QLatin1String("-dir")));
- QFile file(flatDirTestPath + QLatin1Char('/') + c + QLatin1String("-file"));
+ QFile file(dir.filePath(c + QLatin1String("-file")));
QVERIFY(file.open(QIODevice::ReadWrite));
file.close();
}
QScopedPointer<QFileSystemModel> model(new QFileSystemModel);
- QModelIndex root = model->setRootPath(flatDirTestPath);
+ QModelIndex root = model->setRootPath(dir.absolutePath());
// Wait for model to be notified by the file system watcher
QTRY_COMPARE(model->rowCount(root), 2 * itemCount);
-
- // Ensure that no file occurs before any directory:
- for (int i = 1; i < model->rowCount(root); ++i) {
+ // sort explicitly - dirs before files (except on macOS), and then by name
+ model->sort(0);
+ // Ensure that no file occurs before any directory (see QFileSystemModelSorter):
+ for (int i = 1, count = model->rowCount(root); i < count; ++i) {
+ const QFileInfo previous = model->fileInfo(model->index(i - 1, 0, root));
+ const QFileInfo current = model->fileInfo(model->index(i, 0, root));
#ifndef Q_OS_MAC
- QVERIFY(!(model->fileInfo(model->index(i - 1, 0, root)).isFile()
- && model->fileInfo(model->index(i, 0, root)).isDir()));
+ QVERIFY2(!(previous.isFile() && current.isDir()), diagnosticMsg(i, previous, current).constData());
#else
- QVERIFY(model->fileInfo(model->index(i - 1, 0, root)).fileName() <
- model->fileInfo(model->index(i, 0, root)).fileName());
+ QVERIFY2(previous.fileName() < current.fileName(), diagnosticMsg(i, previous, current).constData());
#endif
}
}