TaskTree tests: Add tests triggering runtime asserts

This addresses the 15th point in the master task below.

Task-number: QTCREATORBUG-28741
Change-Id: I9d449a6ce1538071f300b68b2929bcd437d1bb0f
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2023-11-05 14:26:26 +01:00
parent a88f807e86
commit 88ac19f188
2 changed files with 74 additions and 5 deletions

View File

@@ -959,30 +959,30 @@ void GroupItem::addChildren(const QList<GroupItem> &children)
case Type::GroupData:
if (child.m_groupData.m_groupHandler.m_setupHandler) {
QTC_ASSERT(!m_groupData.m_groupHandler.m_setupHandler,
qWarning("Group Setup Handler redefinition, overriding..."));
qWarning("Group setup handler redefinition, overriding..."));
m_groupData.m_groupHandler.m_setupHandler
= child.m_groupData.m_groupHandler.m_setupHandler;
}
if (child.m_groupData.m_groupHandler.m_doneHandler) {
QTC_ASSERT(!m_groupData.m_groupHandler.m_doneHandler,
qWarning("Group Done Handler redefinition, overriding..."));
qWarning("Group done handler redefinition, overriding..."));
m_groupData.m_groupHandler.m_doneHandler
= child.m_groupData.m_groupHandler.m_doneHandler;
}
if (child.m_groupData.m_parallelLimit) {
QTC_ASSERT(!m_groupData.m_parallelLimit,
qWarning("Group Execution Mode redefinition, overriding..."));
qWarning("Group execution mode redefinition, overriding..."));
m_groupData.m_parallelLimit = child.m_groupData.m_parallelLimit;
}
if (child.m_groupData.m_workflowPolicy) {
QTC_ASSERT(!m_groupData.m_workflowPolicy,
qWarning("Group Workflow Policy redefinition, overriding..."));
qWarning("Group workflow policy redefinition, overriding..."));
m_groupData.m_workflowPolicy = child.m_groupData.m_workflowPolicy;
}
break;
case Type::TaskHandler:
QTC_ASSERT(child.m_taskHandler.m_createHandler,
qWarning("Task Create Handler can't be null, skipping..."); return);
qWarning("Task create handler can't be null, skipping..."); return);
m_children.append(child);
break;
case Type::Storage:

View File

@@ -94,6 +94,7 @@ class tst_Tasking : public QObject
private slots:
void validConstructs(); // compile test
void runtimeCheck(); // checks done on runtime
void testTree_data();
void testTree();
void testInThread_data();
@@ -254,6 +255,74 @@ void tst_Tasking::validConstructs()
#endif
}
void tst_Tasking::runtimeCheck()
{
{
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
QTest::ignoreMessage(QtWarningMsg,
"Can't add the same storage into one Group twice, skipping...");
const TreeStorage<int> storage;
Group {
Storage(storage),
Storage(storage),
};
}
{
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
QTest::ignoreMessage(QtWarningMsg,
"Can't add the same storage into one Group twice, skipping...");
const TreeStorage<int> storage1;
const auto storage2 = storage1;
Group {
Storage(storage1),
Storage(storage2),
};
}
{
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
QTest::ignoreMessage(QtWarningMsg,
"Group setup handler redefinition, overriding...");
Group {
onGroupSetup([] {}),
onGroupSetup([] {}),
};
}
{
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
QTest::ignoreMessage(QtWarningMsg,
"Group done handler redefinition, overriding...");
Group {
onGroupDone([] {}),
onGroupDone([] {}),
};
}
{
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
QTest::ignoreMessage(QtWarningMsg,
"Group execution mode redefinition, overriding...");
Group {
sequential,
sequential,
};
}
{
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
QTest::ignoreMessage(QtWarningMsg,
"Group workflow policy redefinition, overriding...");
Group {
stopOnError,
stopOnError,
};
}
}
class TickAndDone : public QObject
{
Q_OBJECT