summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-10-18 17:28:49 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-10-22 11:13:00 +0300
commit4066fbebcabbdf591c2fc525343f8f78486457d2 (patch)
treef8772769de741b3b35f62a920a8cea24496556b5
parentf8bebde7599a12becffac6c6dbfa58f0d584bc01 (diff)
Print essential component information with std::cout
Do not use our own message handler for printing XML-formatted component information (from 'list', 'search', 'check-updates') that is expected to be included in output regardless of the current verbosity level or logging rules. Higher verbosity can still add more information to be included in output. Also: - Modify auto-tests to pass and check the output correctly. - Remove now orphaned 'ifw.package.info' logging category. - Rename 'LoggingHandler::printComponentInformation()' to 'printUpdateInformation()' to better match the intended purpose. Task-number: QTIFW-2349 Change-Id: Id1a868f8f824c606825cd6168974a7e3845383e6 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
-rw-r--r--src/libs/installer/globals.cpp7
-rw-r--r--src/libs/installer/globals.h1
-rw-r--r--src/libs/installer/loggingutils.cpp15
-rw-r--r--src/libs/installer/loggingutils.h2
-rw-r--r--src/sdk/commandlineinterface.cpp2
-rw-r--r--src/sdk/sdkapp.h9
-rw-r--r--tests/auto/installer/cliinterface/tst_cliinterface.cpp112
7 files changed, 70 insertions, 78 deletions
diff --git a/src/libs/installer/globals.cpp b/src/libs/installer/globals.cpp
index 0da4bc3b6..adf1d2f6e 100644
--- a/src/libs/installer/globals.cpp
+++ b/src/libs/installer/globals.cpp
@@ -33,7 +33,6 @@
const char IFW_SERVER[] = "ifw.server";
const char IFW_INSTALLER_INSTALLLOG[] = "ifw.installer.installlog";
const char IFW_DEVELOPER_BUILD[] = "ifw.developer.build";
-const char IFW_PACKAGE_INFO[] = "ifw.package.info";
// Internal-only, hidden in --help text
const char IFW_PROGRESS_INDICATOR[] = "ifw.progress.indicator";
@@ -61,16 +60,10 @@ namespace QInstaller
\internal
*/
-/*!
- \fn QInstaller::lcPackageInfo()
- \internal
-*/
-
Q_LOGGING_CATEGORY(lcServer, IFW_SERVER)
Q_LOGGING_CATEGORY(lcInstallerInstallLog, IFW_INSTALLER_INSTALLLOG)
Q_LOGGING_CATEGORY(lcProgressIndicator, IFW_PROGRESS_INDICATOR)
Q_LOGGING_CATEGORY(lcDeveloperBuild, IFW_DEVELOPER_BUILD)
-Q_LOGGING_CATEGORY(lcPackageInfo, IFW_PACKAGE_INFO)
/*!
Returns available logging categories.
diff --git a/src/libs/installer/globals.h b/src/libs/installer/globals.h
index 5053f6d9f..b22331e2c 100644
--- a/src/libs/installer/globals.h
+++ b/src/libs/installer/globals.h
@@ -40,7 +40,6 @@ INSTALLER_EXPORT Q_DECLARE_LOGGING_CATEGORY(lcInstallerInstallLog)
INSTALLER_EXPORT Q_DECLARE_LOGGING_CATEGORY(lcProgressIndicator)
INSTALLER_EXPORT Q_DECLARE_LOGGING_CATEGORY(lcDeveloperBuild)
-INSTALLER_EXPORT Q_DECLARE_LOGGING_CATEGORY(lcPackageInfo)
QStringList INSTALLER_EXPORT loggingCategories();
diff --git a/src/libs/installer/loggingutils.cpp b/src/libs/installer/loggingutils.cpp
index 45f7aab1b..a2b561c53 100644
--- a/src/libs/installer/loggingutils.cpp
+++ b/src/libs/installer/loggingutils.cpp
@@ -145,10 +145,7 @@ void LoggingHandler::messageHandler(QtMsgType type, const QMessageLogContext &co
static Uptime uptime;
- QString ba;
- if (context.category != lcPackageInfo().categoryName()) {
- ba = QLatin1Char('[') + QString::number(uptime.elapsed()) + QStringLiteral("] ");
- }
+ QString ba = QLatin1Char('[') + QString::number(uptime.elapsed()) + QStringLiteral("] ");
ba += trimAndPrepend(type, msg);
if (type != QtDebugMsg && context.file) {
@@ -251,9 +248,9 @@ bool LoggingHandler::outputRedirected() const
}
/*!
- Prints basic information about \a components.
+ Prints update information from \a components.
*/
-void LoggingHandler::printComponentInfo(const QList<Component *> components) const
+void LoggingHandler::printUpdateInformation(const QList<Component *> components) const
{
QDomDocument doc;
QDomElement root = doc.createElement(QLatin1String("updates"));
@@ -267,7 +264,7 @@ void LoggingHandler::printComponentInfo(const QList<Component *> components) con
update.setAttribute(QLatin1String("id"), component->value(scName));
root.appendChild(update);
}
- qCDebug(lcPackageInfo) << qPrintable(doc.toString(4));
+ std::cout << qPrintable(doc.toString(4));
}
/*!
@@ -297,7 +294,7 @@ void LoggingHandler::printLocalPackageInformation(const QList<KDUpdater::LocalPa
}
root.appendChild(update);
}
- qCDebug(lcPackageInfo) << qPrintable(doc.toString(4));
+ std::cout << qPrintable(doc.toString(4));
}
/*!
@@ -341,7 +338,7 @@ void LoggingHandler::printPackageInformation(const PackagesList &matchedPackages
}
root.appendChild(update);
}
- qCDebug(lcPackageInfo) << qPrintable(doc.toString(4));
+ std::cout << qPrintable(doc.toString(4));
}
/*!
diff --git a/src/libs/installer/loggingutils.h b/src/libs/installer/loggingutils.h
index a997a6d60..06f0400f8 100644
--- a/src/libs/installer/loggingutils.h
+++ b/src/libs/installer/loggingutils.h
@@ -57,7 +57,7 @@ public:
VerbosityLevel verboseLevel() const;
bool outputRedirected() const;
- void printComponentInfo(const QList<Component *> components) const;
+ void printUpdateInformation(const QList<Component *> components) const;
void printLocalPackageInformation(const QList<KDUpdater::LocalPackage> &packages) const;
void printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesHash &installedPackages) const;
diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp
index a63b2a5bf..6b674364c 100644
--- a/src/sdk/commandlineinterface.cpp
+++ b/src/sdk/commandlineinterface.cpp
@@ -108,7 +108,7 @@ int CommandLineInterface::checkUpdates()
qCWarning(QInstaller::lcInstallerInstallLog) << "There are currently no updates available.";
return EXIT_SUCCESS;
}
- QInstaller::LoggingHandler::instance().printComponentInfo(components);
+ QInstaller::LoggingHandler::instance().printUpdateInformation(components);
return EXIT_SUCCESS;
}
diff --git a/src/sdk/sdkapp.h b/src/sdk/sdkapp.h
index 60eca8103..0c09897d7 100644
--- a/src/sdk/sdkapp.h
+++ b/src/sdk/sdkapp.h
@@ -149,18 +149,15 @@ public:
loggingRules = QLatin1String("ifw.* = false\n"
"ifw.installer.* = true\n"
"ifw.server = true\n"
- "ifw.progress.indicator = true\n"
- "ifw.package.* = true\n");
+ "ifw.progress.indicator = true\n");
} else {
// enable all except detailed package information and developer specific logging
loggingRules = QLatin1String("ifw.* = true\n"
- "ifw.developer.build = false\n"
- "ifw.package.* = true\n");
+ "ifw.developer.build = false\n");
}
if (QInstaller::LoggingHandler::instance().verboseLevel() == QInstaller::LoggingHandler::Detailed) {
- loggingRules += QLatin1String("\nifw.developer.build = true\n"
- "ifw.package.* = true\n");
+ loggingRules += QLatin1String("\nifw.developer.build = true\n");
}
QLoggingCategory::setFilterRules(loggingRules);
qCDebug(QInstaller::lcInstallerInstallLog).noquote() << "Arguments:" <<
diff --git a/tests/auto/installer/cliinterface/tst_cliinterface.cpp b/tests/auto/installer/cliinterface/tst_cliinterface.cpp
index d880310ac..25910cd9c 100644
--- a/tests/auto/installer/cliinterface/tst_cliinterface.cpp
+++ b/tests/auto/installer/cliinterface/tst_cliinterface.cpp
@@ -34,6 +34,9 @@
#include <QLoggingCategory>
#include <QTest>
+#include <iostream>
+#include <sstream>
+
using namespace QInstaller;
class tst_CLIInterface : public QObject
@@ -43,8 +46,7 @@ class tst_CLIInterface : public QObject
private slots:
void testListAvailablePackages()
{
- QString loggingRules = (QLatin1String("ifw.* = false\n"
- "ifw.package.* = true\n"));
+ QString loggingRules = (QLatin1String("ifw.* = false\n"));
QTest::ignoreMessage(QtDebugMsg, "Operations sanity check succeeded.");
@@ -52,61 +54,52 @@ private slots:
(m_installDir, ":///data/repository");
QLoggingCategory::setFilterRules(loggingRules);
+ auto func = &PackageManagerCore::listAvailablePackages;
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
- " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
- " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
- " <package name=\"C\" displayname=\"C\" version=\"1.0.0-1\"/>\n"
- "</availablepackages>\n");
- core->listAvailablePackages(QLatin1String("."));
-
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
- " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
- "</availablepackages>\n");
- core->listAvailablePackages(QLatin1String("A"));
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
+ " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
+ " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
+ " <package name=\"C\" displayname=\"C\" version=\"1.0.0-1\"/>\n"
+ "</availablepackages>\n"), func, QLatin1String("."), QHash<QString, QString>());
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
+ " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
+ "</availablepackages>\n"), func, QLatin1String("A"), QHash<QString, QString>());
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
- " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
- "</availablepackages>\n");
- core->listAvailablePackages(QLatin1String("A.*"));
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
+ " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
+ "</availablepackages>\n"), func, QLatin1String("A.*"), QHash<QString, QString>());
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
+ "</availablepackages>\n"), func, QLatin1String("^B"), QHash<QString, QString>());
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
- "</availablepackages>\n");
- core->listAvailablePackages(QLatin1String("^B"));
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
+ "</availablepackages>\n"), func, QLatin1String("^B.*"), QHash<QString, QString>());
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
- "</availablepackages>\n");
- core->listAvailablePackages(QLatin1String("^B.*"));
-
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"C\" displayname=\"C\" version=\"1.0.0-1\"/>\n"
- "</availablepackages>\n");
- core->listAvailablePackages(QLatin1String("^C"));
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"C\" displayname=\"C\" version=\"1.0.0-1\"/>\n"
+ "</availablepackages>\n"), func, QLatin1String("^C"), QHash<QString, QString>());
// Test with filters
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
- " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
- "</availablepackages>\n");
QHash<QString, QString> searchHash {
{ "Version", "1.0.2" },
{ "DisplayName", "A" }
};
- core->listAvailablePackages(QString(), searchHash);
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"AB\" displayname=\"AB\" version=\"1.0.2-1\"/>\n"
+ " <package name=\"A\" displayname=\"A\" version=\"1.0.2-1\"/>\n"
+ "</availablepackages>\n"), func, QString(), searchHash);
- QTest::ignoreMessage(QtDebugMsg, "<availablepackages>\n"
- " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
- "</availablepackages>\n");
searchHash.clear();
searchHash.insert("Default", "false");
- core->listAvailablePackages(QString(), searchHash);
+ verifyListPackagesMessage(core, QLatin1String("<availablepackages>\n"
+ " <package name=\"B\" displayname=\"B\" version=\"1.0.0-1\"/>\n"
+ "</availablepackages>\n"), func, QString(), searchHash);
// Need to change rules here to catch messages
QLoggingCategory::setFilterRules("ifw.* = true\n");
@@ -190,11 +183,11 @@ private slots:
void testListInstalledPackages()
{
- QString loggingRules = (QLatin1String("ifw.* = false\n"
- "ifw.package.* = true\n"));
+ QString loggingRules = (QLatin1String("ifw.* = false\n"));
PackageManagerCore core;
core.setPackageManager();
QLoggingCategory::setFilterRules(loggingRules);
+ auto func = &PackageManagerCore::listInstalledPackages;
const QString testDirectory = QInstaller::generateTemporaryFileName();
QVERIFY(QDir().mkpath(testDirectory));
@@ -202,16 +195,14 @@ private slots:
core.setValue(scTargetDir, testDirectory);
- QTest::ignoreMessage(QtDebugMsg, "<localpackages>\n"
- " <package name=\"A\" displayname=\"A Title\" version=\"1.0.2-1\"/>\n"
- " <package name=\"B\" displayname=\"B Title\" version=\"1.0.0-1\"/>\n"
- "</localpackages>\n");
- core.listInstalledPackages();
+ verifyListPackagesMessage(&core, QLatin1String("<localpackages>\n"
+ " <package name=\"A\" displayname=\"A Title\" version=\"1.0.2-1\"/>\n"
+ " <package name=\"B\" displayname=\"B Title\" version=\"1.0.0-1\"/>\n"
+ "</localpackages>\n"), func, QString());
- QTest::ignoreMessage(QtDebugMsg, "<localpackages>\n"
- " <package name=\"A\" displayname=\"A Title\" version=\"1.0.2-1\"/>\n"
- "</localpackages>\n");
- core.listInstalledPackages(QLatin1String("A"));
+ verifyListPackagesMessage(&core, QLatin1String("<localpackages>\n"
+ " <package name=\"A\" displayname=\"A Title\" version=\"1.0.2-1\"/>\n"
+ "</localpackages>\n"), func, QLatin1String("A"));
QDir dir(testDirectory);
QVERIFY(dir.removeRecursively());
@@ -533,6 +524,21 @@ private slots:
}
private:
+ template <typename Func, typename... Args>
+ void verifyListPackagesMessage(PackageManagerCore *core, const QString &message,
+ Func func, Args... args)
+ {
+ std::ostringstream stream;
+ std::streambuf *buf = std::cout.rdbuf();
+ std::cout.rdbuf(stream.rdbuf());
+
+ (core->*func)(std::forward<Args>(args)...);
+
+ std::cout.rdbuf(buf);
+ QVERIFY(stream && stream.str() == message.toStdString());
+ }
+
+private:
QString m_installDir;
};