Autotest: use new settings page convenience for Settings

Change-Id: I2e51b176b0874dc63370a0ddbd07c04b976da747
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-01-10 10:33:27 +01:00
parent 7c0678d9a4
commit d86fba3ee1
6 changed files with 139 additions and 228 deletions

View File

@@ -27,43 +27,59 @@
#include "boosttestconstants.h"
#include "boosttestsettings.h"
#include "../testframeworkmanager.h"
#include "ui_boosttestsettingspage.h"
#include <coreplugin/icore.h>
namespace Autotest {
namespace Internal {
BoostTestSettingsWidget::BoostTestSettingsWidget(QWidget *parent) :
QWidget(parent)
class BoostTestSettingsWidget : public Core::IOptionsPageWidget
{
QT_DECLARE_DEPRECATED_TR_FUNCTIONS(Autotest::Internal::BoostTestSettingsWidget)
public:
explicit BoostTestSettingsWidget(QSharedPointer<BoostTestSettings> settings);
void apply() final;
void finish() final {}
void setSettings(const BoostTestSettings &settings);
BoostTestSettings settings() const;
private:
void fillComboBoxes();
Ui::BoostSettingsPage m_ui;
QSharedPointer<BoostTestSettings> m_settings;
};
BoostTestSettingsWidget::BoostTestSettingsWidget(QSharedPointer<BoostTestSettings> settings)
: m_settings(settings)
{
m_ui.setupUi(this);
fillComboBoxes();
connect(m_ui.randomizeCB, &QCheckBox::toggled, m_ui.seedSB, &QSpinBox::setEnabled);
m_ui.logFormatCB->setCurrentIndex(int(m_settings->logLevel));
m_ui.reportLevelCB->setCurrentIndex(int(m_settings->reportLevel));
m_ui.randomizeCB->setChecked(m_settings->randomize);
m_ui.seedSB->setValue(m_settings->seed);
m_ui.systemErrorCB->setChecked(m_settings->systemErrors);
m_ui.fpExceptions->setChecked(m_settings->fpExceptions);
m_ui.memoryLeakCB->setChecked(m_settings->memLeaks);
}
void BoostTestSettingsWidget::setSettings(const BoostTestSettings &settings)
void BoostTestSettingsWidget::apply()
{
m_ui.logFormatCB->setCurrentIndex(int(settings.logLevel));
m_ui.reportLevelCB->setCurrentIndex(int(settings.reportLevel));
m_ui.randomizeCB->setChecked(settings.randomize);
m_ui.seedSB->setValue(settings.seed);
m_ui.systemErrorCB->setChecked(settings.systemErrors);
m_ui.fpExceptions->setChecked(settings.fpExceptions);
m_ui.memoryLeakCB->setChecked(settings.memLeaks);
}
m_settings->logLevel = LogLevel(m_ui.logFormatCB->currentData().toInt());
m_settings->reportLevel = ReportLevel(m_ui.reportLevelCB->currentData().toInt());
m_settings->randomize = m_ui.randomizeCB->isChecked();
m_settings->seed = m_ui.seedSB->value();
m_settings->systemErrors = m_ui.systemErrorCB->isChecked();
m_settings->fpExceptions = m_ui.fpExceptions->isChecked();
m_settings->memLeaks = m_ui.memoryLeakCB->isChecked();
BoostTestSettings BoostTestSettingsWidget::settings() const
{
BoostTestSettings result;
result.logLevel = LogLevel(m_ui.logFormatCB->currentData().toInt());
result.reportLevel = ReportLevel(m_ui.reportLevelCB->currentData().toInt());
result.randomize = m_ui.randomizeCB->isChecked();
result.seed = m_ui.seedSB->value();
result.systemErrors = m_ui.systemErrorCB->isChecked();
result.fpExceptions = m_ui.fpExceptions->isChecked();
result.memLeaks = m_ui.memoryLeakCB->isChecked();
return result;
m_settings->toSettings(Core::ICore::settings());
}
void BoostTestSettingsWidget::fillComboBoxes()
@@ -88,29 +104,13 @@ void BoostTestSettingsWidget::fillComboBoxes()
BoostTestSettingsPage::BoostTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
const ITestFramework *framework)
: ITestSettingsPage(framework),
m_settings(qSharedPointerCast<BoostTestSettings>(settings))
: ITestSettingsPage(framework)
{
setDisplayName(QCoreApplication::translate("BoostTestFramework",
BoostTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
}
QWidget *BoostTestSettingsPage::widget()
{
if (!m_widget) {
m_widget = new BoostTestSettingsWidget;
m_widget->setSettings(*m_settings);
}
return m_widget;
}
void BoostTestSettingsPage::apply()
{
if (!m_widget) // page was not shown at all
return;
*m_settings = m_widget->settings();
m_settings->toSettings(Core::ICore::settings());
setWidgetCreator([settings] {
return new BoostTestSettingsWidget(qSharedPointerCast<BoostTestSettings>(settings));
});
}
} // Internal

View File

@@ -25,46 +25,19 @@
#pragma once
#include "ui_boosttestsettingspage.h"
#include "../itestsettingspage.h"
#include <QPointer>
namespace Autotest {
class IFrameworkSettings;
namespace Internal {
class BoostTestSettings;
class BoostTestSettingsWidget : public QWidget
class BoostTestSettingsPage final : public ITestSettingsPage
{
Q_OBJECT
public:
explicit BoostTestSettingsWidget(QWidget *parent = nullptr);
void setSettings(const BoostTestSettings &settings);
BoostTestSettings settings() const;
private:
void fillComboBoxes();
Ui::BoostSettingsPage m_ui;
};
class BoostTestSettingsPage : public ITestSettingsPage
{
Q_OBJECT
public:
BoostTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
const ITestFramework *framework);
QWidget *widget() override;
void apply() override;
private:
QSharedPointer<BoostTestSettings> m_settings;
QPointer<BoostTestSettingsWidget> m_widget;
};
} // Internal

View File

@@ -30,6 +30,7 @@
#include "../autotestconstants.h"
#include "../testframeworkmanager.h"
#include "ui_gtestsettingspage.h"
#include <coreplugin/icore.h>
namespace Autotest {
@@ -40,7 +41,24 @@ static bool validateFilter(Utils::FancyLineEdit *edit, QString * /*error*/)
return edit && GTestUtils::isValidGTestFilter(edit->text());
}
GTestSettingsWidget::GTestSettingsWidget()
class GTestSettingsWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(Autotest::Internal::GTestSettingsWidget)
public:
explicit GTestSettingsWidget(const QSharedPointer<GTestSettings> &settings);
private:
void apply() final;
void finish() final {}
Ui::GTestSettingsPage m_ui;
QString m_currentGTestFilter;
QSharedPointer<GTestSettings> m_settings;
};
GTestSettingsWidget::GTestSettingsWidget(const QSharedPointer<GTestSettings> &settings)
: m_settings(settings)
{
m_ui.setupUi(this);
m_ui.filterLineEdit->setValidationFunction(&validateFilter);
@@ -52,67 +70,38 @@ GTestSettingsWidget::GTestSettingsWidget()
});
connect(m_ui.repeatGTestsCB, &QCheckBox::toggled, m_ui.repetitionSpin, &QSpinBox::setEnabled);
connect(m_ui.shuffleGTestsCB, &QCheckBox::toggled, m_ui.seedSpin, &QSpinBox::setEnabled);
m_ui.runDisabledGTestsCB->setChecked(m_settings->runDisabled);
m_ui.repeatGTestsCB->setChecked(m_settings->repeat);
m_ui.shuffleGTestsCB->setChecked(m_settings->shuffle);
m_ui.repetitionSpin->setValue(m_settings->iterations);
m_ui.seedSpin->setValue(m_settings->seed);
m_ui.breakOnFailureCB->setChecked(m_settings->breakOnFailure);
m_ui.throwOnFailureCB->setChecked(m_settings->throwOnFailure);
m_ui.groupModeCombo->setCurrentIndex(m_settings->groupMode - 1); // there's None for internal use
m_ui.filterLineEdit->setText(m_settings->gtestFilter);
m_currentGTestFilter = m_settings->gtestFilter; // store it temporarily (if edit is invalid)
}
void GTestSettingsWidget::setSettings(const GTestSettings &settings)
void GTestSettingsWidget::apply()
{
m_ui.runDisabledGTestsCB->setChecked(settings.runDisabled);
m_ui.repeatGTestsCB->setChecked(settings.repeat);
m_ui.shuffleGTestsCB->setChecked(settings.shuffle);
m_ui.repetitionSpin->setValue(settings.iterations);
m_ui.seedSpin->setValue(settings.seed);
m_ui.breakOnFailureCB->setChecked(settings.breakOnFailure);
m_ui.throwOnFailureCB->setChecked(settings.throwOnFailure);
m_ui.groupModeCombo->setCurrentIndex(settings.groupMode - 1); // there's None for internal use
m_ui.filterLineEdit->setText(settings.gtestFilter);
m_currentGTestFilter = settings.gtestFilter; // store it temporarily (if edit is invalid)
}
GTestSettings GTestSettingsWidget::settings() const
{
GTestSettings result;
result.runDisabled = m_ui.runDisabledGTestsCB->isChecked();
result.repeat = m_ui.repeatGTestsCB->isChecked();
result.shuffle = m_ui.shuffleGTestsCB->isChecked();
result.iterations = m_ui.repetitionSpin->value();
result.seed = m_ui.seedSpin->value();
result.breakOnFailure = m_ui.breakOnFailureCB->isChecked();
result.throwOnFailure = m_ui.throwOnFailureCB->isChecked();
result.groupMode = static_cast<GTest::Constants::GroupMode>(
m_ui.groupModeCombo->currentIndex() + 1);
if (m_ui.filterLineEdit->isValid())
result.gtestFilter = m_ui.filterLineEdit->text();
else
result.gtestFilter = m_currentGTestFilter;
return result;
}
GTestSettingsPage::GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
const ITestFramework *framework)
: ITestSettingsPage(framework),
m_settings(qSharedPointerCast<GTestSettings>(settings))
{
setDisplayName(QCoreApplication::translate("GTestFramework",
GTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
}
QWidget *GTestSettingsPage::widget()
{
if (!m_widget) {
m_widget = new GTestSettingsWidget;
m_widget->setSettings(*m_settings);
}
return m_widget;
}
void GTestSettingsPage::apply()
{
if (!m_widget) // page was not shown at all
return;
GTest::Constants::GroupMode oldGroupMode = m_settings->groupMode;
const QString oldFilter = m_settings->gtestFilter;
*m_settings = m_widget->settings();
m_settings->runDisabled = m_ui.runDisabledGTestsCB->isChecked();
m_settings->repeat = m_ui.repeatGTestsCB->isChecked();
m_settings->shuffle = m_ui.shuffleGTestsCB->isChecked();
m_settings->iterations = m_ui.repetitionSpin->value();
m_settings->seed = m_ui.seedSpin->value();
m_settings->breakOnFailure = m_ui.breakOnFailureCB->isChecked();
m_settings->throwOnFailure = m_ui.throwOnFailureCB->isChecked();
m_settings->groupMode = static_cast<GTest::Constants::GroupMode>(
m_ui.groupModeCombo->currentIndex() + 1);
if (m_ui.filterLineEdit->isValid())
m_settings->gtestFilter = m_ui.filterLineEdit->text();
else
m_settings->gtestFilter = m_currentGTestFilter;
m_settings->toSettings(Core::ICore::settings());
if (m_settings->groupMode == oldGroupMode && oldFilter == m_settings->gtestFilter)
return;
@@ -121,5 +110,14 @@ void GTestSettingsPage::apply()
TestTreeModel::instance()->rebuild({id});
}
GTestSettingsPage::GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
const ITestFramework *framework)
: ITestSettingsPage(framework)
{
setDisplayName(QCoreApplication::translate("GTestFramework",
GTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
setWidgetCreator([settings] { return new GTestSettingsWidget(qSharedPointerCast<GTestSettings>(settings)); });
}
} // namespace Internal
} // namespace Autotest

View File

@@ -25,47 +25,18 @@
#pragma once
#include "ui_gtestsettingspage.h"
#include "../itestsettingspage.h"
#include <QPointer>
namespace Autotest {
class IFrameworkSettings;
namespace Internal {
class GTestSettings;
class GTestSettingsWidget : public QWidget
class GTestSettingsPage final : public ITestSettingsPage
{
Q_OBJECT
public:
GTestSettingsWidget();
void setSettings(const GTestSettings &settings);
GTestSettings settings() const;
private:
Ui::GTestSettingsPage m_ui;
QString m_currentGTestFilter;
};
class GTestSettingsPage : public ITestSettingsPage
{
Q_OBJECT
public:
GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings, const ITestFramework *framework);
QWidget *widget() override;
void apply() override;
private:
QSharedPointer<GTestSettings> m_settings;
QPointer<GTestSettingsWidget> m_widget;
};
} // namespace Internal

View File

@@ -27,6 +27,7 @@
#include "qttestconstants.h"
#include "qttestsettingspage.h"
#include "qttestsettings.h"
#include "ui_qttestsettingspage.h"
#include <coreplugin/icore.h>
@@ -35,20 +36,33 @@
namespace Autotest {
namespace Internal {
QtTestSettingsWidget::QtTestSettingsWidget()
class QtTestSettingsWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(Autotest::Internal::QtTestSettingsWidget)
public:
explicit QtTestSettingsWidget(QSharedPointer<QtTestSettings> settings);
void apply() final;
void finish() final {}
private:
Ui::QtTestSettingsPage m_ui;
QSharedPointer<QtTestSettings> m_settings;
};
QtTestSettingsWidget::QtTestSettingsWidget(QSharedPointer<QtTestSettings> settings)
: m_settings(settings)
{
m_ui.setupUi(this);
m_ui.callgrindRB->setEnabled(Utils::HostOsInfo::isAnyUnixHost()); // valgrind available on UNIX
m_ui.perfRB->setEnabled(Utils::HostOsInfo::isLinuxHost()); // according to docs perf Linux only
}
void QtTestSettingsWidget::setSettings(const QtTestSettings &settings)
{
m_ui.disableCrashhandlerCB->setChecked(settings.noCrashHandler);
m_ui.useXMLOutputCB->setChecked(settings.useXMLOutput);
m_ui.verboseBenchmarksCB->setChecked(settings.verboseBench);
m_ui.logSignalsAndSlotsCB->setChecked(settings.logSignalsSlots);
switch (settings.metrics) {
m_ui.disableCrashhandlerCB->setChecked(m_settings->noCrashHandler);
m_ui.useXMLOutputCB->setChecked(m_settings->useXMLOutput);
m_ui.verboseBenchmarksCB->setChecked(m_settings->verboseBench);
m_ui.logSignalsAndSlotsCB->setChecked(m_settings->logSignalsSlots);
switch (m_settings->metrics) {
case MetricsType::Walltime:
m_ui.walltimeRB->setChecked(true);
break;
@@ -67,52 +81,35 @@ void QtTestSettingsWidget::setSettings(const QtTestSettings &settings)
}
}
QtTestSettings QtTestSettingsWidget::settings() const
void QtTestSettingsWidget::apply()
{
QtTestSettings result;
result.noCrashHandler = m_ui.disableCrashhandlerCB->isChecked();
result.useXMLOutput = m_ui.useXMLOutputCB->isChecked();
result.verboseBench = m_ui.verboseBenchmarksCB->isChecked();
result.logSignalsSlots = m_ui.logSignalsAndSlotsCB->isChecked();
m_settings->noCrashHandler = m_ui.disableCrashhandlerCB->isChecked();
m_settings->useXMLOutput = m_ui.useXMLOutputCB->isChecked();
m_settings->verboseBench = m_ui.verboseBenchmarksCB->isChecked();
m_settings->logSignalsSlots = m_ui.logSignalsAndSlotsCB->isChecked();
if (m_ui.walltimeRB->isChecked())
result.metrics = MetricsType::Walltime;
m_settings->metrics = MetricsType::Walltime;
else if (m_ui.tickcounterRB->isChecked())
result.metrics = MetricsType::TickCounter;
m_settings->metrics = MetricsType::TickCounter;
else if (m_ui.eventCounterRB->isChecked())
result.metrics = MetricsType::EventCounter;
m_settings->metrics = MetricsType::EventCounter;
else if (m_ui.callgrindRB->isChecked())
result.metrics = MetricsType::CallGrind;
m_settings->metrics = MetricsType::CallGrind;
else if (m_ui.perfRB->isChecked())
result.metrics = MetricsType::Perf;
m_settings->metrics = MetricsType::Perf;
return result;
m_settings->toSettings(Core::ICore::settings());
}
QtTestSettingsPage::QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
const ITestFramework *framework)
: ITestSettingsPage(framework),
m_settings(qSharedPointerCast<QtTestSettings>(settings))
: ITestSettingsPage(framework)
{
setDisplayName(QCoreApplication::translate("QtTestFramework",
QtTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
}
QWidget *QtTestSettingsPage::widget()
{
if (!m_widget) {
m_widget = new QtTestSettingsWidget;
m_widget->setSettings(*m_settings);
}
return m_widget;
}
void QtTestSettingsPage::apply()
{
if (!m_widget) // page was not shown at all
return;
*m_settings = m_widget->settings();
m_settings->toSettings(Core::ICore::settings());
setWidgetCreator([settings] {
return new QtTestSettingsWidget(qSharedPointerCast<QtTestSettings>(settings));
});
}
} // namespace Internal

View File

@@ -25,46 +25,18 @@
#pragma once
#include "ui_qttestsettingspage.h"
#include "../itestsettingspage.h"
#include <QPointer>
namespace Autotest {
class IFrameworkSettings;
namespace Internal {
class QtTestSettings;
class QtTestSettingsWidget : public QWidget
class QtTestSettingsPage final : public ITestSettingsPage
{
Q_OBJECT
public:
QtTestSettingsWidget();
void setSettings(const QtTestSettings &settings);
QtTestSettings settings() const;
private:
Ui::QtTestSettingsPage m_ui;
};
class QtTestSettingsPage : public ITestSettingsPage
{
Q_OBJECT
public:
QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings, const ITestFramework *framework);
QWidget *widget() override;
void apply() override;
private:
QSharedPointer<QtTestSettings> m_settings;
QPointer<QtTestSettingsWidget> m_widget;
};
} // namespace Internal