From e336111a5d28151984c717a4e6efc26de8f8373a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 19 Sep 2024 12:00:11 +0200 Subject: [PATCH] tests: Explicitly check for pathconf(_PC_CASE_SENSITIVE) == 1 We use pathconf in some of our tests to determine if the file system on Darwin is case sensitive. But pathconf returns -1 if the case sensitivity can't be determined, with errno set to ENOTSUP. The convention in this case is to treat the file system as not being case sensitive (as reported by NSURLVolumeSupportsCaseSensitiveNamesKey and VOL_CAP_FMT_CASE_SENSITIVE in equivalent APIs), so we need to check explicitly for a return value of 1. Change-Id: I1107e849babd8813da3b148c92494e8e35a32d36 Reviewed-by: Liang Qi Reviewed-by: Thiago Macieira (cherry picked from commit bd3aabf38454087a96a17ff0130d7f5c2b2b39a9) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/dialogs/qfiledialog.cpp | 2 +- tests/auto/corelib/io/qfile/tst_qfile.cpp | 2 +- tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp | 2 +- tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 2 +- tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 14624bb68b..1d792fd89e 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1021,7 +1021,7 @@ static inline bool isCaseSensitiveFileSystem(const QString &path) // file system mounted, wrongly capitalized drive letters will cause mismatches. return false; #elif defined(Q_OS_MACOS) - return pathconf(QFile::encodeName(path).constData(), _PC_CASE_SENSITIVE); + return pathconf(QFile::encodeName(path).constData(), _PC_CASE_SENSITIVE) == 1; #else return true; #endif diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp index 2748df5e7b..09d6c9ec0f 100644 --- a/tests/auto/corelib/io/qfile/tst_qfile.cpp +++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp @@ -3792,7 +3792,7 @@ void tst_QFile::caseSensitivity() #if defined(Q_OS_WIN) const bool caseSensitive = false; #elif defined(Q_OS_DARWIN) - const bool caseSensitive = pathconf(QDir::currentPath().toLatin1().constData(), _PC_CASE_SENSITIVE); + const bool caseSensitive = pathconf(QDir::currentPath().toLatin1().constData(), _PC_CASE_SENSITIVE) == 1; #else const bool caseSensitive = true; #endif diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp index 7b31e2789b..e0cd361fdb 100644 --- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp @@ -1027,7 +1027,7 @@ void tst_QFileInfo::compare_data() #if defined(Q_OS_WIN) << true; #elif defined(Q_OS_DARWIN) - << !pathconf(QDir::currentPath().toLatin1().constData(), _PC_CASE_SENSITIVE); + << (pathconf(QDir::currentPath().toLatin1().constData(), _PC_CASE_SENSITIVE) != 1); #else << false; #endif diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index 6952f14f19..93774b5157 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -547,7 +547,7 @@ void tst_QSettings::ctor() // more details in QMacSettingsPrivate::QMacSettingsPrivate(), organization was comify()-ed caseSensitive = settings5.fileName().contains("SoftWare.ORG"); } else { - caseSensitive = pathconf(settings5.fileName().toLatin1().constData(), _PC_CASE_SENSITIVE); + caseSensitive = pathconf(settings5.fileName().toLatin1().constData(), _PC_CASE_SENSITIVE) == 1; } #elif defined(Q_OS_WIN32) caseSensitive = false; diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp index 87d5e97b10..2ce4a956fa 100644 --- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp @@ -53,7 +53,7 @@ static inline bool isCaseSensitiveFileSystem(const QString &path) { Q_UNUSED(path); #if defined(Q_OS_MAC) - return pathconf(QFile::encodeName(path).constData(), _PC_CASE_SENSITIVE); + return pathconf(QFile::encodeName(path).constData(), _PC_CASE_SENSITIVE) == 1; #elif defined(Q_OS_WIN) return false; #else