summaryrefslogtreecommitdiffstats
path: root/tests/auto/installer/lib7zarchive
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-08-24 11:09:54 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-09-14 15:04:15 +0300
commit7be4b9c71af4d4668deab355db73beb7feaf35c1 (patch)
tree6589191ca2f89756cb5c080645b73aca6e8441cc /tests/auto/installer/lib7zarchive
parent50292e14683727e6da81799cedd4ee352c3e0497 (diff)
Add tests for the new archive handling classes
Change-Id: I1e3a91fd0722b0b73197257ec5092a617b41516e Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'tests/auto/installer/lib7zarchive')
-rw-r--r--tests/auto/installer/lib7zarchive/data.qrc6
-rw-r--r--tests/auto/installer/lib7zarchive/data/invalid.7zbin0 -> 25600 bytes
-rw-r--r--tests/auto/installer/lib7zarchive/data/valid.7zbin0 -> 950 bytes
-rw-r--r--tests/auto/installer/lib7zarchive/lib7zarchive.pro7
-rw-r--r--tests/auto/installer/lib7zarchive/tst_lib7zarchive.cpp150
5 files changed, 163 insertions, 0 deletions
diff --git a/tests/auto/installer/lib7zarchive/data.qrc b/tests/auto/installer/lib7zarchive/data.qrc
new file mode 100644
index 000000000..d6453a9b3
--- /dev/null
+++ b/tests/auto/installer/lib7zarchive/data.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>data/valid.7z</file>
+ <file>data/invalid.7z</file>
+ </qresource>
+</RCC>
diff --git a/tests/auto/installer/lib7zarchive/data/invalid.7z b/tests/auto/installer/lib7zarchive/data/invalid.7z
new file mode 100644
index 000000000..bcf81250e
--- /dev/null
+++ b/tests/auto/installer/lib7zarchive/data/invalid.7z
Binary files differ
diff --git a/tests/auto/installer/lib7zarchive/data/valid.7z b/tests/auto/installer/lib7zarchive/data/valid.7z
new file mode 100644
index 000000000..e583bdf99
--- /dev/null
+++ b/tests/auto/installer/lib7zarchive/data/valid.7z
Binary files differ
diff --git a/tests/auto/installer/lib7zarchive/lib7zarchive.pro b/tests/auto/installer/lib7zarchive/lib7zarchive.pro
new file mode 100644
index 000000000..aabf724b6
--- /dev/null
+++ b/tests/auto/installer/lib7zarchive/lib7zarchive.pro
@@ -0,0 +1,7 @@
+include(../../qttest.pri)
+
+QT -= gui
+QT += testlib
+
+RESOURCES += data.qrc
+SOURCES = tst_lib7zarchive.cpp
diff --git a/tests/auto/installer/lib7zarchive/tst_lib7zarchive.cpp b/tests/auto/installer/lib7zarchive/tst_lib7zarchive.cpp
new file mode 100644
index 000000000..1c9c48861
--- /dev/null
+++ b/tests/auto/installer/lib7zarchive/tst_lib7zarchive.cpp
@@ -0,0 +1,150 @@
+/**************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Installer Framework.
+**
+** $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$
+**
+**************************************************************************/
+
+#include <lib7z_facade.h>
+#include <lib7zarchive.h>
+#include <fileutils.h>
+
+#include <QDir>
+#include <QObject>
+#include <QTemporaryFile>
+#include <QTest>
+
+using namespace QInstaller;
+
+class tst_lib7zarchive : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase()
+ {
+ Lib7z::initSevenZ();
+
+ m_file.path = "valid";
+ m_file.permissions_enum = 0;
+ m_file.compressedSize = 836;
+ m_file.uncompressedSize = 5242880;
+ m_file.isDirectory = false;
+ m_file.archiveIndex = QPoint(0, 0);
+ m_file.utcTime = QDateTime(QDate::fromJulianDay(2456413), QTime(10, 50, 42), Qt::UTC);
+ }
+
+ void testIsSupportedArchive()
+ {
+ Lib7zArchive archive(":///data/valid.7z");
+ QVERIFY(archive.open(QIODevice::ReadOnly));
+ QCOMPARE(archive.isSupported(), true);
+ archive.close();
+
+ archive.setFilename(":///data/invalid.7z");
+ QVERIFY(archive.open(QIODevice::ReadOnly));
+ QCOMPARE(archive.isSupported(), false);
+ }
+
+ void testListArchive()
+ {
+
+ Lib7zArchive archive(":///data/valid.7z");
+ QVERIFY(archive.open(QIODevice::ReadOnly));
+
+ QVector<ArchiveEntry> files = archive.list();
+ QCOMPARE(files.count(), 1);
+ QCOMPARE(files.first(), m_file);
+ archive.close();
+
+ archive.setFilename(":///data/invalid.7z");
+ QVERIFY(archive.open(QIODevice::ReadOnly));
+ files = archive.list();
+
+ QVERIFY(files.isEmpty());
+ QCOMPARE(archive.errorString(), QString("Cannot open archive \":///data/invalid.7z\"."));
+ }
+
+ void testCreateArchive()
+ {
+ QString path1 = tempSourceFile("Source File 1.");
+ QString path2 = tempSourceFile("Source File 2.");
+
+ QString filename = generateTemporaryFileName();
+ Lib7zArchive target(filename);
+ QVERIFY(target.open(QIODevice::ReadWrite));
+ QVERIFY(target.create(QStringList() << path1 << path2));
+ QCOMPARE(target.list().count(), 2);
+ target.close();
+ QVERIFY(QFile::remove(filename));
+
+
+ path1 = tempSourceFile(
+ "Source File 1.",
+ QDir::tempPath() + "/temp file with spaces.XXXXXX"
+ );
+ path2 = tempSourceFile(
+ "Source File 2.",
+ QDir::tempPath() + "/temp file with spaces.XXXXXX"
+ );
+
+ filename = QDir::tempPath() + "/target file with spaces.XXXXXX";
+ target.setFilename(filename);
+ QVERIFY(target.open(QIODevice::ReadWrite));
+ QVERIFY(target.create(QStringList() << path1 << path2));
+ QCOMPARE(target.list().count(), 2);
+ target.close();
+ QVERIFY(QFile::remove(filename));
+ }
+
+ void testExtractArchive()
+ {
+ Lib7zArchive source(":///data/valid.7z");
+ QVERIFY(source.open(QIODevice::ReadOnly));
+
+ QVERIFY(source.extract(QDir::tempPath()));
+ QCOMPARE(QFile::exists(QDir::tempPath() + QString("/valid")), true);
+ QVERIFY(QFile::remove(QDir::tempPath() + QString("/valid")));
+ }
+
+private:
+ QString tempSourceFile(const QByteArray &data, const QString &templateName = QString())
+ {
+ QTemporaryFile source;
+ if (!templateName.isEmpty()) {
+ source.setFileTemplate(templateName);
+ }
+ source.open();
+ source.write(data);
+ source.setAutoRemove(false);
+ return source.fileName();
+ }
+
+private:
+ ArchiveEntry m_file;
+};
+
+QTEST_MAIN(tst_lib7zarchive)
+
+#include "tst_lib7zarchive.moc"