forked from qt-creator/qt-creator
AutoTest: Improve test results summary items display
Instead of letting warn prevail over pass and fail over warn just add warn as additional visual marker at the icons and keep the original test result. Task-number: QTCREATORBUG-18311 Change-Id: Ia67288fa84598b02c20fc1019799b1bb9282d63e Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -68,6 +68,14 @@ const Utils::Icon RESULT_MESSAGEDEBUG({
|
|||||||
const Utils::Icon RESULT_MESSAGEWARN({
|
const Utils::Icon RESULT_MESSAGEWARN({
|
||||||
{":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestWarnTextColor}},
|
{":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestWarnTextColor}},
|
||||||
Utils::Icon::Tint);
|
Utils::Icon::Tint);
|
||||||
|
const Utils::Icon RESULT_MESSAGEPASSWARN({
|
||||||
|
{":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestPassTextColor},
|
||||||
|
{":/utils/images/iconoverlay_warning.png", Utils::Theme::OutputPanes_TestWarnTextColor}},
|
||||||
|
Utils::Icon::Tint | Utils::Icon::PunchEdges);
|
||||||
|
const Utils::Icon RESULT_MESSAGEFAILWARN({
|
||||||
|
{":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestFailTextColor},
|
||||||
|
{":/utils/images/iconoverlay_warning.png", Utils::Theme::OutputPanes_TestWarnTextColor}},
|
||||||
|
Utils::Icon::Tint | Utils::Icon::PunchEdges);
|
||||||
const Utils::Icon RESULT_MESSAGEFATAL({
|
const Utils::Icon RESULT_MESSAGEFATAL({
|
||||||
{":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestFatalTextColor}},
|
{":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestFatalTextColor}},
|
||||||
Utils::Icon::Tint);
|
Utils::Icon::Tint);
|
||||||
|
@@ -103,9 +103,11 @@ QString TestResult::resultToString(const Result::Type type)
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case Result::Pass:
|
case Result::Pass:
|
||||||
case Result::MessageTestCaseSuccess:
|
case Result::MessageTestCaseSuccess:
|
||||||
|
case Result::MessageTestCaseSuccessWarn:
|
||||||
return QString("PASS");
|
return QString("PASS");
|
||||||
case Result::Fail:
|
case Result::Fail:
|
||||||
case Result::MessageTestCaseFail:
|
case Result::MessageTestCaseFail:
|
||||||
|
case Result::MessageTestCaseFailWarn:
|
||||||
return QString("FAIL");
|
return QString("FAIL");
|
||||||
case Result::ExpectedFail:
|
case Result::ExpectedFail:
|
||||||
return QString("XFAIL");
|
return QString("XFAIL");
|
||||||
@@ -120,7 +122,6 @@ QString TestResult::resultToString(const Result::Type type)
|
|||||||
case Result::MessageInfo:
|
case Result::MessageInfo:
|
||||||
return QString("INFO");
|
return QString("INFO");
|
||||||
case Result::MessageWarn:
|
case Result::MessageWarn:
|
||||||
case Result::MessageTestCaseWarn:
|
|
||||||
return QString("WARN");
|
return QString("WARN");
|
||||||
case Result::MessageFatal:
|
case Result::MessageFatal:
|
||||||
return QString("FATAL");
|
return QString("FATAL");
|
||||||
@@ -172,8 +173,8 @@ QColor TestResult::colorForType(const Result::Type type)
|
|||||||
bool TestResult::isMessageCaseStart(const Result::Type type)
|
bool TestResult::isMessageCaseStart(const Result::Type type)
|
||||||
{
|
{
|
||||||
return type == Result::MessageTestCaseStart || type == Result::MessageTestCaseSuccess
|
return type == Result::MessageTestCaseStart || type == Result::MessageTestCaseSuccess
|
||||||
|| type == Result::MessageTestCaseFail || type == Result::MessageTestCaseWarn
|
|| type == Result::MessageTestCaseFail || type == Result::MessageTestCaseSuccessWarn
|
||||||
|| type == Result::MessageIntermediate;
|
|| type == Result::MessageTestCaseFailWarn || type == Result::MessageIntermediate;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestResult::isDirectParentOf(const TestResult *other, bool * /*needsIntermediate*/) const
|
bool TestResult::isDirectParentOf(const TestResult *other, bool * /*needsIntermediate*/) const
|
||||||
|
@@ -55,8 +55,9 @@ enum Type {
|
|||||||
MessageDisabledTests,
|
MessageDisabledTests,
|
||||||
MessageTestCaseStart,
|
MessageTestCaseStart,
|
||||||
MessageTestCaseSuccess,
|
MessageTestCaseSuccess,
|
||||||
MessageTestCaseWarn,
|
MessageTestCaseSuccessWarn,
|
||||||
MessageTestCaseFail,
|
MessageTestCaseFail,
|
||||||
|
MessageTestCaseFailWarn,
|
||||||
MessageTestCaseEnd,
|
MessageTestCaseEnd,
|
||||||
MessageIntermediate,
|
MessageIntermediate,
|
||||||
MessageCurrentTest, INTERNAL_MESSAGES_END = MessageCurrentTest,
|
MessageCurrentTest, INTERNAL_MESSAGES_END = MessageCurrentTest,
|
||||||
|
@@ -41,8 +41,8 @@ const static int outputLimit = 100000;
|
|||||||
|
|
||||||
static bool isSummaryItem(Result::Type type)
|
static bool isSummaryItem(Result::Type type)
|
||||||
{
|
{
|
||||||
return type == Result::MessageTestCaseSuccess || type == Result::MessageTestCaseFail
|
return type == Result::MessageTestCaseSuccess || type == Result::MessageTestCaseSuccessWarn
|
||||||
|| type == Result::MessageTestCaseWarn;
|
|| type == Result::MessageTestCaseFail || type == Result::MessageTestCaseFailWarn;
|
||||||
}
|
}
|
||||||
|
|
||||||
TestResultDelegate::TestResultDelegate(QObject *parent)
|
TestResultDelegate::TestResultDelegate(QObject *parent)
|
||||||
|
@@ -61,6 +61,8 @@ static QIcon testResultIcon(Result::Type result) {
|
|||||||
Icons::RESULT_MESSAGEWARN.icon(),
|
Icons::RESULT_MESSAGEWARN.icon(),
|
||||||
Icons::RESULT_MESSAGEFATAL.icon(),
|
Icons::RESULT_MESSAGEFATAL.icon(),
|
||||||
Icons::RESULT_MESSAGEFATAL.icon(), // System gets same handling as Fatal for now
|
Icons::RESULT_MESSAGEFATAL.icon(), // System gets same handling as Fatal for now
|
||||||
|
Icons::RESULT_MESSAGEPASSWARN.icon(),
|
||||||
|
Icons::RESULT_MESSAGEFAILWARN.icon(),
|
||||||
}; // provide an icon for unknown??
|
}; // provide an icon for unknown??
|
||||||
|
|
||||||
if (result < 0 || result >= Result::MessageInternal) {
|
if (result < 0 || result >= Result::MessageInternal) {
|
||||||
@@ -69,8 +71,10 @@ static QIcon testResultIcon(Result::Type result) {
|
|||||||
return icons[Result::Pass];
|
return icons[Result::Pass];
|
||||||
case Result::MessageTestCaseFail:
|
case Result::MessageTestCaseFail:
|
||||||
return icons[Result::Fail];
|
return icons[Result::Fail];
|
||||||
case Result::MessageTestCaseWarn:
|
case Result::MessageTestCaseSuccessWarn:
|
||||||
return icons[Result::MessageWarn];
|
return icons[13];
|
||||||
|
case Result::MessageTestCaseFailWarn:
|
||||||
|
return icons[14];
|
||||||
default:
|
default:
|
||||||
return QIcon();
|
return QIcon();
|
||||||
}
|
}
|
||||||
@@ -103,6 +107,7 @@ void TestResultItem::updateResult()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Result::Type newResult = Result::MessageTestCaseSuccess;
|
Result::Type newResult = Result::MessageTestCaseSuccess;
|
||||||
|
bool withWarning = false;
|
||||||
for (Utils::TreeItem *child : *this) {
|
for (Utils::TreeItem *child : *this) {
|
||||||
const TestResult *current = static_cast<TestResultItem *>(child)->testResult();
|
const TestResult *current = static_cast<TestResultItem *>(child)->testResult();
|
||||||
if (current) {
|
if (current) {
|
||||||
@@ -111,21 +116,28 @@ void TestResultItem::updateResult()
|
|||||||
case Result::MessageFatal:
|
case Result::MessageFatal:
|
||||||
case Result::UnexpectedPass:
|
case Result::UnexpectedPass:
|
||||||
case Result::MessageTestCaseFail:
|
case Result::MessageTestCaseFail:
|
||||||
m_testResult->setResult(Result::MessageTestCaseFail);
|
newResult = Result::MessageTestCaseFail;
|
||||||
return;
|
break;
|
||||||
case Result::ExpectedFail:
|
case Result::ExpectedFail:
|
||||||
case Result::MessageWarn:
|
case Result::MessageWarn:
|
||||||
case Result::Skip:
|
case Result::Skip:
|
||||||
case Result::BlacklistedFail:
|
case Result::BlacklistedFail:
|
||||||
case Result::BlacklistedPass:
|
case Result::BlacklistedPass:
|
||||||
case Result::MessageTestCaseWarn:
|
case Result::MessageTestCaseSuccessWarn:
|
||||||
newResult = Result::MessageTestCaseWarn;
|
case Result::MessageTestCaseFailWarn:
|
||||||
|
withWarning = true;
|
||||||
break;
|
break;
|
||||||
default: {}
|
default: {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_testResult->setResult(newResult);
|
if (withWarning) {
|
||||||
|
m_testResult->setResult(newResult == Result::MessageTestCaseSuccess
|
||||||
|
? Result::MessageTestCaseSuccessWarn
|
||||||
|
: Result::MessageTestCaseFailWarn);
|
||||||
|
} else {
|
||||||
|
m_testResult->setResult(newResult);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestResultItem::updateIntermediateChildren()
|
void TestResultItem::updateIntermediateChildren()
|
||||||
@@ -346,8 +358,9 @@ void TestResultFilterModel::enableAllResultTypes()
|
|||||||
<< Result::MessageFatal << Result::Invalid << Result::BlacklistedPass
|
<< Result::MessageFatal << Result::Invalid << Result::BlacklistedPass
|
||||||
<< Result::BlacklistedFail << Result::Benchmark << Result::MessageIntermediate
|
<< Result::BlacklistedFail << Result::Benchmark << Result::MessageIntermediate
|
||||||
<< Result::MessageCurrentTest << Result::MessageTestCaseStart
|
<< Result::MessageCurrentTest << Result::MessageTestCaseStart
|
||||||
<< Result::MessageTestCaseSuccess << Result::MessageTestCaseWarn
|
<< Result::MessageTestCaseSuccess << Result::MessageTestCaseSuccessWarn
|
||||||
<< Result::MessageTestCaseFail << Result::MessageTestCaseEnd
|
<< Result::MessageTestCaseFail << Result::MessageTestCaseFailWarn
|
||||||
|
<< Result::MessageTestCaseEnd
|
||||||
<< Result::MessageInfo << Result::MessageSystem;
|
<< Result::MessageInfo << Result::MessageSystem;
|
||||||
invalidateFilter();
|
invalidateFilter();
|
||||||
}
|
}
|
||||||
@@ -395,7 +408,8 @@ bool TestResultFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s
|
|||||||
case Result::MessageTestCaseSuccess:
|
case Result::MessageTestCaseSuccess:
|
||||||
return m_enabled.contains(Result::Pass);
|
return m_enabled.contains(Result::Pass);
|
||||||
case Result::MessageTestCaseFail:
|
case Result::MessageTestCaseFail:
|
||||||
case Result::MessageTestCaseWarn:
|
case Result::MessageTestCaseSuccessWarn:
|
||||||
|
case Result::MessageTestCaseFailWarn:
|
||||||
return acceptTestCaseResult(index);
|
return acceptTestCaseResult(index);
|
||||||
default:
|
default:
|
||||||
return m_enabled.contains(resultType);
|
return m_enabled.contains(resultType);
|
||||||
@@ -409,7 +423,8 @@ bool TestResultFilterModel::acceptTestCaseResult(const QModelIndex &srcIndex) co
|
|||||||
Result::Type type = m_sourceModel->testResult(child)->result();
|
Result::Type type = m_sourceModel->testResult(child)->result();
|
||||||
if (type == Result::MessageTestCaseSuccess)
|
if (type == Result::MessageTestCaseSuccess)
|
||||||
type = Result::Pass;
|
type = Result::Pass;
|
||||||
if (type == Result::MessageTestCaseFail || type == Result::MessageTestCaseWarn) {
|
if (type == Result::MessageTestCaseFail || type == Result::MessageTestCaseFailWarn
|
||||||
|
|| type == Result::MessageTestCaseSuccessWarn) {
|
||||||
if (acceptTestCaseResult(child))
|
if (acceptTestCaseResult(child))
|
||||||
return true;
|
return true;
|
||||||
} else if (m_enabled.contains(type)) {
|
} else if (m_enabled.contains(type)) {
|
||||||
|
Reference in New Issue
Block a user