diff --git a/src/app/main.cpp b/src/app/main.cpp index 57b4281c51f..b10eea891c5 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -698,8 +698,12 @@ int main(int argc, char **argv) } restarter.setArguments(options.preAppArguments + PluginManager::argumentsForRestart() + lastSessionArgument()); + // if settingspath is not provided we need to pass on the settings in use + const QString settingspath = options.preAppArguments.contains(QLatin1String(SETTINGS_OPTION)) + ? QString() : options.settingsPath; const PluginManager::ProcessData processData = { restarter.executable(), - options.preAppArguments + PluginManager::argumentsForRestart(), restarter.workingPath() }; + options.preAppArguments + PluginManager::argumentsForRestart(), restarter.workingPath(), + settingspath}; PluginManager::setCreatorProcessData(processData); const PluginSpecSet plugins = PluginManager::plugins(); diff --git a/src/libs/extensionsystem/pluginmanager.h b/src/libs/extensionsystem/pluginmanager.h index 17be0dbfbe5..bd93d3d78fd 100644 --- a/src/libs/extensionsystem/pluginmanager.h +++ b/src/libs/extensionsystem/pluginmanager.h @@ -137,6 +137,7 @@ public: QString m_executable; QStringList m_args; QString m_workingPath; + QString m_settingsPath; }; static void setCreatorProcessData(const ProcessData &data); diff --git a/src/plugins/autotest/autotestunittests.cpp b/src/plugins/autotest/autotestunittests.cpp index 6ae27bd70d6..e395e71379c 100644 --- a/src/plugins/autotest/autotestunittests.cpp +++ b/src/plugins/autotest/autotestunittests.cpp @@ -310,7 +310,10 @@ void AutoTestUnitTests::testCodeParserBoostTest_data() void AutoTestUnitTests::testStringTable() { const PluginManager::ProcessData data = PluginManager::creatorProcessData(); - QCOMPARE(QProcess::execute(data.m_executable, data.m_args + QStringList({ "-scenario", "TestStringTable" })), 0); + QStringList additionalArgs{ "-scenario", "TestStringTable" }; + if (!data.m_args.contains("-settingspath") && !data.m_settingsPath.isEmpty()) + additionalArgs << "-settingspath" << data.m_settingsPath; + QCOMPARE(QProcess::execute(data.m_executable, data.m_args + additionalArgs), 0); } } // namespace Internal