diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index dd9cde1e334..d24e7429dbd 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -354,6 +354,15 @@ bool PluginManager::hasError() }); } +const QStringList PluginManager::allErrors() +{ + return Utils::transform(Utils::filtered(plugins(), [](const PluginSpec *spec) { + return spec->hasError() && spec->isEffectivelyEnabled(); + }), [](const PluginSpec *spec) { + return spec->name().append(": ").append(spec->errorString()); + }); +} + /*! Returns all plugins that require \a spec to be loaded. Recurses into dependencies. */ @@ -1120,8 +1129,9 @@ static TestPlan generateCustomTestPlan(IPlugin *plugin, void PluginManagerPrivate::startTests() { if (PluginManager::hasError()) { - qWarning("Errors occurred while loading plugins, skipping test run. " - "For details, start without \"-test\" option."); + qWarning("Errors occurred while loading plugins, skipping test run."); + for (const QString &pluginError : PluginManager::allErrors()) + qWarning("%s", qPrintable(pluginError)); QTimer::singleShot(1, QCoreApplication::instance(), &QCoreApplication::quit); return; } diff --git a/src/libs/extensionsystem/pluginmanager.h b/src/libs/extensionsystem/pluginmanager.h index c926d07f4af..d65571bfb7c 100644 --- a/src/libs/extensionsystem/pluginmanager.h +++ b/src/libs/extensionsystem/pluginmanager.h @@ -93,6 +93,7 @@ public: static const QVector plugins(); static QHash> pluginCollections(); static bool hasError(); + static const QStringList allErrors(); static QSet pluginsRequiringPlugin(PluginSpec *spec); static QSet pluginsRequiredByPlugin(PluginSpec *spec);