AutoTest: Fix handling of parameterized boost tests

Setting the parameterized flag after the test case may
have been added to the found tests is useless.
Do it as early as possible to take it into account
when gathering information for location and type.

Beside this the filter for parameterized boost tests
had been wrong which in turn led to not executing
them at all.

Change-Id: I1a4345b2a751c79cc4fc6df8e201e9606c961aaf
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2019-10-14 09:54:28 +02:00
parent f7808af946
commit 418c7d108a
2 changed files with 7 additions and 2 deletions

View File

@@ -105,6 +105,7 @@ void BoostCodeParser::handleIdentifier()
} else if (identifier == "BOOST_TEST_CASE") {
handleTestCase(TestCaseType::Functions);
} else if (identifier == "BOOST_PARAM_TEST_CASE") {
m_currentState.setFlag(BoostTestTreeItem::Parameterized);
handleTestCase(TestCaseType::Parameter);
} else if (identifier == "BOOST_AUTO_TEST_CASE") {
handleTestCase(TestCaseType::Auto);
@@ -203,8 +204,6 @@ void BoostCodeParser::handleTestCase(TestCaseType testCaseType)
m_currentState = BoostTestTreeItem::Enabled;
return;
}
if (testCaseType == TestCaseType::Parameter)
m_currentState |= BoostTestTreeItem::Parameterized;
} else if (m_currentState.testFlag(BoostTestTreeItem::Fixture)) {
// ignore first parameter (fixture) and first comma
if (!skipCommentsUntil(T_IDENTIFIER))

View File

@@ -236,6 +236,8 @@ QList<TestConfiguration *> BoostTestTreeItem::getSelectedTestConfigurations() co
QString tcName = item->name();
if (item->state().testFlag(BoostTestTreeItem::Templated))
tcName.append("<*");
else if (item->state().testFlag(BoostTestTreeItem::Parameterized))
tcName.append('*');
tcName = handleSpecialFunctionNames(tcName);
testCasesForProjectFile[item->proFile()].testCases.append(
item->prependWithParentsSuitePaths(tcName));
@@ -271,6 +273,8 @@ TestConfiguration *BoostTestTreeItem::testConfiguration() const
QString tcName = handleSpecialFunctionNames(boostItem->name());
if (boostItem->type() == TestSuite) // execute everything below a suite
tcName.append("/*");
else if (boostItem->state().testFlag(BoostTestTreeItem::Parameterized))
tcName.append('*');
else if (boostItem->state().testFlag(BoostTestTreeItem::Templated))
tcName.append("<*");
testCases.append(boostItem->prependWithParentsSuitePaths(tcName));
@@ -281,6 +285,8 @@ TestConfiguration *BoostTestTreeItem::testConfiguration() const
QString tcName = name();
if (state().testFlag(BoostTestTreeItem::Templated))
tcName.append("<*");
else if (state().testFlag(BoostTestTreeItem::Parameterized))
tcName.append('*');
testCases.append(prependWithParentsSuitePaths(handleSpecialFunctionNames(tcName)));
}