diff options
Diffstat (limited to 'tests/auto/corelib/io/qabstractfileengine')
-rw-r--r-- | tests/auto/corelib/io/qabstractfileengine/CMakeLists.txt | 8 | ||||
-rw-r--r-- | tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp | 86 |
2 files changed, 57 insertions, 37 deletions
diff --git a/tests/auto/corelib/io/qabstractfileengine/CMakeLists.txt b/tests/auto/corelib/io/qabstractfileengine/CMakeLists.txt index 7ae1d38dc1..7e7ad98d73 100644 --- a/tests/auto/corelib/io/qabstractfileengine/CMakeLists.txt +++ b/tests/auto/corelib/io/qabstractfileengine/CMakeLists.txt @@ -1,12 +1,16 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause -# Generated from qabstractfileengine.pro. - ##################################################################### ## tst_qabstractfileengine Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qabstractfileengine LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + qt_internal_add_test(tst_qabstractfileengine SOURCES tst_qabstractfileengine.cpp diff --git a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp index b093644013..cf00c1525c 100644 --- a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp +++ b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// 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 <QtCore/private/qabstractfileengine_p.h> #include <QtCore/private/qfsfileengine_p.h> @@ -17,6 +17,8 @@ #include <QtCore/QDebug> #include "../../../../shared/filesystem.h" +using namespace Qt::StringLiterals; + class tst_QAbstractFileEngine : public QObject { @@ -285,19 +287,19 @@ public: return QString(); } - QDateTime fileTime(FileTime time) const override + QDateTime fileTime(QFile::FileTime time) const override { QSharedPointer<File> file = resolveFile(false); if (file) { QMutexLocker lock(&file->mutex); switch (time) { - case BirthTime: + case QFile::FileBirthTime: return file->birth; - case MetadataChangeTime: + case QFile::FileMetadataChangeTime: return file->change; - case ModificationTime: + case QFile::FileModificationTime: return file->modification; - case AccessTime: + case QFile::FileAccessTime: return file->access; } } @@ -430,8 +432,8 @@ public: class Iterator : public QAbstractFileEngineIterator { public: - Iterator(QDir::Filters filters, const QStringList &filterNames) - : QAbstractFileEngineIterator(filters, filterNames) + Iterator(const QString &path, QDir::Filters filters, const QStringList &filterNames) + : QAbstractFileEngineIterator(path, filters, filterNames) { names.append("foo"); names.append("bar"); @@ -439,18 +441,19 @@ public: } QString currentFileName() const override { - return names.at(index); - } - bool hasNext() const override - { - return index < names.size() - 1; + if (!names.isEmpty() && index < names.size()) + return names.at(index); + return {}; } - QString next() override + bool advance() override { - if (!hasNext()) - return QString(); - ++index; - return currentFilePath(); + if (names.isEmpty()) + return false; + if (index < names.size() - 1) { + ++index; + return true; + } + return false; } QStringList names; int index; @@ -459,9 +462,11 @@ public: : QFSFileEngine(fileName) { } - Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override + + IteratorUniquePtr + beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override { - return new Iterator(filters, filterNames); + return std::make_unique<Iterator>(path, filters, filterNames); } FileFlags fileFlags(FileFlags type) const override { @@ -485,18 +490,27 @@ QHash<QString, QSharedPointer<ReferenceFileEngine::File> > ReferenceFileEngine:: class FileEngineHandler : QAbstractFileEngineHandler { - QAbstractFileEngine *create(const QString &fileName) const override + Q_DISABLE_COPY_MOVE(FileEngineHandler) + std::unique_ptr<QAbstractFileEngine> create(const QString &fileName) const override { if (fileName.endsWith(".tar") || fileName.contains(".tar/")) - return new MountingFileEngine(fileName); - if (fileName.startsWith("QFSFileEngine:")) - return new QFSFileEngine(fileName.mid(14)); - if (fileName.startsWith("reference-file-engine:")) - return new ReferenceFileEngine(fileName.mid(22)); - if (fileName.startsWith("resource:")) - return QAbstractFileEngine::create(QLatin1String(":/tst_qabstractfileengine/resources/") + fileName.mid(9)); - return 0; + return std::make_unique<MountingFileEngine>(fileName); + + if (auto l1 = "QFSFileEngine:"_L1; fileName.startsWith(l1)) + return std::make_unique<QFSFileEngine>(fileName.sliced(l1.size())); + + if (auto l1 = "reference-file-engine:"_L1; fileName.startsWith(l1)) + return std::make_unique<ReferenceFileEngine>(fileName.sliced(l1.size())); + + if (auto l1 = "resource:"_L1; fileName.startsWith(l1)) { + const auto p = ":/tst_qabstractfileengine/resources/"_L1 + fileName.sliced(l1.size()); + return QAbstractFileEngine::create(p); + } + + return nullptr; } +public: + FileEngineHandler() = default; }; void tst_QAbstractFileEngine::initTestCase() @@ -512,12 +526,13 @@ void tst_QAbstractFileEngine::cleanupTestCase() bool failed = false; FileEngineHandler handler; - Q_FOREACH(QString file, filesForRemoval) + for (const QString &file : std::as_const(filesForRemoval)) { if (!QFile::remove(file) || QFile::exists(file)) { failed = true; qDebug() << "Couldn't remove file:" << file; } + } QVERIFY(!failed); @@ -526,9 +541,9 @@ void tst_QAbstractFileEngine::cleanupTestCase() void tst_QAbstractFileEngine::customHandler() { - QScopedPointer<QAbstractFileEngine> file; + std::unique_ptr<QAbstractFileEngine> file; { - file.reset(QAbstractFileEngine::create("resource:file.txt")); + file = QAbstractFileEngine::create(u"resource:file.txt"_s); QVERIFY(file); } @@ -606,12 +621,12 @@ void tst_QAbstractFileEngine::fileIO() * the original size + the '\r' characters added by autocrlf. */ QFile::OpenMode openMode = QIODevice::ReadOnly | QIODevice::Unbuffered; -#ifdef Q_OS_WIN +#if defined (Q_OS_WIN) || defined(Q_OS_WASM) openMode |= QIODevice::Text; #endif QVERIFY(file.open(openMode)); QVERIFY(file.isOpen()); -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN) || defined(Q_OS_WASM) const qint64 convertedSize = fileSize + readContent.count('\n'); if (file.size() == convertedSize) fileSize = convertedSize; @@ -823,7 +838,8 @@ void tst_QAbstractFileEngine::mounting() QCOMPARE(dir.entryList(), (QStringList() << "bar" << "foo")); QDir dir2(fs.path()); bool found = false; - foreach (QFileInfo info, dir2.entryInfoList()) { + const auto entries = dir2.entryInfoList(); + for (const QFileInfo &info : entries) { if (info.fileName() == QLatin1String("test.tar")) { QVERIFY(!found); found = true; |