diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp index f18f30c14e5..cb318c96b6a 100644 --- a/src/plugins/autotest/autotestplugin.cpp +++ b/src/plugins/autotest/autotestplugin.cpp @@ -94,7 +94,6 @@ public: void onRunFileTriggered(); void onRunUnderCursorTriggered(TestRunMode mode); - TestSettings m_settings; TestSettingsPage m_testSettingPage; TestCodeParser m_testCodeParser; @@ -149,7 +148,7 @@ AutotestPluginPrivate::AutotestPluginPrivate() }); ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); - TestFrameworkManager::activateFrameworksAndToolsFromSettings(&m_settings); + TestFrameworkManager::activateFrameworksAndToolsFromSettings(); m_testTreeModel.synchronizeTestFrameworks(); m_testTreeModel.synchronizeTestTools(); diff --git a/src/plugins/autotest/boost/boosttestconfiguration.cpp b/src/plugins/autotest/boost/boosttestconfiguration.cpp index 768161a5c0c..088506199c8 100644 --- a/src/plugins/autotest/boost/boosttestconfiguration.cpp +++ b/src/plugins/autotest/boost/boosttestconfiguration.cpp @@ -88,17 +88,17 @@ QStringList BoostTestConfiguration::argumentsForTestRunner(QStringList *omitted) { auto boostSettings = static_cast(framework()->testSettings()); QStringList arguments; - arguments << "-l" << BoostTestSettings::logLevelToOption(LogLevel(boostSettings->logLevel.value())); - arguments << "-r" << BoostTestSettings::reportLevelToOption(ReportLevel(boostSettings->reportLevel.value())); + arguments << "-l" << BoostTestSettings::logLevelToOption(LogLevel(boostSettings->logLevel())); + arguments << "-r" << BoostTestSettings::reportLevelToOption(ReportLevel(boostSettings->reportLevel())); - if (boostSettings->randomize.value()) - arguments << QString("--random=").append(QString::number(boostSettings->seed.value())); + if (boostSettings->randomize()) + arguments << QString("--random=").append(QString::number(boostSettings->seed())); - if (boostSettings->systemErrors.value()) + if (boostSettings->systemErrors()) arguments << "-s"; - if (boostSettings->fpExceptions.value()) + if (boostSettings->fpExceptions()) arguments << "--detect_fp_exceptions"; - if (!boostSettings->memLeaks.value()) + if (!boostSettings->memLeaks()) arguments << "--detect_memory_leaks=0"; // TODO improve the test case gathering and arguments building to avoid too long command lines @@ -110,7 +110,7 @@ QStringList BoostTestConfiguration::argumentsForTestRunner(QStringList *omitted) arguments << "-t" << "\"" + test + "\""; } - if (TestSettings::instance()->processArgs()) { + if (testSettings().processArgs()) { arguments << filterInterfering(runnable().command.arguments().split( ' ', Qt::SkipEmptyParts), omitted); } diff --git a/src/plugins/autotest/catch/catchconfiguration.cpp b/src/plugins/autotest/catch/catchconfiguration.cpp index a5036398688..0cb9aef7c5c 100644 --- a/src/plugins/autotest/catch/catchconfiguration.cpp +++ b/src/plugins/autotest/catch/catchconfiguration.cpp @@ -79,7 +79,7 @@ QStringList CatchConfiguration::argumentsForTestRunner(QStringList *omitted) con arguments << "\"" + testCases().join("\", \"") + "\""; arguments << "--reporter" << "xml"; - if (TestSettings::instance()->processArgs()) { + if (testSettings().processArgs()) { arguments << filterInterfering(runnable().command.arguments().split( ' ', Qt::SkipEmptyParts), omitted); } diff --git a/src/plugins/autotest/ctest/ctesttreeitem.cpp b/src/plugins/autotest/ctest/ctesttreeitem.cpp index 9ffc06b028e..d95838a5a79 100644 --- a/src/plugins/autotest/ctest/ctesttreeitem.cpp +++ b/src/plugins/autotest/ctest/ctesttreeitem.cpp @@ -88,7 +88,7 @@ QList CTestTreeItem::testConfigurationsFor(const QStringLi return {}; const ProjectExplorer::BuildSystem *buildSystem = target->buildSystem(); - QStringList options{"--timeout", QString::number(TestSettings::instance()->timeout() / 1000)}; + QStringList options{"--timeout", QString::number(testSettings().timeout() / 1000)}; auto ctestSettings = static_cast(testBase()->testSettings()); options << ctestSettings->activeSettingsAsOptions(); CommandLine command = buildSystem->commandLineForTests(selected, options); diff --git a/src/plugins/autotest/gtest/gtestconfiguration.cpp b/src/plugins/autotest/gtest/gtestconfiguration.cpp index 8680da1fcaf..c2a6b4c0d08 100644 --- a/src/plugins/autotest/gtest/gtestconfiguration.cpp +++ b/src/plugins/autotest/gtest/gtestconfiguration.cpp @@ -54,7 +54,7 @@ QStringList filterInterfering(const QStringList &provided, QStringList *omitted) QStringList GTestConfiguration::argumentsForTestRunner(QStringList *omitted) const { QStringList arguments; - if (TestSettings::instance()->processArgs()) { + if (testSettings().processArgs()) { arguments << filterInterfering(runnable().command.arguments().split( ' ', Qt::SkipEmptyParts), omitted); } diff --git a/src/plugins/autotest/qtest/qttest_utils.cpp b/src/plugins/autotest/qtest/qttest_utils.cpp index 9bedaa64c37..e40f50448c3 100644 --- a/src/plugins/autotest/qtest/qttest_utils.cpp +++ b/src/plugins/autotest/qtest/qttest_utils.cpp @@ -137,7 +137,7 @@ Environment prepareBasicEnvironment(const Environment &env) result.set("QT_FORCE_STDERR_LOGGING", "1"); result.set("QT_LOGGING_TO_CONSOLE", "1"); } - const int timeout = TestSettings::instance()->timeout(); + const int timeout = testSettings().timeout(); if (timeout > 5 * 60 * 1000) // Qt5.5 introduced hard limit, Qt5.6.1 added env var to raise this result.set("QTEST_FUNCTION_TIMEOUT", QString::number(timeout)); return result; diff --git a/src/plugins/autotest/qtest/qttestconfiguration.cpp b/src/plugins/autotest/qtest/qttestconfiguration.cpp index 5dcf59a48e1..9648e69d547 100644 --- a/src/plugins/autotest/qtest/qttestconfiguration.cpp +++ b/src/plugins/autotest/qtest/qttestconfiguration.cpp @@ -39,7 +39,7 @@ TestOutputReader *QtTestConfiguration::createOutputReader(Process *app) const QStringList QtTestConfiguration::argumentsForTestRunner(QStringList *omitted) const { QStringList arguments; - if (TestSettings::instance()->processArgs()) { + if (testSettings().processArgs()) { arguments.append(QTestUtils::filterInterfering( runnable().command.arguments().split(' ', Qt::SkipEmptyParts), omitted, false)); diff --git a/src/plugins/autotest/quick/quicktestconfiguration.cpp b/src/plugins/autotest/quick/quicktestconfiguration.cpp index e37b208ac44..f757dfb0255 100644 --- a/src/plugins/autotest/quick/quicktestconfiguration.cpp +++ b/src/plugins/autotest/quick/quicktestconfiguration.cpp @@ -32,7 +32,7 @@ TestOutputReader *QuickTestConfiguration::createOutputReader(Process *app) const QStringList QuickTestConfiguration::argumentsForTestRunner(QStringList *omitted) const { QStringList arguments; - if (TestSettings::instance()->processArgs()) { + if (testSettings().processArgs()) { arguments.append(QTestUtils::filterInterfering (runnable().command.arguments().split(' ', Qt::SkipEmptyParts), omitted, true)); diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index ec4a3080cc3..2648d63cd03 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -361,7 +361,7 @@ void TestCodeParser::scanForTests(const QSet &filePaths, using namespace Tasking; - int limit = TestSettings::instance()->scanThreadLimit(); + int limit = testSettings().scanThreadLimit(); if (limit == 0) limit = std::max(QThread::idealThreadCount() / 4, 1); qCDebug(LOG) << "Using" << limit << "threads for scan."; diff --git a/src/plugins/autotest/testframeworkmanager.cpp b/src/plugins/autotest/testframeworkmanager.cpp index 9b426abf28e..26f455cf9b5 100644 --- a/src/plugins/autotest/testframeworkmanager.cpp +++ b/src/plugins/autotest/testframeworkmanager.cpp @@ -45,15 +45,15 @@ bool TestFrameworkManager::registerTestTool(ITestTool *testTool) return true; } -void TestFrameworkManager::activateFrameworksAndToolsFromSettings( - const Internal::TestSettings *settings) +void TestFrameworkManager::activateFrameworksAndToolsFromSettings() { + const Internal::TestSettings &settings = Internal::testSettings(); for (ITestFramework *framework : std::as_const(s_instance->m_registeredFrameworks)) { - framework->setActive(settings->frameworks.value(framework->id(), false)); - framework->setGrouping(settings->frameworksGrouping.value(framework->id(), false)); + framework->setActive(settings.frameworks.value(framework->id(), false)); + framework->setGrouping(settings.frameworksGrouping.value(framework->id(), false)); } for (ITestTool *testTool : std::as_const(s_instance->m_registeredTestTools)) - testTool->setActive(settings->tools.value(testTool->id(), false)); + testTool->setActive(settings.tools.value(testTool->id(), false)); } const TestFrameworks TestFrameworkManager::registeredFrameworks() @@ -95,7 +95,7 @@ ITestTool *TestFrameworkManager::testToolForBuildSystemId(Id buildSystemId) void TestFrameworkManager::synchronizeSettings() { - Internal::TestSettings::instance()->fromSettings(); + Internal::testSettings().fromSettings(); for (ITestFramework *framework : std::as_const(m_registeredFrameworks)) { if (ITestSettings *fSettings = framework->testSettings()) fSettings->readSettings(); diff --git a/src/plugins/autotest/testframeworkmanager.h b/src/plugins/autotest/testframeworkmanager.h index 62bb19d9474..e42001dc2d4 100644 --- a/src/plugins/autotest/testframeworkmanager.h +++ b/src/plugins/autotest/testframeworkmanager.h @@ -6,9 +6,6 @@ #include "itestframework.h" namespace Autotest { -namespace Internal { -class TestSettings; -} class TestFrameworkManager final { @@ -24,7 +21,7 @@ public: static ITestFramework *frameworkForId(Utils::Id frameworkId); static ITestTool *testToolForId(Utils::Id testToolId); static ITestTool *testToolForBuildSystemId(Utils::Id buildSystemId); - static void activateFrameworksAndToolsFromSettings(const Internal::TestSettings *settings); + static void activateFrameworksAndToolsFromSettings(); static const TestFrameworks registeredFrameworks(); static const TestTools registeredTestTools(); diff --git a/src/plugins/autotest/testresultdelegate.cpp b/src/plugins/autotest/testresultdelegate.cpp index c14b6c17032..14fe1f646f9 100644 --- a/src/plugins/autotest/testresultdelegate.cpp +++ b/src/plugins/autotest/testresultdelegate.cpp @@ -161,10 +161,10 @@ void TestResultDelegate::clearCache() void TestResultDelegate::limitTextOutput(QString &output) const { - int maxLineCount = Internal::TestSettings::instance()->resultDescriptionMaxSize(); + int maxLineCount = testSettings().resultDescriptionMaxSize(); bool limited = false; - if (Internal::TestSettings::instance()->limitResultDescription() && maxLineCount > 0) { + if (testSettings().limitResultDescription() && maxLineCount > 0) { int index = -1; int lastChar = output.size() - 1; @@ -182,7 +182,7 @@ void TestResultDelegate::limitTextOutput(QString &output) const } } - if (TestSettings::instance()->limitResultOutput() && output.length() > outputLimit) { + if (testSettings().limitResultOutput() && output.length() > outputLimit) { output = output.left(outputLimit); limited = true; } diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp index 05e3c979234..bca407b0375 100644 --- a/src/plugins/autotest/testresultmodel.cpp +++ b/src/plugins/autotest/testresultmodel.cpp @@ -284,7 +284,7 @@ void TestResultModel::addTestResult(const TestResult &testResult, bool autoExpan TestResultItem *newItem = new TestResultItem(testResult); TestResultItem *root = nullptr; - if (TestSettings::instance()->displayApplication()) { + if (testSettings().displayApplication()) { const QString application = testResult.id(); if (!application.isEmpty()) { root = rootItem()->findFirstLevelChild([&application](TestResultItem *child) { diff --git a/src/plugins/autotest/testresultspane.cpp b/src/plugins/autotest/testresultspane.cpp index 457b273a4a1..7fdbcd6dac3 100644 --- a/src/plugins/autotest/testresultspane.cpp +++ b/src/plugins/autotest/testresultspane.cpp @@ -291,7 +291,7 @@ void TestResultsPane::clearContents() setIconBadgeNumber(0); navigateStateChanged(); m_summaryWidget->setVisible(false); - m_autoScroll = TestSettings::instance()->autoScroll(); + m_autoScroll = testSettings().autoScroll(); connect(m_treeView->verticalScrollBar(), &QScrollBar::rangeChanged, this, &TestResultsPane::onScrollBarRangeChanged, Qt::UniqueConnection); m_textOutput->clear(); @@ -437,7 +437,7 @@ void TestResultsPane::onRunSelectedTriggered() void TestResultsPane::initializeFilterMenu() { - const bool omitIntern = TestSettings::instance()->omitInternalMsg(); + const bool omitIntern = testSettings().omitInternalMsg(); // FilterModel has all messages enabled by default if (omitIntern) m_filterModel->toggleTestResultType(ResultType::MessageInternal); @@ -553,8 +553,7 @@ void TestResultsPane::onTestRunFinished() m_model->removeCurrentTestMessage(); disconnect(m_treeView->verticalScrollBar(), &QScrollBar::rangeChanged, this, &TestResultsPane::onScrollBarRangeChanged); - if (TestSettings::instance()->popupOnFinish() - && (!TestSettings::instance()->popupOnFail() || hasFailedTests(m_model))) { + if (testSettings().popupOnFinish() && (!testSettings().popupOnFail() || hasFailedTests(m_model))) { popup(IOutputPane::NoModeSwitch); } createMarks(); diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp index d3b62afcbfb..f1a878a23cc 100644 --- a/src/plugins/autotest/testrunner.cpp +++ b/src/plugins/autotest/testrunner.cpp @@ -258,7 +258,7 @@ static RunConfiguration *getRunConfiguration(const QString &buildTargetKey) int TestRunner::precheckTestConfigurations() { - const bool omitWarnings = TestSettings::instance()->omitRunConfigWarn(); + const bool omitWarnings = testSettings().omitRunConfigWarn(); int testCaseCount = 0; for (ITestConfiguration *itc : std::as_const(m_selectedTests)) { if (itc->testBase()->type() == ITestBase::Tool) { @@ -402,7 +402,7 @@ void TestRunner::runTestsHelper() } process.setEnvironment(environment); - m_cancelTimer.setInterval(TestSettings::instance()->timeout()); + m_cancelTimer.setInterval(testSettings().timeout()); m_cancelTimer.start(); qCInfo(runnerLog) << "Command:" << process.commandLine().executable(); @@ -468,7 +468,7 @@ void TestRunner::runTestsHelper() cancelCurrent(UserCanceled); }); - if (TestSettings::instance()->popupOnStart()) + if (testSettings().popupOnStart()) AutotestPlugin::popupResultsPane(); m_taskTree->start(); @@ -590,7 +590,7 @@ void TestRunner::debugTests() connect(runControl, &RunControl::stopped, this, &TestRunner::onFinished); ProjectExplorerPlugin::startRunControl(runControl); - if (useOutputProcessor && TestSettings::instance()->popupOnStart()) + if (useOutputProcessor && testSettings().popupOnStart()) AutotestPlugin::popupResultsPane(); } @@ -671,10 +671,10 @@ static RunAfterBuildMode runAfterBuild() return RunAfterBuildMode::None; if (!project->namedSettings(Constants::SK_USE_GLOBAL).isValid()) - return TestSettings::instance()->runAfterBuildMode(); + return testSettings().runAfterBuildMode(); TestProjectSettings *projectSettings = AutotestPlugin::projectSettings(project); - return projectSettings->useGlobalSettings() ? TestSettings::instance()->runAfterBuildMode() + return projectSettings->useGlobalSettings() ? testSettings().runAfterBuildMode() : projectSettings->runAfterBuild(); } diff --git a/src/plugins/autotest/testsettings.cpp b/src/plugins/autotest/testsettings.cpp index f2e63c4ea89..e6e101343d5 100644 --- a/src/plugins/autotest/testsettings.cpp +++ b/src/plugins/autotest/testsettings.cpp @@ -15,17 +15,14 @@ static const char groupSuffix[] = ".group"; constexpr int defaultTimeout = 60000; -static TestSettings *s_instance; - -TestSettings *TestSettings::instance() +TestSettings &testSettings() { - return s_instance; + static TestSettings theSettings; + return theSettings; } TestSettings::TestSettings() { - s_instance = this; - setSettingsGroup(Constants::SETTINGSGROUP); scanThreadLimit.setSettingsKey("ScanThreadLimit"); diff --git a/src/plugins/autotest/testsettings.h b/src/plugins/autotest/testsettings.h index c89f85d06c9..d73f3d3454b 100644 --- a/src/plugins/autotest/testsettings.h +++ b/src/plugins/autotest/testsettings.h @@ -27,8 +27,6 @@ class TestSettings : public Utils::AspectContainer, public NonAspectSettings public: TestSettings(); - static TestSettings *instance(); - void toSettings() const; void fromSettings(); @@ -50,4 +48,6 @@ public: RunAfterBuildMode runAfterBuildMode() const; }; +TestSettings &testSettings(); + } // Autotest::Internal diff --git a/src/plugins/autotest/testsettingspage.cpp b/src/plugins/autotest/testsettingspage.cpp index 980662cdc39..985206238fd 100644 --- a/src/plugins/autotest/testsettingspage.cpp +++ b/src/plugins/autotest/testsettingspage.cpp @@ -80,7 +80,7 @@ TestSettingsWidget::TestSettingsWidget() onClicked([] { AutotestPlugin::clearChoiceCache(); }, this) }; - TestSettings &s = *TestSettings::instance(); + TestSettings &s = Internal::testSettings(); Group generalGroup { title(Tr::tr("General")), Column { @@ -123,7 +123,7 @@ TestSettingsWidget::TestSettingsWidget() populateFrameworksListWidget(s.frameworks, s.tools); setOnApply([this] { - TestSettings &s = *TestSettings::instance(); + TestSettings &s = Internal::testSettings(); NonAspectSettings tmp; testSettings(tmp);