summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/ifwtools/repositorygen.cpp1
-rw-r--r--tests/auto/tools/repotest/packages_new/C/data/C.txt2
-rw-r--r--tests/auto/tools/repotest/packages_new/C/meta/package.xml8
-rw-r--r--tests/auto/tools/repotest/settings.qrc2
-rw-r--r--tests/auto/tools/repotest/tst_repotest.cpp92
5 files changed, 75 insertions, 30 deletions
diff --git a/src/libs/ifwtools/repositorygen.cpp b/src/libs/ifwtools/repositorygen.cpp
index fbcf7b9f3..cf99580fa 100644
--- a/src/libs/ifwtools/repositorygen.cpp
+++ b/src/libs/ifwtools/repositorygen.cpp
@@ -764,6 +764,7 @@ QStringList QInstallerTools::unifyMetadata(const QString &repoDir, const QString
dir.cd(existingRepoEntry);
const QString absPath = dir.absolutePath();
absPaths.append(absPath);
+ dir.cdUp();
}
}
}
diff --git a/tests/auto/tools/repotest/packages_new/C/data/C.txt b/tests/auto/tools/repotest/packages_new/C/data/C.txt
new file mode 100644
index 000000000..b45c73606
--- /dev/null
+++ b/tests/auto/tools/repotest/packages_new/C/data/C.txt
@@ -0,0 +1,2 @@
+Example content for package C.
+
diff --git a/tests/auto/tools/repotest/packages_new/C/meta/package.xml b/tests/auto/tools/repotest/packages_new/C/meta/package.xml
new file mode 100644
index 000000000..676f088be
--- /dev/null
+++ b/tests/auto/tools/repotest/packages_new/C/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Package>
+ <DisplayName>C</DisplayName>
+ <Description>Example component C</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2020-01-01</ReleaseDate>
+ <Default>true</Default>
+</Package>
diff --git a/tests/auto/tools/repotest/settings.qrc b/tests/auto/tools/repotest/settings.qrc
index e731af222..f1156e8c2 100644
--- a/tests/auto/tools/repotest/settings.qrc
+++ b/tests/auto/tools/repotest/settings.qrc
@@ -10,6 +10,8 @@
<file>packages_update/A/meta/script2.0.0.qs</file>
<file>packages_update/B/data/B_update.txt</file>
<file>packages_update/B/meta/package.xml</file>
+ <file>packages_new/C/data/C.txt</file>
+ <file>packages_new/C/meta/package.xml</file>
<file>repository_component/A/2.0.0content.7z</file>
<file>repository_component/A/2.0.0content.7z.sha1</file>
<file>repository_component/A/2.0.0meta.7z</file>
diff --git a/tests/auto/tools/repotest/tst_repotest.cpp b/tests/auto/tools/repotest/tst_repotest.cpp
index 5aa614454..0e59dc786 100644
--- a/tests/auto/tools/repotest/tst_repotest.cpp
+++ b/tests/auto/tools/repotest/tst_repotest.cpp
@@ -50,8 +50,12 @@ private:
(m_repositoryDirectories, &filteredPackages, filterType);
m_packages.append(precompressedPackages);
- QInstallerTools::PackageInfoVector preparedPackages = QInstallerTools::createListOfPackages(m_packagesDirectories,
- &filteredPackages, filterType);
+ QStringList packageDirectories;
+ if (!m_packagesDirectory.isEmpty())
+ packageDirectories << m_packagesDirectory;
+
+ QInstallerTools::PackageInfoVector preparedPackages = QInstallerTools::createListOfPackages(
+ packageDirectories, &filteredPackages, filterType);
m_packages.append(preparedPackages);
if (updateNewComponents)
@@ -72,12 +76,9 @@ private:
VerifyInstaller::verifyFileExistence(m_repositoryDir + "/B", QStringList() << "1.0.0content.7z"
<< "1.0.0content.7z.sha1");
}
- } else {
- QDir dir(m_repositoryDir + "/B");
- QVERIFY(!dir.exists());
}
QStringList directories;
- directories.append(m_packagesDirectories);
+ directories.append(packageDirectories);
directories.append(m_repositoryDirectories);
QStringList unite7zFiles;
@@ -120,7 +121,7 @@ private:
void clearData()
{
generateTempMetaDir();
- m_packagesDirectories.clear();
+ m_packagesDirectory.clear();
m_repositoryDirectories.clear();
m_packages.clear();
}
@@ -128,7 +129,7 @@ private:
void initRepoUpdate()
{
clearData();
- m_packagesDirectories << ":///packages_update";
+ m_packagesDirectory = ":///packages_update";
}
void initRepoUpdateFromRepository(const QString &repository)
@@ -193,14 +194,16 @@ private:
void ignoreMessagesForComponentHash(const QStringList &components, bool update)
{
+ QString packageDir = m_packagesDirectory;
+ packageDir.remove("//"); // e.g. :///packages -> :/packages
foreach (const QString component, components) {
QString message = "Copying component data for \"%1\"";
QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(component)));
if (update)
- message = "Compressing files found in data directory: (\":/packages_update/%1/data/%1_update.txt\")";
+ message = "Compressing files found in data directory: (\"%1/%2/data/%2_update.txt\")";
else
- message = "Compressing files found in data directory: (\":/packages/%1/data/%1.txt\")";
- QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(component)));
+ message = "Compressing files found in data directory: (\"%1/%2/data/%2.txt\")";
+ QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(packageDir, component)));
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("Hash is stored in *"));
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("Creating hash of archive *"));
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("Generated sha1 hash: *"));
@@ -232,19 +235,15 @@ private:
void ignoreMessagesForCopyMetadata(const QString &component, bool hasMeta, bool update)
{
- QString message;
- if (update)
- message = "Copy meta data for package \"%1\" using \":///packages_update/%1/meta/package.xml\"";
- else
- message = "Copy meta data for package \"%1\" using \":///packages/%1/meta/package.xml\"";
- QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(component)));
+ QString message = "Copy meta data for package \"%2\" using \"%1/%2/meta/package.xml\"";
+ QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(m_packagesDirectory, component)));
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("calculate size of directory *"));
if (hasMeta) {
if (update)
- message = "Copying associated \"script\" file \":///packages_update/%1/meta/script2.0.0.qs\"";
+ message = "Copying associated \"script\" file \"%1/%2/meta/script2.0.0.qs\"";
else
- message = "Copying associated \"script\" file \":///packages/%1/meta/script1.0.0.qs\"";
- QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(component)));
+ message = "Copying associated \"script\" file \"%1/%2/meta/script1.0.0.qs\"";
+ QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(m_packagesDirectory, component)));
QTest::ignoreMessage(QtDebugMsg, "done.");
}
}
@@ -269,16 +268,26 @@ private:
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("Updating the metadata node with name *"));
}
- void ignoreMessageForCollectingPackages(const QString &versionA, const QString &versionB)
+ void ignoreMessageForCollectingPackages(const QString &versionA = QString(),
+ const QString &versionB = QString(), const QString &versionC = QString())
{
QTest::ignoreMessage(QtDebugMsg, "Collecting information about available repository packages...");
QTest::ignoreMessage(QtDebugMsg, "Collecting information about available packages...");
- QTest::ignoreMessage(QtDebugMsg, "Found subdirectory \"A\"");
- QString message = "- it provides the package \"A\" - \"%1\"";
- QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(versionA)));
- QTest::ignoreMessage(QtDebugMsg, "Found subdirectory \"B\"");
- message = "- it provides the package \"B\" - \"%1\"";
- QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(versionB)));
+ if (!versionA.isEmpty()) {
+ QTest::ignoreMessage(QtDebugMsg, "Found subdirectory \"A\"");
+ const QString message = "- it provides the package \"A\" - \"%1\"";
+ QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(versionA)));
+ }
+ if (!versionB.isEmpty()) {
+ QTest::ignoreMessage(QtDebugMsg, "Found subdirectory \"B\"");
+ const QString message = "- it provides the package \"B\" - \"%1\"";
+ QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(versionB)));
+ }
+ if (!versionC.isEmpty()) {
+ QTest::ignoreMessage(QtDebugMsg, "Found subdirectory \"C\"");
+ const QString message = "- it provides the package \"C\" - \"%1\"";
+ QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(versionC)));
+ }
}
void ignoreMessageForCollectingPackagesFromRepository(const QString &versionA, const QString &versionB)
@@ -317,7 +326,7 @@ private slots:
m_tempDirDeleter.add(m_repositoryDir);
generateTempMetaDir();
- m_packagesDirectories << ":///packages";
+ m_packagesDirectory = ":///packages";
ignoreMessagesForComponentHash(QStringList() << "A" << "B", false);
ignoreMessagesForCopyMetadata("A", true, false); //Only A has metadata
@@ -390,6 +399,29 @@ private slots:
verifyComponentMetaUpdatesXml();
}
+ void testUpdateComponentsFromPartialPackageDir()
+ {
+ ignoreMessagesForComponentSha(QStringList() << "A" << "B", false);
+ ignoreMessagesForUniteMeta(false);
+ generateRepo(true, true, false);
+ verifyComponentRepository("1.0.0",true);
+
+ clearData();
+ m_packagesDirectory = ":///packages_new";
+ { // ignore messages
+ ignoreMessagesForUniteMeta(false);
+ ignoreMessageForCollectingPackages(QString(), QString(), "1.0.0");
+ ignoreMessagesForComponentSha(QStringList() << "C", true);
+ ignoreMessagesForCopyMetadata("C", false, false);
+ ignoreMessagesForComponentHash(QStringList() << "C", false);
+ }
+ generateRepo(true, true, false);
+ verifyComponentRepository("1.0.0", true);
+ VerifyInstaller::verifyFileExistence(m_repositoryDir + "/C",
+ QStringList() << "1.0.0content.7z" << "1.0.0content.7z.sha1" << "1.0.0meta.7z");
+ verifyUniteMetadata("1.0.0");
+ }
+
void testUpdateComponentsWithUniteMetadata()
{
ignoreMessagesForComponentSha(QStringList() << "A" << "B", false);
@@ -485,7 +517,7 @@ private slots:
void cleanup()
{
m_tempDirDeleter.releaseAndDeleteAll();
- m_packagesDirectories.clear();
+ m_packagesDirectory.clear();
m_packages.clear();
m_repositoryDirectories.clear();
}
@@ -493,7 +525,7 @@ private slots:
private:
QString m_tmpMetaDir;
QString m_repositoryDir;
- QStringList m_packagesDirectories;
+ QString m_packagesDirectory;
QStringList m_repositoryDirectories;
QInstallerTools::PackageInfoVector m_packages;
TempDirDeleter m_tempDirDeleter;