improved error reporting in BlackCoreTest::Expect

This commit is contained in:
Mathew Sutcliffe
2013-09-03 19:29:04 +01:00
parent 891d47c8ff
commit 00473e6f5f
2 changed files with 19 additions and 1 deletions

View File

@@ -73,12 +73,12 @@ void Expect::wait(const SourceLocation& srcloc, int timeout)
QTimer timer;
timer.setSingleShot(true);
QObject::connect(&timer, &QTimer::timeout, [=, &unitsCopy]{
reportTimeout(srcloc, unitsCopy);
for (auto i = unitsCopy.begin(); i != unitsCopy.end(); ++i)
{
(*i)->onDone(nullptr); //paranoia
}
unitsCopy.clear();
QTest::qFail("*** Timed Out ***", qPrintable(srcloc.file), srcloc.line);
m_failed = true;
});
timer.start(timeout * 1000);
@@ -89,4 +89,16 @@ void Expect::wait(const SourceLocation& srcloc, int timeout)
}
}
void Expect::reportTimeout(const SourceLocation& srcloc, const QSet<const ExpectUnit*>& units)
{
QString msg = "*** Timed Out ***";
QString prefix = "\nwhile waiting for ";
for (auto i = units.begin(); i != units.end(); ++i)
{
msg += prefix + (*i)->m_waitingFor;
prefix = "\nand ";
}
QTest::qFail(qPrintable(msg), qPrintable(srcloc.file), srcloc.line);
}
} //namespace BlackCoreTest