aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2023-01-13 07:35:56 +0100
committerChristian Stenger <christian.stenger@qt.io>2023-01-13 09:58:57 +0000
commit274bb27cf3b8a5d888bafa069925e230bf5ae90c (patch)
tree1a3a1159aaa614ae553c960088e0020b48db877d
parent1b6d434c9c045d09d3760f7db2025e29d37dc25c (diff)
AutoTest: Redo handling of data tags with spaces
This basically reverts commit 7684571e108f5d as it broke running the test inside the debugger. Change-Id: Iacd46e2b9fb5af813fbf17156fd847375d750480 Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r--src/plugins/autotest/qtest/qttestconfiguration.cpp13
-rw-r--r--src/plugins/autotest/qtest/qttesttreeitem.cpp14
2 files changed, 16 insertions, 11 deletions
diff --git a/src/plugins/autotest/qtest/qttestconfiguration.cpp b/src/plugins/autotest/qtest/qttestconfiguration.cpp
index 529821644c..6a316b0657 100644
--- a/src/plugins/autotest/qtest/qttestconfiguration.cpp
+++ b/src/plugins/autotest/qtest/qttestconfiguration.cpp
@@ -10,11 +10,22 @@
#include "../itestframework.h"
#include "../testsettings.h"
+#include <utils/algorithm.h>
#include <utils/stringutils.h>
namespace Autotest {
namespace Internal {
+static QStringList quoteIfNeeded(const QStringList &testCases, bool debugMode)
+{
+ if (debugMode)
+ return testCases;
+
+ return Utils::transform(testCases, [](const QString &testCase){
+ return testCase.contains(' ') ? '"' + testCase + '"' : testCase;
+ });
+}
+
TestOutputReader *QtTestConfiguration::outputReader(const QFutureInterface<TestResultPtr> &fi,
Utils::QtcProcess *app) const
{
@@ -39,7 +50,7 @@ QStringList QtTestConfiguration::argumentsForTestRunner(QStringList *omitted) co
if (qtSettings->useXMLOutput.value())
arguments << "-xml";
if (!testCases().isEmpty())
- arguments << testCases();
+ arguments << quoteIfNeeded(testCases(), isDebugRunMode());
const QString &metricsOption = QtTestSettings::metricsTypeToOption(MetricsType(qtSettings->metrics.value()));
if (!metricsOption.isEmpty())
diff --git a/src/plugins/autotest/qtest/qttesttreeitem.cpp b/src/plugins/autotest/qtest/qttesttreeitem.cpp
index dcada43181..222680d4cf 100644
--- a/src/plugins/autotest/qtest/qttesttreeitem.cpp
+++ b/src/plugins/autotest/qtest/qttesttreeitem.cpp
@@ -15,13 +15,6 @@
namespace Autotest {
namespace Internal {
-static QString functionWithDataTagAsArg(const QString &func, const QString &dataTag)
-{
- if (dataTag.contains(' '))
- return '"' + func + ':' + dataTag + '"';
- return func + ':' + dataTag;
-}
-
QtTestTreeItem::QtTestTreeItem(ITestFramework *testFramework, const QString &name,
const Utils::FilePath &filePath, TestTreeItem::Type type)
: TestTreeItem(testFramework, name, filePath, type)
@@ -147,8 +140,9 @@ ITestConfiguration *QtTestTreeItem::testConfiguration() const
const TestTreeItem *parent = function ? function->parentItem() : nullptr;
if (!parent)
return nullptr;
+ const QString functionWithTag = function->name() + ':' + name();
config = new QtTestConfiguration(framework());
- config->setTestCases(QStringList(functionWithDataTagAsArg(function->name(), name())));
+ config->setTestCases(QStringList(functionWithTag));
config->setProjectFile(parent->proFile());
config->setProject(project);
break;
@@ -191,7 +185,7 @@ static void fillTestConfigurationsFromCheckState(const TestTreeItem *item,
const QString funcName = grandChild->name();
grandChild->forFirstLevelChildren([&testCases, &funcName](ITestTreeItem *dataTag) {
if (dataTag->checked() == Qt::Checked)
- testCases << functionWithDataTagAsArg(funcName, dataTag->name());
+ testCases << funcName + ':' + dataTag->name();
});
}
});
@@ -223,7 +217,7 @@ static void collectFailedTestInfo(TestTreeItem *item, QList<ITestConfiguration *
} else {
func->forFirstLevelChildren([&testCases, func](ITestTreeItem *dataTag) {
if (dataTag->data(0, FailedRole).toBool())
- testCases << functionWithDataTagAsArg(func->name(), dataTag->name());
+ testCases << func->name() + ':' + dataTag->name();
});
}
});