summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorPetar Perisin <petar.perisin@gmail.com>2021-07-27 14:26:28 +0200
committerPetar Perisin <petar.perisin@gmail.com>2021-08-10 11:17:27 +0000
commitfe4c04624310874c5818b9bd674b21fe8af77419 (patch)
tree66e24dd479bd4ce7c10d672a3308b1ce2188be87 /src/plugins
parenta9ae1a180bfdd543d0d4a97f04dd3246f857357b (diff)
downloadqt-creator-fe4c04624310874c5818b9bd674b21fe8af77419.tar.gz
AutoTest: Add ability to limit test description
Test description is made of entire test output, and if it is very big it can heavily limit test output pane usability. This commit adds option to limit description size. Change-Id: I5aae5e460f1939cd94a84ab1ca79f413d66d8bf2 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/autotest/testresultdelegate.cpp42
-rw-r--r--src/plugins/autotest/testresultdelegate.h1
-rw-r--r--src/plugins/autotest/testsettings.cpp30
-rw-r--r--src/plugins/autotest/testsettings.h2
-rw-r--r--src/plugins/autotest/testsettingspage.cpp7
-rw-r--r--src/plugins/autotest/testsettingspage.ui45
6 files changed, 106 insertions, 21 deletions
diff --git a/src/plugins/autotest/testresultdelegate.cpp b/src/plugins/autotest/testresultdelegate.cpp
index f0e7ec111c..5ff0f8217f 100644
--- a/src/plugins/autotest/testresultdelegate.cpp
+++ b/src/plugins/autotest/testresultdelegate.cpp
@@ -102,11 +102,8 @@ void TestResultDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op
QString output = testResult->outputString(selected);
if (selected) {
+ limitTextOutput(output);
output.replace('\n', QChar::LineSeparator);
-
- if (AutotestPlugin::settings()->limitResultOutput && output.length() > outputLimit)
- output = output.left(outputLimit).append("...");
-
recalculateTextLayout(index, output, painter->font(), positions.textAreaWidth());
m_lastCalculatedLayout.draw(painter, QPoint(positions.textAreaLeft(), positions.top()));
@@ -154,11 +151,8 @@ QSize TestResultDelegate::sizeHint(const QStyleOptionViewItem &option, const QMo
const TestResult *testResult = resultFilterModel->testResult(index);
QTC_ASSERT(testResult, return QSize());
QString output = testResult->outputString(selected);
+ limitTextOutput(output);
output.replace('\n', QChar::LineSeparator);
-
- if (AutotestPlugin::settings()->limitResultOutput && output.length() > outputLimit)
- output = output.left(outputLimit).append("...");
-
recalculateTextLayout(index, output, opt.font, positions.textAreaWidth());
s.setHeight(m_lastCalculatedHeight + 3);
@@ -185,6 +179,38 @@ void TestResultDelegate::clearCache()
m_lastWidth = -1;
}
+void TestResultDelegate::limitTextOutput(QString &output) const
+{
+ int maxLineCount = Internal::AutotestPlugin::settings()->resultDescriptionMaxSize;
+ bool limited = false;
+
+ if (Internal::AutotestPlugin::settings()->limitResultDescription && maxLineCount > 0) {
+ int index = -1;
+ int lastChar = output.size() - 1;
+
+ for (int i = 0; i < maxLineCount; i++) {
+ index = output.indexOf('\n', index + 1);
+ if (index == -1 || index == lastChar) {
+ index = -1;
+ break;
+ }
+ }
+
+ if (index > 0) {
+ output = output.left(index);
+ limited = true;
+ }
+ }
+
+ if (AutotestPlugin::settings()->limitResultOutput && output.length() > outputLimit) {
+ output = output.left(outputLimit);
+ limited = true;
+ }
+
+ if (limited)
+ output.append("...");
+}
+
void TestResultDelegate::recalculateTextLayout(const QModelIndex &index, const QString &output,
const QFont &font, int width) const
{
diff --git a/src/plugins/autotest/testresultdelegate.h b/src/plugins/autotest/testresultdelegate.h
index ce54ddf567..8fcf438cf0 100644
--- a/src/plugins/autotest/testresultdelegate.h
+++ b/src/plugins/autotest/testresultdelegate.h
@@ -45,6 +45,7 @@ public:
void clearCache();
private:
+ void limitTextOutput(QString &output) const;
void recalculateTextLayout(const QModelIndex &index, const QString &output,
const QFont &font, int width) const;
diff --git a/src/plugins/autotest/testsettings.cpp b/src/plugins/autotest/testsettings.cpp
index 323ad9817b..a92653bf4b 100644
--- a/src/plugins/autotest/testsettings.cpp
+++ b/src/plugins/autotest/testsettings.cpp
@@ -35,18 +35,20 @@
namespace Autotest {
namespace Internal {
-static const char timeoutKey[] = "Timeout";
-static const char omitInternalKey[] = "OmitInternal";
-static const char omitRunConfigWarnKey[] = "OmitRCWarnings";
-static const char limitResultOutputKey[] = "LimitResultOutput";
-static const char autoScrollKey[] = "AutoScrollResults";
-static const char processArgsKey[] = "ProcessArgs";
-static const char displayApplicationKey[] = "DisplayApp";
-static const char popupOnStartKey[] = "PopupOnStart";
-static const char popupOnFinishKey[] = "PopupOnFinish";
-static const char popupOnFailKey[] = "PopupOnFail";
-static const char runAfterBuildKey[] = "RunAfterBuild";
-static const char groupSuffix[] = ".group";
+static const char timeoutKey[] = "Timeout";
+static const char omitInternalKey[] = "OmitInternal";
+static const char omitRunConfigWarnKey[] = "OmitRCWarnings";
+static const char limitResultOutputKey[] = "LimitResultOutput";
+static const char limitResultDescriptionKey[] = "LimitResultDescription";
+static const char resultDescriptionMaxSizeKey[] = "ResultDescriptionMaxSize";
+static const char autoScrollKey[] = "AutoScrollResults";
+static const char processArgsKey[] = "ProcessArgs";
+static const char displayApplicationKey[] = "DisplayApp";
+static const char popupOnStartKey[] = "PopupOnStart";
+static const char popupOnFinishKey[] = "PopupOnFinish";
+static const char popupOnFailKey[] = "PopupOnFail";
+static const char runAfterBuildKey[] = "RunAfterBuild";
+static const char groupSuffix[] = ".group";
constexpr int defaultTimeout = 60000;
@@ -62,6 +64,8 @@ void TestSettings::toSettings(QSettings *s) const
s->setValue(omitInternalKey, omitInternalMssg);
s->setValue(omitRunConfigWarnKey, omitRunConfigWarn);
s->setValue(limitResultOutputKey, limitResultOutput);
+ s->setValue(limitResultDescriptionKey, limitResultDescription);
+ s->setValue(resultDescriptionMaxSizeKey, resultDescriptionMaxSize);
s->setValue(autoScrollKey, autoScroll);
s->setValue(processArgsKey, processArgs);
s->setValue(displayApplicationKey, displayApplication);
@@ -88,6 +92,8 @@ void TestSettings::fromSettings(QSettings *s)
omitInternalMssg = s->value(omitInternalKey, true).toBool();
omitRunConfigWarn = s->value(omitRunConfigWarnKey, false).toBool();
limitResultOutput = s->value(limitResultOutputKey, true).toBool();
+ limitResultDescription = s->value(limitResultDescriptionKey, false).toBool();
+ resultDescriptionMaxSize = s->value(resultDescriptionMaxSizeKey, 10).toInt();
autoScroll = s->value(autoScrollKey, true).toBool();
processArgs = s->value(processArgsKey, false).toBool();
displayApplication = s->value(displayApplicationKey, false).toBool();
diff --git a/src/plugins/autotest/testsettings.h b/src/plugins/autotest/testsettings.h
index b925ac5efa..40e8cae4f7 100644
--- a/src/plugins/autotest/testsettings.h
+++ b/src/plugins/autotest/testsettings.h
@@ -55,6 +55,8 @@ struct TestSettings
bool omitInternalMssg = true;
bool omitRunConfigWarn = false;
bool limitResultOutput = true;
+ bool limitResultDescription = false;
+ int resultDescriptionMaxSize = 10;
bool autoScroll = true;
bool processArgs = false;
bool displayApplication = false;
diff --git a/src/plugins/autotest/testsettingspage.cpp b/src/plugins/autotest/testsettingspage.cpp
index 905119f456..5e1e0f6c6d 100644
--- a/src/plugins/autotest/testsettingspage.cpp
+++ b/src/plugins/autotest/testsettingspage.cpp
@@ -54,6 +54,8 @@ TestSettingsWidget::TestSettingsWidget(QWidget *parent)
this, [] { AutotestPlugin::clearChoiceCache(); });
connect(m_ui.openResultsOnFinishCB, &QCheckBox::toggled,
m_ui.openResultsOnFailCB, &QCheckBox::setEnabled);
+ connect(m_ui.limitResultDescriptionCb, &QCheckBox::toggled,
+ m_ui.limitResultDescriptionSpinBox, &QSpinBox::setEnabled);
}
void TestSettingsWidget::setSettings(const TestSettings &settings)
@@ -62,6 +64,9 @@ void TestSettingsWidget::setSettings(const TestSettings &settings)
m_ui.omitInternalMsgCB->setChecked(settings.omitInternalMssg);
m_ui.omitRunConfigWarnCB->setChecked(settings.omitRunConfigWarn);
m_ui.limitResultOutputCB->setChecked(settings.limitResultOutput);
+ m_ui.limitResultDescriptionCb->setChecked(settings.limitResultDescription);
+ m_ui.limitResultDescriptionSpinBox->setEnabled(settings.limitResultDescription);
+ m_ui.limitResultDescriptionSpinBox->setValue(settings.resultDescriptionMaxSize);
m_ui.autoScrollCB->setChecked(settings.autoScroll);
m_ui.processArgsCB->setChecked(settings.processArgs);
m_ui.displayAppCB->setChecked(settings.displayApplication);
@@ -79,6 +84,8 @@ TestSettings TestSettingsWidget::settings() const
result.omitInternalMssg = m_ui.omitInternalMsgCB->isChecked();
result.omitRunConfigWarn = m_ui.omitRunConfigWarnCB->isChecked();
result.limitResultOutput = m_ui.limitResultOutputCB->isChecked();
+ result.limitResultDescription = m_ui.limitResultDescriptionCb->isChecked();
+ result.resultDescriptionMaxSize = m_ui.limitResultDescriptionSpinBox->value();
result.autoScroll = m_ui.autoScrollCB->isChecked();
result.processArgs = m_ui.processArgsCB->isChecked();
result.displayApplication = m_ui.displayAppCB->isChecked();
diff --git a/src/plugins/autotest/testsettingspage.ui b/src/plugins/autotest/testsettingspage.ui
index 2bdbfca9bf..0ea7404370 100644
--- a/src/plugins/autotest/testsettingspage.ui
+++ b/src/plugins/autotest/testsettingspage.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>586</width>
- <height>429</height>
+ <height>469</height>
</rect>
</property>
<property name="windowTitle">
@@ -61,6 +61,49 @@
</widget>
</item>
<item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="limitResultDescriptionCb">
+ <property name="toolTip">
+ <string>Limit number of lines shown in test result tooltip and description.</string>
+ </property>
+ <property name="text">
+ <string>Limit result description:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="limitResultDescriptionSpinBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>1000000</number>
+ </property>
+ <property name="value">
+ <number>10</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
<widget class="QCheckBox" name="openResultsOnStartCB">
<property name="toolTip">
<string>Opens the test results pane automatically when tests are started.</string>