forked from qt-creator/qt-creator
Autotest: Adapt to changed settings access pattern again
Settings are created on first access now, even though this doesn't matter much here as this happens unconditionally in AutotestPluginPrivate ctor via m_frameworkManager.synchronizeSettings() Change-Id: I340927cf107d7e4b2268e842d23f1a89898e8a92 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -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();
|
||||
|
||||
|
@@ -88,17 +88,17 @@ QStringList BoostTestConfiguration::argumentsForTestRunner(QStringList *omitted)
|
||||
{
|
||||
auto boostSettings = static_cast<BoostTestSettings *>(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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -88,7 +88,7 @@ QList<ITestConfiguration *> 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<CTestSettings *>(testBase()->testSettings());
|
||||
options << ctestSettings->activeSettingsAsOptions();
|
||||
CommandLine command = buildSystem->commandLineForTests(selected, options);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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));
|
||||
|
@@ -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));
|
||||
|
@@ -361,7 +361,7 @@ void TestCodeParser::scanForTests(const QSet<FilePath> &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.";
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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) {
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
|
@@ -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");
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user