summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qdir/tst_qdir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qdir/tst_qdir.cpp')
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp86
1 files changed, 53 insertions, 33 deletions
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
index d7b0d2b1c1..b19f158746 100644
--- a/tests/auto/corelib/io/qdir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -1,8 +1,9 @@
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2017 Intel Corporation.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+// 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>
@@ -126,6 +127,7 @@ private slots:
void normalizePathSegments();
#endif
+ void compareCompiles();
void compare();
void QDir_default();
@@ -205,12 +207,18 @@ 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)
@@ -258,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");
@@ -319,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();
@@ -497,7 +520,7 @@ void tst_QDir::makedirReturnCode()
// 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());
@@ -591,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
@@ -701,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()
@@ -1061,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
@@ -1603,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"));
@@ -1616,7 +1636,7 @@ 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"));
@@ -1870,9 +1890,9 @@ void tst_QDir::searchPaths()
}
for (int i = 0; i < searchPathPrefixList.size(); ++i) {
- foreach (QString path, searchPathsList.at(i).split(",")) {
+ const auto parts = searchPathsList.at(i).split(",");
+ for (const QString &path : parts)
QDir::addSearchPath(searchPathPrefixList.at(i), path);
- }
}
for (int i = 0; i < searchPathPrefixList.size(); ++i) {
QCOMPARE(QDir::searchPaths(searchPathPrefixList.at(i)), searchPathsList.at(i).split(","));
@@ -2198,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');
@@ -2206,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('/')));
@@ -2330,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;
}