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 b39b192518

Change-Id: I4bd8ce087267ab4e059cff2470ff882c7db6fd78
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Marcus Tillmanns
2024-04-19 10:46:50 +02:00
parent 6e6d25d117
commit 7cf2e4352c
5 changed files with 17 additions and 12 deletions

View File

@@ -1790,7 +1790,7 @@ void PluginManagerPrivate::readPluginPaths()
// from the file system // from the file system
for (const QString &pluginFile : pluginFiles(pluginPaths)) { for (const QString &pluginFile : pluginFiles(pluginPaths)) {
expected_str<PluginSpec *> spec = PluginSpecImpl::read(pluginFile); expected_str<PluginSpec *> spec = readPluginSpec(pluginFile);
if (!spec) { if (!spec) {
qCInfo(pluginLog).noquote() qCInfo(pluginLog).noquote()
<< QString("Ignoring plugin \"%1\" because: %2").arg(pluginFile).arg(spec.error()); << QString("Ignoring plugin \"%1\" because: %2").arg(pluginFile).arg(spec.error());
@@ -1801,7 +1801,7 @@ void PluginManagerPrivate::readPluginPaths()
// static // static
for (const QStaticPlugin &plugin : QPluginLoader::staticPlugins()) { for (const QStaticPlugin &plugin : QPluginLoader::staticPlugins()) {
expected_str<PluginSpec *> spec = PluginSpecImpl::read(plugin); expected_str<PluginSpec *> spec = readPluginSpec(plugin);
QTC_ASSERT_EXPECTED(spec, continue); QTC_ASSERT_EXPECTED(spec, continue);
newSpecs.append(*spec); newSpecs.append(*spec);
} }

View File

@@ -692,7 +692,7 @@ namespace {
\internal \internal
Returns false if the file does not represent a Qt Creator plugin. 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; auto spec = new PluginSpecImpl;
@@ -715,7 +715,7 @@ expected_str<PluginSpec *> PluginSpecImpl::read(const QString &fileName)
return spec; return spec;
} }
expected_str<PluginSpec *> PluginSpecImpl::read(const QStaticPlugin &plugin) expected_str<PluginSpec *> readPluginSpec(const QStaticPlugin &plugin)
{ {
auto spec = new PluginSpecImpl; auto spec = new PluginSpecImpl;

View File

@@ -169,8 +169,16 @@ private:
std::unique_ptr<Internal::PluginSpecPrivate> d; 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 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: public:
~PluginSpecImpl() override; ~PluginSpecImpl() override;
@@ -184,9 +192,6 @@ public:
IPlugin::ShutdownFlag stop() override; IPlugin::ShutdownFlag stop() override;
void kill() 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; Utils::expected_str<void> readMetaData(const QJsonObject &pluginMetaData) override;
protected: protected:

View File

@@ -154,7 +154,7 @@ void checkContents(QPromise<ArchiveIssue> &promise, const FilePath &tempDir)
if (promise.isCanceled()) if (promise.isCanceled())
return; return;
it.next(); it.next();
expected_str<PluginSpec *> spec = PluginSpecImpl::read(it.filePath()); expected_str<PluginSpec *> spec = readPluginSpec(it.filePath());
if (spec) { if (spec) {
// Is a Qt Creator plugin. Let's see if we find a Core dependency and check the // Is a Qt Creator plugin. Let's see if we find a Core dependency and check the
// version // version

View File

@@ -220,7 +220,7 @@ void tst_PluginSpec::experimental()
void tst_PluginSpec::locationAndPath() void tst_PluginSpec::locationAndPath()
{ {
Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read( Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test"))); + libraryName(QLatin1String("test")));
QVERIFY(ps); QVERIFY(ps);
@@ -271,7 +271,7 @@ void tst_PluginSpec::resolveDependencies()
void tst_PluginSpec::loadLibrary() void tst_PluginSpec::loadLibrary()
{ {
Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read( Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test"))); + libraryName(QLatin1String("test")));
@@ -291,7 +291,7 @@ void tst_PluginSpec::loadLibrary()
void tst_PluginSpec::initializePlugin() void tst_PluginSpec::initializePlugin()
{ {
Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read( Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test"))); + libraryName(QLatin1String("test")));
QVERIFY(ps); QVERIFY(ps);
@@ -316,7 +316,7 @@ void tst_PluginSpec::initializePlugin()
void tst_PluginSpec::initializeExtensions() void tst_PluginSpec::initializeExtensions()
{ {
Utils::expected_str<PluginSpec *> ps = PluginSpecImpl::read( Utils::expected_str<PluginSpec *> ps = readPluginSpec(
QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/")
+ libraryName(QLatin1String("test"))); + libraryName(QLatin1String("test")));
QVERIFY(ps); QVERIFY(ps);