aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2024-04-19 10:46:50 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2024-04-19 10:39:17 +0000
commit7cf2e4352c06f1e1fc90bd5d860470ec0310ff6b (patch)
treea106c24d4ce4e14f419eca182d331cd2b48f0547
parent6e6d25d11707dd835f3572f341617ea85fdcf47e (diff)
ExtensionSystem: Fix compile without WITH_TESTS
PluginSpecImpl::read is used outside of tests, but PluginSpecImpl itself is only exported when WITH_TESTS is on. So compilation without WITH_TESTS would fail. To circumvent this the ::read functions are moved outside of the PluginSpecImpl and friend'd to it. Amends b39b1925189416585933c017e189d04d6e4c478d Change-Id: I4bd8ce087267ab4e059cff2470ff882c7db6fd78 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/libs/extensionsystem/pluginmanager.cpp4
-rw-r--r--src/libs/extensionsystem/pluginspec.cpp4
-rw-r--r--src/libs/extensionsystem/pluginspec.h11
-rw-r--r--src/plugins/coreplugin/plugininstallwizard.cpp2
-rw-r--r--tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp8
5 files changed, 17 insertions, 12 deletions
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp
index b5a64e2054..60ef637e2f 100644
--- a/src/libs/extensionsystem/pluginmanager.cpp
+++ b/src/libs/extensionsystem/pluginmanager.cpp
@@ -1790,7 +1790,7 @@ void PluginManagerPrivate::readPluginPaths()
// from the file system
for (const QString &pluginFile : pluginFiles(pluginPaths)) {
- expected_str<PluginSpec *> spec = PluginSpecImpl::read(pluginFile);
+ expected_str<PluginSpec *> spec = readPluginSpec(pluginFile);
if (!spec) {
qCInfo(pluginLog).noquote()
<< QString("Ignoring plugin \"%1\" because: %2").arg(pluginFile).arg(spec.error());
@@ -1801,7 +1801,7 @@ void PluginManagerPrivate::readPluginPaths()
// static
for (const QStaticPlugin &plugin : QPluginLoader::staticPlugins()) {
- expected_str<PluginSpec *> spec = PluginSpecImpl::read(plugin);
+ expected_str<PluginSpec *> spec = readPluginSpec(plugin);
QTC_ASSERT_EXPECTED(spec, continue);
newSpecs.append(*spec);
}
diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp
index 2e80ef2c79..3165fb7911 100644
--- a/src/libs/extensionsystem/pluginspec.cpp
+++ b/src/libs/extensionsystem/pluginspec.cpp
@@ -692,7 +692,7 @@ namespace {
\internal
Returns false if the file does not represent a Qt Creator plugin.
*/
-expected_str<PluginSpec *> PluginSpecImpl::read(const QString &fileName)
+expected_str<PluginSpec *> readPluginSpec(const QString &fileName)
{
auto spec = new PluginSpecImpl;
@@ -715,7 +715,7 @@ expected_str<PluginSpec *> PluginSpecImpl::read(const QString &fileName)
return spec;
}
-expected_str<PluginSpec *> PluginSpecImpl::read(const QStaticPlugin &plugin)
+expected_str<PluginSpec *> readPluginSpec(const QStaticPlugin &plugin)
{
auto spec = new PluginSpecImpl;
diff --git a/src/libs/extensionsystem/pluginspec.h b/src/libs/extensionsystem/pluginspec.h
index 09b8f55618..58a5ea12a3 100644
--- a/src/libs/extensionsystem/pluginspec.h
+++ b/src/libs/extensionsystem/pluginspec.h
@@ -169,8 +169,16 @@ private:
std::unique_ptr<Internal::PluginSpecPrivate> d;
};
+EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readPluginSpec(const QString &filePath);
+EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readPluginSpec(const QStaticPlugin &plugin);
+
class EXTENSIONSYSTEM_TEST_EXPORT PluginSpecImpl : public PluginSpec
{
+ friend EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readPluginSpec(
+ const QString &filePath);
+ friend EXTENSIONSYSTEM_EXPORT Utils::expected_str<PluginSpec *> readPluginSpec(
+ const QStaticPlugin &plugin);
+
public:
~PluginSpecImpl() override;
@@ -184,9 +192,6 @@ public:
IPlugin::ShutdownFlag stop() override;
void kill() override;
- static Utils::expected_str<PluginSpec *> read(const QString &filePath);
- static Utils::expected_str<PluginSpec *> read(const QStaticPlugin &plugin);
-
Utils::expected_str<void> readMetaData(const QJsonObject &pluginMetaData) override;
protected:
diff --git a/src/plugins/coreplugin/plugininstallwizard.cpp b/src/plugins/coreplugin/plugininstallwizard.cpp
index df47cfb070..cb89748a1a 100644
--- a/src/plugins/coreplugin/plugininstallwizard.cpp
+++ b/src/plugins/coreplugin/plugininstallwizard.cpp
@@ -154,7 +154,7 @@ void checkContents(QPromise<ArchiveIssue> &promise, const FilePath &tempDir)
if (promise.isCanceled())
return;
it.next();
- expected_str<PluginSpec *> spec = PluginSpecImpl::read(it.filePath());
+ expected_str<PluginSpec *> spec = readPluginSpec(it.filePath());
if (spec) {
// Is a Qt Creator plugin. Let's see if we find a Core dependency and check the
// version
diff --git a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
index f919ef4139..b82b12401a 100644
--- a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
+++ b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
@@ -220,7 +220,7 @@ void tst_PluginSpec::experimental()
void tst_PluginSpec::locationAndPath()
{
- Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read(
+ Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test")));
QVERIFY(ps);
@@ -271,7 +271,7 @@ void tst_PluginSpec::resolveDependencies()
void tst_PluginSpec::loadLibrary()
{
- Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read(
+ Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test")));
@@ -291,7 +291,7 @@ void tst_PluginSpec::loadLibrary()
void tst_PluginSpec::initializePlugin()
{
- Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read(
+ Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test")));
QVERIFY(ps);
@@ -316,7 +316,7 @@ void tst_PluginSpec::initializePlugin()
void tst_PluginSpec::initializeExtensions()
{
- Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read(
+ Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test")));
QVERIFY(ps);