diff options
author | Bernd Weimer <bernd.weimer@pelagicore.com> | 2020-01-28 09:23:17 +0100 |
---|---|---|
committer | Bernd Weimer <bernd.weimer@pelagicore.com> | 2020-01-29 14:54:34 +0100 |
commit | a8ecf7df3873a21f5598f0e95abe6861805acc3a (patch) | |
tree | b4a09532bdec4d5f6bede46866c80f3a4ca8a5c1 | |
parent | 7cb1003e87edef973ee2a3f3267169b4daaa4ba6 (diff) |
Defer logging output until configuration is known
Logging output is deferred until the logging configuration is known
to make sure that the content and format is appropriate. This also
replaces special handling of deployment warnings. Added option to
force instant logging.
Task-number: AUTOSUITE-1423
Change-Id: Ieba5fb4ca675c7b7d025fc1847da8ca045c782d8
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
-rw-r--r-- | doc/configuration.qdoc | 6 | ||||
-rw-r--r-- | src/common-lib/crashhandler.cpp | 5 | ||||
-rw-r--r-- | src/common-lib/logging.cpp | 103 | ||||
-rw-r--r-- | src/common-lib/logging.h | 5 | ||||
-rw-r--r-- | src/main-lib/configuration.cpp | 47 | ||||
-rw-r--r-- | src/main-lib/configuration.h | 4 | ||||
-rw-r--r-- | src/main-lib/configuration_p.h | 3 | ||||
-rw-r--r-- | src/main-lib/main.cpp | 12 | ||||
-rw-r--r-- | src/main-lib/main.h | 4 | ||||
-rw-r--r-- | src/manager-lib/sudo.cpp | 11 | ||||
-rw-r--r-- | src/manager-lib/sudo.h | 2 | ||||
-rw-r--r-- | src/package-lib/packageutilities.cpp | 10 | ||||
-rw-r--r-- | src/package-lib/packageutilities.h | 3 | ||||
-rw-r--r-- | src/shared-main-lib/sharedmain.cpp | 1 | ||||
-rw-r--r-- | src/tools/appman/appman.cpp | 10 | ||||
-rw-r--r-- | tests/main/tst_main.cpp | 7 |
16 files changed, 160 insertions, 73 deletions
diff --git a/doc/configuration.qdoc b/doc/configuration.qdoc index 05666e21..583ad6ec 100644 --- a/doc/configuration.qdoc +++ b/doc/configuration.qdoc @@ -329,6 +329,12 @@ or across multiple config files, the final value is resolved based on these rule The argument is the path to \c info.yaml. Aliases (\c{info-*.yaml}) are also loaded from the given path. \row + \li \b --log-instant + \li bool + \li Causes all logging messages to be printed right away at start-up. Usually, the + logging output is deferred until the logging configuration (e.g. logging rules) is + known. Expect different output and format at start-up. + \row \li \b --logging-rule \br [\c logging/rules] \li array<string> diff --git a/src/common-lib/crashhandler.cpp b/src/common-lib/crashhandler.cpp index fd196dff..e1528a9c 100644 --- a/src/common-lib/crashhandler.cpp +++ b/src/common-lib/crashhandler.cpp @@ -412,6 +412,11 @@ static void crashHandler(const char *why, int stackFramesToIgnore) } } + if (Logging::deferredMessages()) { + fprintf(stderr, "\n > Accumulated logging output\n"); + Logging::completeSetup(); + } + if (Logging::isDltEnabled()) { useAnsiColor = false; printCrashInfo(Dlt, why, stackFramesToIgnore); diff --git a/src/common-lib/logging.cpp b/src/common-lib/logging.cpp index 74d9a7c6..c59b0fc9 100644 --- a/src/common-lib/logging.cpp +++ b/src/common-lib/logging.cpp @@ -159,6 +159,20 @@ QDLT_LOGGING_CATEGORY(LogGeneral, "general", "GEN", "Messages without dedicated QDLT_FALLBACK_CATEGORY(LogGeneral) +struct DeferredMessage { + DeferredMessage(QtMsgType _msgType, const QMessageLogContext &_context, const QString &_message); + DeferredMessage(DeferredMessage &&other) Q_DECL_NOEXCEPT; + ~DeferredMessage(); + + QtMsgType msgType; + int line; + const char *file; + const char *function; + const char *category; + const QString message; +}; + + bool Logging::s_dltEnabled = #if defined(QT_GENIVIEXTRAS_LIB) true; @@ -172,6 +186,38 @@ QtMessageHandler Logging::s_defaultQtHandler = nullptr; QByteArray Logging::s_applicationId = QByteArray(); QVariant Logging::s_useAMConsoleLoggerConfig = QVariant(); +static std::vector<DeferredMessage> s_deferredMessages; + +DeferredMessage::DeferredMessage(QtMsgType _msgType, const QMessageLogContext &_context, const QString &_message) + : msgType(_msgType) + , line(_context.line) + , message(_message) +{ + file = qstrdup(_context.file); + function = qstrdup(_context.function); + category = qstrdup(_context.category); +} + +DeferredMessage::DeferredMessage(DeferredMessage &&other) Q_DECL_NOEXCEPT + : msgType(other.msgType) + , line(other.line) + , file(other.file) + , function(other.function) + , category(other.category) + , message(other.message) +{ + other.file = nullptr; + other.function = nullptr; + other.category = nullptr; +} + +DeferredMessage::~DeferredMessage() +{ + delete[] file; + delete[] function; + delete[] category; +} + static void colorLogToStderr(QtMsgType msgType, const QMessageLogContext &context, const QString &message) { @@ -338,6 +384,23 @@ static void colorLogToStderr(QtMsgType msgType, const QMessageLogContext &contex fputs(out.constData(), stderr); } +void Logging::messageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message) +{ +#if defined(QT_GENIVIEXTRAS_LIB) + if (s_dltEnabled) + QDltRegistration::messageHandler(msgType, context, message); +#endif + if (Q_UNLIKELY(!s_useAMConsoleLogger)) + s_defaultQtHandler(msgType, context, message); + else + colorLogToStderr(msgType, context, message); +} + +void Logging::deferredMessageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message) +{ + s_deferredMessages.emplace_back(msgType, context, message); +} + void Logging::initialize() { initialize(0, nullptr); @@ -345,28 +408,19 @@ void Logging::initialize() void Logging::initialize(int argc, const char * const *argv) { + bool instantLogging = false; if (argc > 0 && argv) { for (int i = 1; i < argc; ++i) { - if (strcmp("--no-dlt-logging", argv[i]) == 0) { + if (strcmp("--no-dlt-logging", argv[i]) == 0) Logging::setDltEnabled(false); - break; - } + else if (strcmp("--log-instant", argv[i]) == 0) + instantLogging = true; } } - auto messageHandler = [](QtMsgType msgType, const QMessageLogContext &context, const QString &message) { -#if defined(QT_GENIVIEXTRAS_LIB) - if (s_dltEnabled) - QDltRegistration::messageHandler(msgType, context, message); -#endif - if (Q_UNLIKELY(!s_useAMConsoleLogger)) - s_defaultQtHandler(msgType, context, message); - else - colorLogToStderr(msgType, context, message); - }; - s_messagePatternDefined = qEnvironmentVariableIsSet("QT_MESSAGE_PATTERN"); - s_defaultQtHandler = qInstallMessageHandler(messageHandler); + s_defaultQtHandler = instantLogging ? qInstallMessageHandler(messageHandler) + : qInstallMessageHandler(deferredMessageHandler); } QStringList Logging::filterRules() @@ -408,6 +462,20 @@ void Logging::useAMConsoleLogger(const QVariant &config) s_useAMConsoleLogger = !s_messagePatternDefined; } +void Logging::completeSetup() +{ + for (const DeferredMessage &msg : s_deferredMessages) { + QLoggingCategory cat(msg.category); + if (cat.isEnabled(msg.msgType)) { + QMessageLogContext context(msg.file, msg.line, msg.function, msg.category); + messageHandler(msg.msgType, context, msg.message); + } + } + + std::vector<DeferredMessage>().swap(s_deferredMessages); + qInstallMessageHandler(messageHandler); +} + QByteArray Logging::applicationId() { return s_applicationId; @@ -418,6 +486,11 @@ void Logging::setApplicationId(const QByteArray &appId) s_applicationId = appId; } +bool Logging::deferredMessages() +{ + return !s_deferredMessages.empty(); +} + bool Logging::isDltEnabled() { return s_dltEnabled; diff --git a/src/common-lib/logging.h b/src/common-lib/logging.h index 054d8cdb..643687fd 100644 --- a/src/common-lib/logging.h +++ b/src/common-lib/logging.h @@ -66,15 +66,20 @@ class Logging public: static void initialize(); static void initialize(int argc, const char * const *argv); + static void messageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message); + static void deferredMessageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message); static QStringList filterRules(); static void setFilterRules(const QStringList &rules); static void setMessagePattern(const QString &pattern); static QVariant useAMConsoleLogger(); static void useAMConsoleLogger(const QVariant &config); + static void completeSetup(); static QByteArray applicationId(); static void setApplicationId(const QByteArray &appId); + static bool deferredMessages(); + // DLT functionality static bool isDltEnabled(); static void setDltEnabled(bool enabled); diff --git a/src/main-lib/configuration.cpp b/src/main-lib/configuration.cpp index 371275cb..18353e4f 100644 --- a/src/main-lib/configuration.cpp +++ b/src/main-lib/configuration.cpp @@ -107,7 +107,7 @@ public: } void preProcessSourceContent(QByteArray &sourceContent, const QString &fileName) { - sourceContent = ConfigurationData::substituteVars(sourceContent, fileName, warnings); + sourceContent = ConfigurationData::substituteVars(sourceContent, fileName); } ConfigurationData *loadFromCache(QDataStream &ds) { @@ -178,6 +178,7 @@ Configuration::Configuration(const QStringList &defaultConfigFilePaths, m_clp.addOption({ qSL("build-config"), qSL("Dumps the build configuration and exits.") }); m_clp.addPositionalArgument(qSL("qml-file"), qSL("The main QML file.")); + m_clp.addOption({ qSL("log-instant"), qSL("Log instantly at start-up, neglect configuration") }); m_clp.addOption({ qSL("database"), qSL("Deprecated (ingored)."), qSL("file") }); m_clp.addOption({ qSL("builtin-apps-manifest-dir"), qSL("Base directory for built-in application manifests."), qSL("dir") }); m_clp.addOption({ qSL("installation-dir"), qSL("Base directory for package installations."), qSL("dir") }); @@ -272,12 +273,12 @@ void Configuration::showParserMessage(const QString &message, MessageType type) // ^^^^ copied from QCommandLineParser ... why is this not public API? -void Configuration::parse(QStringList *deploymentWarnings) +void Configuration::parse() { - parseWithArguments(QCoreApplication::arguments(), deploymentWarnings); + parseWithArguments(QCoreApplication::arguments()); } -void Configuration::parseWithArguments(const QStringList &arguments, QStringList *deploymentWarnings) +void Configuration::parseWithArguments(const QStringList &arguments) { if (!m_clp.parse(arguments)) { showParserMessage(m_clp.errorText() + qL1C('\n'), ErrorMessage); @@ -300,6 +301,7 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList exit(1); } } + #if defined(AM_TIME_CONFIG_PARSING) QElapsedTimer timer; timer.start(); @@ -319,7 +321,7 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList ConfigCache<ConfigurationData> cache(configFilePaths, qSL("config"), cacheOptions); try { - cache.parse(deploymentWarnings); + cache.parse(); m_data = cache.takeMergedResult(); } catch (const Exception &e) { showParserMessage(e.errorString() + qL1C('\n'), ErrorMessage); @@ -353,8 +355,10 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList if (installationDir().isEmpty()) { const auto ilocs = m_data->installationLocations; - if (!ilocs.isEmpty() && deploymentWarnings) - *deploymentWarnings << qL1S("Support for \"installationLocations\" in the main config file has been removed:"); + if (!ilocs.isEmpty()) { + qCWarning(LogDeployment) << "Support for \"installationLocations\" in the main config file " + "has been removed:"; + } for (const auto iloc : ilocs) { QVariantMap map = iloc.toMap(); @@ -362,22 +366,22 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList if (id == qSL("internal-0")) { m_installationDir = map.value(qSL("installationPath")).toString(); m_documentDir = map.value(qSL("documentPath")).toString(); - if (deploymentWarnings) - *deploymentWarnings << qL1S(" * still using installation location \"internal-0\" for backward compatibility"); - } else if (deploymentWarnings) { - *deploymentWarnings << qL1S(" * ignoring installation location ") + id; + qCWarning(LogDeployment) << " * still using installation location \"internal-0\" for backward " + "compatibility"; + } else { + qCWarning(LogDeployment) << " * ignoring installation location" << id; } } } - if (installationDir().isEmpty() && deploymentWarnings) { - *deploymentWarnings << qL1S("No --installation-dir command line parameter or" - " applications/installationDir configuration key specified. It won't be possible to install," - " remove or access installable packages."); + if (installationDir().isEmpty()) { + qCWarning(LogDeployment) << "No --installation-dir command line parameter or applications/installationDir " + "configuration key specified. It won't be possible to install, remove or " + "access installable packages."; } - if (value<bool>("start-session-dbus") && deploymentWarnings) - *deploymentWarnings << qL1S("Option \"--start-session-dbus\" has been deprecated and will be ignored."); + if (value<bool>("start-session-dbus")) + qCWarning(LogDeployment) << "Option \"--start-session-dbus\" has been deprecated and will be ignored."; } ConfigurationData *ConfigurationData::loadFromCache(QDataStream &ds) @@ -552,8 +556,7 @@ void ConfigurationData::mergeFrom(const ConfigurationData *from) MERGE_SCALAR(flags.forceSingleProcess); } -QByteArray ConfigurationData::substituteVars(const QByteArray &sourceContent, const QString &fileName, - QStringList *deploymentWarnings) +QByteArray ConfigurationData::substituteVars(const QByteArray &sourceContent, const QString &fileName) { QByteArray string = sourceContent; int posBeg = -1; @@ -581,9 +584,9 @@ QByteArray ConfigurationData::substituteVars(const QByteArray &sourceContent, co varValue = QStandardPaths::writableLocation(static_cast<QStandardPaths::StandardLocation>(loc)).toUtf8(); } - if (varValue.isNull() && deploymentWarnings) { - *deploymentWarnings << qL1S("Could not replace variable ${") + qL1S(varName) - + qL1S("} while parsing ") + fileName; + if (varValue.isNull()) { + qCWarning(LogDeployment).nospace() << "Could not replace variable ${" << varName << "} while parsing " + << fileName; continue; } string.replace(posBeg, varName.length() + 3, varValue); diff --git a/src/main-lib/configuration.h b/src/main-lib/configuration.h index 7c950a57..d73b2442 100644 --- a/src/main-lib/configuration.h +++ b/src/main-lib/configuration.h @@ -61,8 +61,8 @@ public: Configuration(const char *additionalDescription = nullptr, bool onlyOnePositionalArgument = true); virtual ~Configuration(); - void parse(QStringList *deploymentWarnings = nullptr); - virtual void parseWithArguments(const QStringList &arguments, QStringList *deploymentWarnings = nullptr); + void parse(); + virtual void parseWithArguments(const QStringList &arguments); QVariant buildConfig() const; QString mainQmlFile() const; diff --git a/src/main-lib/configuration_p.h b/src/main-lib/configuration_p.h index e97f9f2f..0b0f9c4f 100644 --- a/src/main-lib/configuration_p.h +++ b/src/main-lib/configuration_p.h @@ -60,8 +60,7 @@ QT_BEGIN_NAMESPACE_AM struct ConfigurationData { static ConfigurationData *loadFromSource(QIODevice *source, const QString &fileName); - static QByteArray substituteVars(const QByteArray &sourceContent, const QString &fileName, - QStringList *deploymentWarnings = nullptr); + static QByteArray substituteVars(const QByteArray &sourceContent, const QString &fileName); static ConfigurationData *loadFromCache(QDataStream &ds); void saveToCache(QDataStream &ds) const; void mergeFrom(const ConfigurationData *from); diff --git a/src/main-lib/main.cpp b/src/main-lib/main.cpp index ffd17dda..df24e516 100644 --- a/src/main-lib/main.cpp +++ b/src/main-lib/main.cpp @@ -205,6 +205,12 @@ Main::~Main() */ void Main::setup(const Configuration *cfg, const QStringList &deploymentWarnings) Q_DECL_NOEXCEPT_EXPR(false) { + Q_UNUSED(deploymentWarnings); + setup(cfg); +} + +void Main::setup(const Configuration *cfg) Q_DECL_NOEXCEPT_EXPR(false) +{ // basics that are needed in multiple setup functions below m_noSecurity = cfg->noSecurity(); m_developmentMode = cfg->developmentMode(); @@ -213,15 +219,11 @@ void Main::setup(const Configuration *cfg, const QStringList &deploymentWarnings m_documentDir = cfg->documentDir(); CrashHandler::setCrashActionConfiguration(cfg->managerCrashAction()); - setupLogging(cfg->verbose(), cfg->loggingRules(), cfg->messagePattern(), cfg->useAMConsoleLogger()); setupQmlDebugging(cfg->qmlDebugging()); if (!cfg->dltId().isEmpty() || !cfg->dltDescription().isEmpty()) Logging::setSystemUiDltId(cfg->dltId().toLocal8Bit(), cfg->dltDescription().toLocal8Bit()); Logging::registerUnregisteredDltContexts(); - - // dump accumulated warnings, now that logging rules are set - for (const QString &warning : deploymentWarnings) - qCWarning(LogDeployment).noquote() << warning; + setupLogging(cfg->verbose(), cfg->loggingRules(), cfg->messagePattern(), cfg->useAMConsoleLogger()); registerResources(cfg->resources()); diff --git a/src/main-lib/main.h b/src/main-lib/main.h index 9e3b5992..09168aee 100644 --- a/src/main-lib/main.h +++ b/src/main-lib/main.h @@ -96,7 +96,9 @@ public: bool isSingleProcessMode() const; - void setup(const Configuration *cfg, const QStringList &deploymentWarnings = QStringList()) Q_DECL_NOEXCEPT_EXPR(false); + Q_DECL_DEPRECATED void setup(const Configuration *cfg, const QStringList &deploymentWarnings) + Q_DECL_NOEXCEPT_EXPR(false); + void setup(const Configuration *cfg) Q_DECL_NOEXCEPT_EXPR(false); void loadQml(bool loadDummyData) Q_DECL_NOEXCEPT_EXPR(false); void showWindow(bool showFullscreen); diff --git a/src/manager-lib/sudo.cpp b/src/manager-lib/sudo.cpp index 729c4665..e9e4a50a 100644 --- a/src/manager-lib/sudo.cpp +++ b/src/manager-lib/sudo.cpp @@ -117,7 +117,7 @@ QT_END_NAMESPACE_AM QT_BEGIN_NAMESPACE_AM -void Sudo::forkServer(DropPrivileges dropPrivileges, QStringList *warnings) +void Sudo::forkServer(DropPrivileges dropPrivileges) { bool canSudo = false; @@ -126,17 +126,16 @@ void Sudo::forkServer(DropPrivileges dropPrivileges, QStringList *warnings) uid_t effectiveUid = geteuid(); canSudo = (realUid == 0) || (effectiveUid == 0); #else - Q_UNUSED(warnings) Q_UNUSED(dropPrivileges) #endif if (!canSudo) { SudoServer::createInstance(-1); SudoClient::createInstance(-1, SudoServer::instance()); - if (warnings) { - *warnings << qSL("For the installer to work correctly, the executable needs to be run either as root via sudo or SUID (preferred)"); - *warnings << qSL("(using fallback implementation - you might experience permission errors on installer operations)"); - } + qCWarning(LogDeployment) << "For the installer to work correctly, the executable needs to be run either as " + "root via sudo or SUID (preferred)"; + qCWarning(LogDeployment) << "(using fallback implementation - you might experience permission errors on " + "installer operations)"; return; } diff --git a/src/manager-lib/sudo.h b/src/manager-lib/sudo.h index 33215279..ddb99422 100644 --- a/src/manager-lib/sudo.h +++ b/src/manager-lib/sudo.h @@ -67,7 +67,7 @@ public: DropPrivilegesRegainable, // only use this for auto-tests }; - static void forkServer(DropPrivileges dropPrivileges, QStringList *warnings = nullptr) Q_DECL_NOEXCEPT_EXPR(false); + static void forkServer(DropPrivileges dropPrivileges) Q_DECL_NOEXCEPT_EXPR(false); }; class SudoInterface diff --git a/src/package-lib/packageutilities.cpp b/src/package-lib/packageutilities.cpp index f5e80180..be3db8b5 100644 --- a/src/package-lib/packageutilities.cpp +++ b/src/package-lib/packageutilities.cpp @@ -52,13 +52,14 @@ #include "packageutilities.h" #include "packageutilities_p.h" #include "global.h" +#include "logging.h" #include <clocale> QT_BEGIN_NAMESPACE_AM -bool PackageUtilities::ensureCorrectLocale(QStringList *warnings) +bool PackageUtilities::ensureCorrectLocale() { // We need to make sure we are running in a Unicode locale, since we are // running into problems when unpacking packages with libarchive that @@ -68,7 +69,6 @@ bool PackageUtilities::ensureCorrectLocale(QStringList *warnings) #if defined(Q_OS_WIN) // Windows is UTF16 - Q_UNUSED(warnings) return true; #else @@ -88,10 +88,8 @@ bool PackageUtilities::ensureCorrectLocale(QStringList *warnings) if (checkUtf()) return true; - if (warnings) { - *warnings << qL1S("The current locale is not UTF-8 capable. Trying to find a capable one " - "now, but this is time consuming and should be avoided"); - } + qCWarning(LogDeployment) << "The current locale is not UTF-8 capable. Trying to find a capable one now, " + "but this is time consuming and should be avoided"; // LC_ALL trumps all the rest, so if this is not specifying an UTF-8 locale, we need to unset it QByteArray lc_all = qgetenv("LC_ALL"); diff --git a/src/package-lib/packageutilities.h b/src/package-lib/packageutilities.h index 2b9c4a8b..97318d04 100644 --- a/src/package-lib/packageutilities.h +++ b/src/package-lib/packageutilities.h @@ -43,13 +43,12 @@ #pragma once #include <QtAppManCommon/global.h> -#include <QStringList> QT_BEGIN_NAMESPACE_AM namespace PackageUtilities { -bool ensureCorrectLocale(QStringList *warnings = nullptr); +bool ensureCorrectLocale(); bool checkCorrectLocale(); } diff --git a/src/shared-main-lib/sharedmain.cpp b/src/shared-main-lib/sharedmain.cpp index f34fcdea..7c41206a 100644 --- a/src/shared-main-lib/sharedmain.cpp +++ b/src/shared-main-lib/sharedmain.cpp @@ -181,6 +181,7 @@ void SharedMain::setupLogging(bool verbose, const QStringList &loggingRules, Logging::setFilterRules(rules); Logging::setMessagePattern(messagePattern); Logging::useAMConsoleLogger(useAMConsoleLogger); + Logging::completeSetup(); StartupTimer::instance()->checkpoint("after logging setup"); } diff --git a/src/tools/appman/appman.cpp b/src/tools/appman/appman.cpp index a907ee6d..679e89f6 100644 --- a/src/tools/appman/appman.cpp +++ b/src/tools/appman/appman.cpp @@ -81,11 +81,9 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) StartupTimer::instance()->checkpoint("after basic initialization"); try { - QStringList deploymentWarnings; - #if !defined(AM_DISABLE_INSTALLER) - PackageUtilities::ensureCorrectLocale(&deploymentWarnings); - Sudo::forkServer(Sudo::DropPrivilegesPermanently, &deploymentWarnings); + PackageUtilities::ensureCorrectLocale(); + Sudo::forkServer(Sudo::DropPrivilegesPermanently); StartupTimer::instance()->checkpoint("after sudo server fork"); #endif @@ -102,7 +100,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) #endif Configuration cfg(additionalDescription, onlyOnePositionalArgument); - cfg.parse(&deploymentWarnings); + cfg.parse(); StartupTimer::instance()->checkpoint("after command line parse"); #if defined(AM_TESTRUNNER) @@ -112,7 +110,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) cfg.setForceVerbose(qEnvironmentVariableIsSet("VERBOSE_TEST")); qInfo() << "Verbose mode is" << (cfg.verbose() ? "on" : "off") << "(changed by (un)setting $VERBOSE_TEST)"; #endif - a.setup(&cfg, deploymentWarnings); + a.setup(&cfg); #if defined(AM_TESTRUNNER) a.qmlEngine()->rootContext()->setContextProperty("buildConfig", cfg.buildConfig()); #endif diff --git a/tests/main/tst_main.cpp b/tests/main/tst_main.cpp index effad02e..c3220022 100644 --- a/tests/main/tst_main.cpp +++ b/tests/main/tst_main.cpp @@ -32,7 +32,6 @@ #include <QtTest> #include <QDir> #include <QString> -#include <QStringList> #include "packagemanager.h" #include "package.h" @@ -140,17 +139,15 @@ void tst_Main::initMain() { main = new Main(argc, argv); - QStringList deploymentWarnings; - QString amConfigPath = QFINDTESTDATA("am-config.yaml"); auto pathList = QStringList(amConfigPath); config = new DefaultConfiguration(pathList, QString()); - config->parse(&deploymentWarnings); + config->parse(); if (m_verbose) config->setForceVerbose(true); - main->setup(config, deploymentWarnings); + main->setup(config); PackageManager::instance()->setAllowInstallationOfUnsignedPackages(true); } |