diff options
Diffstat (limited to 'tests/auto/corelib/io/qdir/tst_qdir.cpp')
-rw-r--r-- | tests/auto/corelib/io/qdir/tst_qdir.cpp | 279 |
1 files changed, 177 insertions, 102 deletions
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp index cfb25d7acb..b19f158746 100644 --- a/tests/auto/corelib/io/qdir/tst_qdir.cpp +++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp @@ -1,35 +1,13 @@ -/**************************************************************************** -** -** Copyright (C) 2017 Intel Corporation. -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// Copyright (C) 2017 Intel Corporation. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> +#include <QtTest/private/qcomparisontesthelper_p.h> #include <QTemporaryFile> +#if QT_CONFIG(process) #include <QProcess> +#endif #include <qcoreapplication.h> #include <qdebug.h> @@ -39,11 +17,10 @@ #if defined(Q_OS_WIN) #include <QtCore/private/qfsfileengine_p.h> -#include "../../../network-settings.h" #endif #if defined(Q_OS_WIN) && !defined(_WIN32_WINNT) -#define _WIN32_WINNT 0x500 +#define _WIN32_WINNT 0x0A00 #endif #include "../../../../shared/filesystem.h" @@ -53,6 +30,10 @@ # include <sys/stat.h> #endif +#ifdef Q_OS_INTEGRITY +#include "qplatformdefs.h" +#endif + #if defined(Q_OS_VXWORKS) #define Q_NO_SYMLINKS #endif @@ -67,6 +48,8 @@ #include "private/qdir_p.h" #endif +using namespace Qt::StringLiterals; + static QByteArray msgDoesNotExist(const QString &name) { return (QLatin1Char('"') + QDir::toNativeSeparators(name) @@ -108,6 +91,8 @@ private slots: void mkdirRmdir_data(); void mkdirRmdir(); void mkdirOnSymlink(); + void mkdirWithPermissions_data(); + void mkdirWithPermissions(); void makedirReturnCode(); @@ -142,6 +127,7 @@ private slots: void normalizePathSegments(); #endif + void compareCompiles(); void compare(); void QDir_default(); @@ -221,33 +207,38 @@ private slots: void stdfilesystem(); private: -#ifdef BUILTIN_TESTDATA - QString m_dataPath; QSharedPointer<QTemporaryDir> m_dataDir; -#else - const QString m_dataPath; -#endif + QString m_dataPath; + + constexpr static const std::array m_testDirs = { + "entrylist"_L1, + "resources"_L1, + "searchdir"_L1, + "testData"_L1, + "testdir"_L1, + "types"_L1, + "tst_qdir.cpp"_L1, + }; }; Q_DECLARE_METATYPE(tst_QDir::UncHandling) tst_QDir::tst_QDir() -#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) +#ifdef Q_OS_ANDROID : m_dataPath(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)) #elif !defined(BUILTIN_TESTDATA) : m_dataPath(QFileInfo(QFINDTESTDATA("testData")).absolutePath()) #endif { -#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) +#ifdef Q_OS_ANDROID QString resourceSourcePath = QStringLiteral(":/android_testdata/"); QDirIterator it(resourceSourcePath, QDirIterator::Subdirectories); while (it.hasNext()) { - it.next(); - - QFileInfo fileInfo = it.fileInfo(); + QFileInfo fileInfo = it.nextFileInfo(); if (!fileInfo.isDir()) { - QString destination = m_dataPath + QLatin1Char('/') + fileInfo.filePath().mid(resourceSourcePath.length()); + QString destination = m_dataPath + QLatin1Char('/') + + fileInfo.filePath().mid(resourceSourcePath.length()); QFileInfo destinationFileInfo(destination); if (!destinationFileInfo.exists()) { QDir().mkpath(destinationFileInfo.path()); @@ -275,6 +266,20 @@ void tst_QDir::initTestCase() m_dataDir = QEXTRACTTESTDATA("/"); QVERIFY2(!m_dataDir.isNull(), qPrintable("Did not find testdata. Is this builtin?")); m_dataPath = m_dataDir->path(); +#elif QT_CONFIG(cxx17_filesystem) // This code doesn't work in QNX on the CI + m_dataDir.reset(new QTemporaryDir); + m_dataPath = m_dataDir->path(); + + QString sourceDir = QFileInfo(QFINDTESTDATA(m_testDirs[0])).absolutePath(); + namespace fs = std::filesystem; + for (const auto &entry : m_testDirs) { + auto l1 = QLatin1StringView(entry); + const auto src = fs::path(QString(sourceDir + u'/' + l1).toStdString()); + const auto dest = fs::path(QString(m_dataPath + u'/' + l1).toStdString()); + std::error_code ec; + fs::copy(src, dest, fs::copy_options::recursive, ec); + QCOMPARE(ec.value(), 0); + } #endif QVERIFY2(!m_dataPath.isEmpty(), "test data not found"); @@ -336,6 +341,7 @@ void tst_QDir::setPath() QFETCH(QString, dir1); QFETCH(QString, dir2); + QDir::setCurrent(m_dataPath + "/entrylist"_L1); QDir shared; QDir qDir1(dir1); QStringList entries1 = qDir1.entryList(); @@ -398,7 +404,7 @@ void tst_QDir::mkdirRmdir() void tst_QDir::mkdirOnSymlink() { -#if !defined(Q_OS_UNIX) || defined(Q_NO_SYMLINKS) +#if !defined(Q_OS_UNIX) || defined(Q_NO_SYMLINKS) || defined(Q_OS_INTEGRITY) QSKIP("Test only valid on an OS that supports symlinks"); #else // Create the structure: @@ -442,10 +448,55 @@ void tst_QDir::mkdirOnSymlink() path = "two/four/five"; fi.setFile(path); +#if defined(Q_OS_QNX) + QSKIP("Fails on QNX QTBUG-98561"); +#endif QVERIFY2(fi.exists() && fi.isDir(), msgDoesNotExist(path).constData()); #endif } +void tst_QDir::mkdirWithPermissions_data() +{ + QTest::addColumn<QFile::Permissions>("permissions"); + + for (int u = 0; u < 8; ++u) { + for (int g = 0; g < 8; ++g) { + for (int o = 0; o < 8; ++o) { + auto permissions = QFileDevice::Permissions::fromInt((u << 12) | (g << 4) | o); + QTest::addRow("%04x", permissions.toInt()) << permissions; + } + } + } +} + +void tst_QDir::mkdirWithPermissions() +{ + QFETCH(QFile::Permissions, permissions); + +#ifdef Q_OS_WIN + QNtfsPermissionCheckGuard permissionGuard; +#endif +#ifdef Q_OS_UNIX + auto restoreMask = qScopeGuard([oldMask = umask(0)] { umask(oldMask); }); +#endif + + const QFile::Permissions setPermissions = { + QFile::ReadOther, QFile::WriteOther, QFile::ExeOther, + QFile::ReadGroup, QFile::WriteGroup, QFile::ExeGroup, + QFile::ReadOwner, QFile::WriteOwner, QFile::ExeOwner + }; + + const QString path = u"tmpdir"_s; + QDir dir; + auto deleteDirectory = qScopeGuard([&dir, &path] { dir.rmdir(path); }); + + QVERIFY(dir.mkdir(path, permissions)); + auto actualPermissions = QFileInfo(dir.filePath(path)).permissions(); + QCOMPARE(actualPermissions & setPermissions, permissions); + QVERIFY(dir.rmdir(path)); + deleteDirectory.dismiss(); +} + void tst_QDir::makedirReturnCode() { QString dirName = QString::fromLatin1("makedirReturnCode"); @@ -461,10 +512,15 @@ void tst_QDir::makedirReturnCode() QVERIFY(!QDir::current().mkdir(dirName)); // calling mkdir on an existing dir will fail. QVERIFY(QDir::current().mkpath(dirName)); // calling mkpath on an existing dir will pass + // the next line specifically targets Windows and macOS (QTBUG-85997, QTBUG-97110) + // calling mkpath on an existing drive name (Windows) or root path (macOS) shall pass + QVERIFY(QDir().mkpath(QDir::rootPath())); + QVERIFY(!QDir().mkdir(QDir::rootPath())); + // Remove the directory and create a file with the same path QDir::current().rmdir(dirName); QVERIFY(!f.exists()); - f.open(QIODevice::WriteOnly); + QVERIFY(f.open(QIODevice::WriteOnly)); f.write("test"); f.close(); QVERIFY2(f.exists(), msgDoesNotExist(f.fileName()).constData()); @@ -485,12 +541,12 @@ void tst_QDir::removeRecursively_data() << tmpdir + "two/three" << "relative"; QDir dir; - for (int i = 0; i < dirs.count(); ++i) + for (int i = 0; i < dirs.size(); ++i) dir.mkpath(dirs.at(i)); QStringList files; files << tmpdir + "one/file"; files << tmpdir + "two/three/file"; - for (int i = 0; i < files.count(); ++i) { + for (int i = 0; i < files.size(); ++i) { QFile file(files.at(i)); QVERIFY(file.open(QIODevice::WriteOnly)); file.write("Hello"); @@ -558,7 +614,7 @@ void tst_QDir::removeRecursivelySymlink() QDir().mkpath(tmpdir); QDir currentDir; currentDir.mkdir("myDir"); - QFile("testfile").open(QIODevice::WriteOnly); + QVERIFY(QFile("testfile").open(QIODevice::WriteOnly)); const QString link = tmpdir + "linkToDir.lnk"; const QString linkToFile = tmpdir + "linkToFile.lnk"; #ifndef Q_NO_SYMLINKS_TO_DIRS @@ -590,7 +646,7 @@ void tst_QDir::exists_data() QTest::newRow("simple dir") << (m_dataPath + "/resources") << true; QTest::newRow("simple dir with slash") << (m_dataPath + "/resources/") << true; #if defined(Q_OS_WIN) - const QString uncRoot = QStringLiteral("//") + QtNetworkSettings::winServerName(); + const QString uncRoot = QStringLiteral("//") + QTest::uncServerName(); QTest::newRow("unc 1") << uncRoot << true; QTest::newRow("unc 2") << uncRoot + QLatin1Char('/') << true; QTest::newRow("unc 3") << uncRoot + "/testshare" << true; @@ -668,32 +724,29 @@ void tst_QDir::QDir_default() QCOMPARE(dir.absolutePath(), QDir::currentPath()); } -void tst_QDir::compare() +void tst_QDir::compareCompiles() { - // operator== - - // Not using QCOMPARE to test result of QDir::operator== + QTestPrivate::testEqualityOperatorsCompile<QDir>(); +} +void tst_QDir::compare() +{ QDir dir; dir.makeAbsolute(); - QVERIFY(dir == QDir::currentPath()); + QT_TEST_EQUALITY_OPS(dir, QDir::currentPath(), true); QCOMPARE(QDir(), QDir(QDir::currentPath())); - QVERIFY(QDir("../") == QDir(QDir::currentPath() + "/..")); + + QT_TEST_EQUALITY_OPS(QDir("../"), QDir(QDir::currentPath() + "/.."), true); } -static QStringList filterLinks(const QStringList &list) +static QStringList filterLinks(QStringList &&list) { -#ifndef Q_NO_SYMLINKS - return list; -#else - QStringList result; - foreach (QString str, list) { - if (!str.endsWith(QLatin1String(".lnk"))) - result.append(str); - } - return result; +#ifdef Q_NO_SYMLINKS + auto isDotLnk = [](const auto &s) { return s.endsWith(".lnk"_L1); }; + list.removeIf(isDotLnk); #endif + return std::move(list); } void tst_QDir::entryList_data() @@ -717,13 +770,16 @@ void tst_QDir::entryList_data() << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(','); QTest::newRow("testdir1") << (m_dataPath + "/testdir") << QStringList() << (int)(QDir::AllDirs) << (int)(QDir::NoSort) - << QString(".,..,dir,spaces").split(','); + << QString(".,..,dir,dir.lnk,spaces").split(','); QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data") << (int)(QDir::NoFilter) << (int)(QDir::NoSort) << QString("file1.data,file2.data,file3.data").split(','); QTest::newRow("resources2") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data") << (int)(QDir::Files) << (int)(QDir::NoSort) << QString("file1.data,file2.data,file3.data").split(','); + QTest::newRow("testdir.lnk") << (m_dataPath + "/testdir/dir.lnk") << QStringList() + << (int)(QDir::NoFilter) << (int)(QDir::NoSort) + << QString(".,..,aaaaa.txt,subdir,subdir.lnk").split(','); } void tst_QDir::entryList() @@ -757,6 +813,12 @@ void tst_QDir::entryListWithTestFiles_data() QTest::newRow("QDir::AllEntries") << (m_dataPath + "/entrylist/") << QStringList("*") << int(QDir::AllEntries) << int(QDir::Name) << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(',')); + // Tests an assert in QDirSortItemComparator, when QDir::LocaleAware is set + // a QCollator is used + QTest::newRow("QDir::AllEntries") + << (m_dataPath + "/entrylist/") << QStringList("*") + << int(QDir::AllEntries) << int(QDir::Name | QDir::LocaleAware) + << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(',')); QTest::newRow("QDir::Files") << (m_dataPath + "/entrylist/") << QStringList("*") << int(QDir::Files) << int(QDir::Name) << filterLinks(QString("file,linktofile.lnk,writable").split(',')); @@ -960,7 +1022,7 @@ void tst_QDir::entryListTimedSort() QFileInfo aFileInfo(aFile); QFileInfo bFileInfo(bFile); - QVERIFY(bFileInfo.lastModified().msecsTo(aFileInfo.lastModified()) < 0); + QVERIFY(bFileInfo.lastModified(QTimeZone::UTC).msecsTo(aFileInfo.lastModified(QTimeZone::UTC)) < 0); QCOMPARE(actual.size(), 2); QCOMPARE(actual.first(), bFileInfo.fileName()); @@ -980,7 +1042,7 @@ void tst_QDir::entryListSimple_data() QTest::newRow("simple dir with slash") << (m_dataPath + "/resources/") << 2; #if defined(Q_OS_WIN) - const QString uncRoot = QStringLiteral("//") + QtNetworkSettings::winServerName(); + const QString uncRoot = QStringLiteral("//") + QTest::uncServerName(); QTest::newRow("unc 1") << uncRoot << 2; QTest::newRow("unc 2") << uncRoot + QLatin1Char('/') << 2; QTest::newRow("unc 3") << uncRoot + "/testshare" << 2; @@ -1006,7 +1068,7 @@ void tst_QDir::entryListSimple() QDir dir(dirName); QStringList actual = dir.entryList(); - QVERIFY2(actual.count() >= countMin, msgEntryListFailed(actual.count(), countMin, dirName).constData()); + QVERIFY2(actual.size() >= countMin, msgEntryListFailed(actual.size(), countMin, dirName).constData()); } void tst_QDir::entryListWithSymLinks() @@ -1019,7 +1081,7 @@ void tst_QDir::entryListWithSymLinks() QFile::remove("testfile.cpp"); QDir dir; dir.mkdir("myDir"); - QFile("testfile.cpp").open(QIODevice::WriteOnly); + QVERIFY(QFile("testfile.cpp").open(QIODevice::WriteOnly)); # ifndef Q_NO_SYMLINKS_TO_DIRS QVERIFY(QFile::link("myDir", "myLinkToDir.lnk")); # endif @@ -1215,11 +1277,11 @@ void tst_QDir::setNameFilters() dir.setNameFilters(nameFilters); QStringList actual = dir.entryList(); - int max = qMin(actual.count(), expected.count()); + int max = qMin(actual.size(), expected.size()); for (int i=0; i<max; ++i) QCOMPARE(actual[i], expected[i]); - QCOMPARE(actual.count(), expected.count()); + QCOMPARE(actual.size(), expected.size()); } void @@ -1268,9 +1330,20 @@ tst_QDir::cleanPath_data() QTest::newRow("drive-above-root") << "A:/.." << "A:/.."; QTest::newRow("unc-server-up") << "//server/path/.." << "//server"; QTest::newRow("unc-server-above-root") << "//server/.." << "//server/.."; - QTest::newRow("longpath") << "\\\\?\\d:\\" << "d:/"; - QTest::newRow("unc-network-share") << uR"(\\?\UNC\localhost\c$\tmp.txt)"_qs - << u"//localhost/c$/tmp.txt"_qs; + + QTest::newRow("longpath") << uR"(\\?\d:\)"_s << u"d:/"_s; + QTest::newRow("longpath-slash") << u"//?/d:/"_s << u"d:/"_s; + QTest::newRow("longpath-mixed-slashes") << uR"(//?/d:\)"_s << u"d:/"_s; + QTest::newRow("longpath-mixed-slashes-2") << uR"(\\?\d:/)"_s << u"d:/"_s; + + QTest::newRow("unc-network-share") << uR"(\\?\UNC\localhost\c$\tmp.txt)"_s + << u"//localhost/c$/tmp.txt"_s; + QTest::newRow("unc-network-share-slash") << u"//?/UNC/localhost/c$/tmp.txt"_s + << u"//localhost/c$/tmp.txt"_s; + QTest::newRow("unc-network-share-mixed-slashes") << uR"(//?/UNC/localhost\c$\tmp.txt)"_s + << u"//localhost/c$/tmp.txt"_s; + QTest::newRow("unc-network-share-mixed-slashes-2") << uR"(\\?\UNC\localhost/c$/tmp.txt)"_s + << u"//localhost/c$/tmp.txt"_s; #else QTest::newRow("data15") << "//c:/foo" << "/c:/foo"; #endif // non-windows @@ -1550,7 +1623,7 @@ void tst_QDir::filePath() void tst_QDir::remove() { QFile f("remove-test"); - f.open(QIODevice::WriteOnly); + QVERIFY(f.open(QIODevice::WriteOnly)); f.close(); QDir dir; QVERIFY(dir.remove("remove-test")); @@ -1563,12 +1636,12 @@ void tst_QDir::remove() void tst_QDir::rename() { QFile f("rename-test"); - f.open(QIODevice::WriteOnly); + QVERIFY(f.open(QIODevice::WriteOnly)); f.close(); QDir dir; QVERIFY(dir.rename("rename-test", "rename-test-renamed")); QVERIFY(dir.rename("rename-test-renamed", "rename-test")); -#if defined(Q_OS_MAC) +#if defined(Q_OS_DARWIN) QVERIFY(!dir.rename("rename-test", "/etc/rename-test-renamed")); #elif !defined(Q_OS_WIN) // on windows this is possible - maybe make the test a bit better @@ -1669,9 +1742,9 @@ void tst_QDir::dotAndDotDot() { QDir dir(QString((m_dataPath + "/testdir/"))); QStringList entryList = dir.entryList(QDir::Dirs); - QCOMPARE(entryList, QStringList() << QString(".") << QString("..") << QString("dir") << QString("spaces")); + QCOMPARE(entryList, QStringList({ u"."_s, u".."_s, u"dir"_s, u"dir.lnk"_s, u"spaces"_s })); entryList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); - QCOMPARE(entryList, QStringList() << QString("dir") << QString("spaces")); + QCOMPARE(entryList, QStringList({ u"dir"_s, u"dir.lnk"_s, u"spaces"_s })); } void tst_QDir::homePath() @@ -1684,7 +1757,7 @@ void tst_QDir::homePath() QVERIFY(QDir::isAbsolutePath(strHome)); #ifdef Q_OS_UNIX - if (strHome.length() > 1) // root dir = "/" + if (strHome.size() > 1) // root dir = "/" QVERIFY(!strHome.endsWith('/')); QByteArray envHome = qgetenv("HOME"); @@ -1698,7 +1771,7 @@ void tst_QDir::homePath() #endif QStringList entries = homeDir.entryList(); - for (int i = 0; i < entries.count(); ++i) { + for (int i = 0; i < entries.size(); ++i) { QFileInfo fi(QDir::homePath() + "/" + entries[i]); QCOMPARE(fi.exists(), true); } @@ -1714,7 +1787,7 @@ void tst_QDir::tempPath() QVERIFY(QDir::isAbsolutePath(path)); #ifdef Q_OS_UNIX - if (path.length() > 1) // root dir = "/" + if (path.size() > 1) // root dir = "/" QVERIFY(!path.endsWith('/')); #elif defined(Q_OS_WIN) if (path.length() > 3) // root dir = "c:/"; "//" is not really valid... @@ -1746,8 +1819,10 @@ void tst_QDir::nativeSeparators() QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/")); QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("/")); QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\\\?\\C:\\")), QString("C:/")); - QCOMPARE(QDir::fromNativeSeparators(uR"(\\?\UNC\localhost\c$\tmp.txt)"_qs), - u"//localhost/c$/tmp.txt"_qs); + QCOMPARE(QDir::fromNativeSeparators(uR"(\\?\UNC\localhost\c$\tmp.txt)"_s), + u"//localhost/c$/tmp.txt"_s); + QCOMPARE(QDir::fromNativeSeparators(uR"(//?/UNC/localhost\c$\tmp.txt)"_s), + u"//localhost/c$/tmp.txt"_s); #else QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("/")); QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\")); @@ -1793,10 +1868,10 @@ void tst_QDir::searchPaths() QFETCH(QString, expectedAbsolutePath); bool exists = !expectedAbsolutePath.isEmpty(); - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QDir::setSearchPaths(searchPathPrefixList.at(i), searchPathsList.at(i).split(",")); } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QCOMPARE(QDir::searchPaths(searchPathPrefixList.at(i)), searchPathsList.at(i).split(",")); } @@ -1807,19 +1882,19 @@ void tst_QDir::searchPaths() QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath); } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList()); } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty()); } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { - foreach (QString path, searchPathsList.at(i).split(",")) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { + const auto parts = searchPathsList.at(i).split(","); + for (const QString &path : parts) QDir::addSearchPath(searchPathPrefixList.at(i), path); - } } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QCOMPARE(QDir::searchPaths(searchPathPrefixList.at(i)), searchPathsList.at(i).split(",")); } @@ -1830,10 +1905,10 @@ void tst_QDir::searchPaths() QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath); } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList()); } - for (int i = 0; i < searchPathPrefixList.count(); ++i) { + for (int i = 0; i < searchPathPrefixList.size(); ++i) { QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty()); } } @@ -2143,7 +2218,7 @@ void tst_QDir::match() void tst_QDir::drives() { - QFileInfoList list(QDir::drives()); + const QFileInfoList list(QDir::drives()); #if defined(Q_OS_WIN) QVERIFY(list.count() >= 1); //system QLatin1Char systemdrive('c'); @@ -2151,7 +2226,7 @@ void tst_QDir::drives() #if defined(Q_OS_WIN) QVERIFY(list.count() <= 26); bool foundsystem = false; - foreach (QFileInfo fi, list) { + for (const QFileInfo &fi : list) { QCOMPARE(fi.absolutePath().size(), 3); //"x:/" QCOMPARE(fi.absolutePath().at(1), QChar(QLatin1Char(':'))); QCOMPARE(fi.absolutePath().at(2), QChar(QLatin1Char('/'))); @@ -2160,7 +2235,7 @@ void tst_QDir::drives() } QCOMPARE(foundsystem, true); #else - QCOMPARE(list.count(), 1); //root + QCOMPARE(list.size(), 1); //root QCOMPARE(list.at(0).absolutePath(), QLatin1String("/")); #endif } @@ -2172,7 +2247,7 @@ void tst_QDir::arrayOperator() QStringList entries(dir1.entryList()); int i = dir2.count(); - QCOMPARE(i, entries.count()); + QCOMPARE(i, entries.size()); --i; for (;i>=0;--i) { QCOMPARE(dir2[i], entries.at(i)); @@ -2206,7 +2281,7 @@ void tst_QDir::equalityOperator_data() //need a path in the root directory that is unlikely to be a symbolic link. #if defined (Q_OS_WIN) QString pathinroot("c:/windows/.."); -#elif defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) +#elif defined(Q_OS_ANDROID) QString pathinroot("/system/.."); #elif defined(Q_OS_HAIKU) QString pathinroot("/boot/.."); @@ -2275,9 +2350,9 @@ void tst_QDir::isRelative_data() QTest::newRow("homepath") << QDir::homePath() << false; QTest::newRow("temppath") << QDir::tempPath() << false; QTest::newRow("rootpath") << QDir::rootPath() << false; - foreach (QFileInfo root, QDir::drives()) { + const auto drives = QDir::drives(); + for (const QFileInfo &root : drives) QTest::newRow(root.absolutePath().toLocal8Bit()) << root.absolutePath() << false; - } QTest::newRow("resource") << ":/prefix" << false; } @@ -2340,7 +2415,7 @@ void tst_QDir::cdBelowRoot_data() const QString systemRoot = QString::fromLocal8Bit(qgetenv("SystemRoot")); QTest::newRow("windows-drive") << systemDrive << systemRoot.mid(3) << QDir::cleanPath(systemRoot); - const QString uncRoot = QStringLiteral("//") + QtNetworkSettings::winServerName(); + const QString uncRoot = QStringLiteral("//") + QTest::uncServerName(); const QString testDirectory = QStringLiteral("testshare"); QTest::newRow("windows-share") << uncRoot << testDirectory << QDir::cleanPath(uncRoot + QLatin1Char('/') + testDirectory); @@ -2425,7 +2500,7 @@ void tst_QDir::stdfilesystem() QCOMPARE(entries, QStringList() << "subdir2" << "subdir1"); QCOMPARE(filteredDir.sorting(), QDir::SortFlag::Reversed); QCOMPARE(filteredDir.filter(), QDir::Filter::Dirs); - QCOMPARE(filteredDir.nameFilters().length(), 1); + QCOMPARE(filteredDir.nameFilters().size(), 1); QCOMPARE(filteredDir.nameFilters().first(), "subdir*"); } #else |