summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-11-20 15:30:20 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-01-09 12:01:17 +0000
commitfcbaa8ec385e796c18cf317e8f364bd8e3c2538b (patch)
tree02f3dd099051e18e81e15e0050c90b6d56f9a391 /tests/auto
parentd196036024697a75868c1f1626525710495ca428 (diff)
QFileSystemModel/Windows: Make file name checking case-insensitive
Introduce a special hash modeled on the one used for QFileSystemWatcher on Windows. Task-number: QTBUG-31103 Task-number: QTBUG-64147 Change-Id: I69ebabe841716e4957ae3fb04fa5c43d233a3552 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index 979d5c632e..71efe1d59a 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -43,6 +43,7 @@
#if defined(Q_OS_WIN)
# include <qt_windows.h> // for SetFileAttributes
#endif
+#include <private/qfilesystemengine_p.h>
#include <algorithm>
@@ -883,6 +884,18 @@ void tst_QFileSystemModel::deleteFile()
QVERIFY(!newFile.exists());
}
+static QString flipCase(QString s)
+{
+ for (int i = 0, size = s.size(); i < size; ++i) {
+ const QChar c = s.at(i);
+ if (c.isUpper())
+ s[i] = c.toLower();
+ else if (c.isLower())
+ s[i] = c.toUpper();
+ }
+ return s;
+}
+
void tst_QFileSystemModel::caseSensitivity()
{
QString tmp = flatDirTestPath;
@@ -890,9 +903,23 @@ void tst_QFileSystemModel::caseSensitivity()
files << "a" << "c" << "C";
QVERIFY(createFiles(tmp, files));
QModelIndex root = model->index(tmp);
+ QStringList paths;
+ QModelIndexList indexes;
QCOMPARE(model->rowCount(root), 0);
for (int i = 0; i < files.count(); ++i) {
- QVERIFY(model->index(tmp + '/' + files.at(i)).isValid());
+ const QString path = tmp + '/' + files.at(i);
+ const QModelIndex index = model->index(path);
+ QVERIFY(index.isValid());
+ paths.append(path);
+ indexes.append(index);
+ }
+
+ if (!QFileSystemEngine::isCaseSensitive()) {
+ // QTBUG-31103, QTBUG-64147: Verify that files can be accessed by paths with fLipPeD case.
+ for (int i = 0; i < paths.count(); ++i) {
+ const QModelIndex flippedCaseIndex = model->index(flipCase(paths.at(i)));
+ QCOMPARE(indexes.at(i), flippedCaseIndex);
+ }
}
}