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
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);
}

View File

@@ -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;

View File

@@ -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:

View File

@@ -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

View File

@@ -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);