Include current test name in crash reports
Previously a crashing test's output would end with the last completed test's output followed by a crash report, leading readers (understandably enough) to conclude that the last-named test is the one that crashed. In fact the crashing test is typically the next one in the class definition. Include the current test function's name (when non-null) in the output accompanying crash logs. This always goes to stderr so does not show up in the expected output. Pick-to: 6.4 Change-Id: Icab0ccd1fe434827ee92459ab0c97f9dc034754e Reviewed-by: Jason McDonald <macadder1@gmail.com>
This commit is contained in:
parent
013574a5fd
commit
f9b58b5c14
@ -358,7 +358,9 @@ static void printTestRunTime()
|
||||
{
|
||||
const int msecsFunctionTime = qRound(QTestLog::msecsFunctionTime());
|
||||
const int msecsTotalTime = qRound(QTestLog::msecsTotalTime());
|
||||
writeToStderr("\n Function time: ", asyncSafeToString(msecsFunctionTime),
|
||||
const char *const name = QTest::currentTestFunction();
|
||||
writeToStderr("\n ", name ? name : "[Non-test]",
|
||||
" function time: ", asyncSafeToString(msecsFunctionTime),
|
||||
"ms, total time: ", asyncSafeToString(msecsTotalTime), "ms\n");
|
||||
}
|
||||
|
||||
@ -1878,12 +1880,14 @@ private:
|
||||
const int msecsFunctionTime = qRound(QTestLog::msecsFunctionTime());
|
||||
const int msecsTotalTime = qRound(QTestLog::msecsTotalTime());
|
||||
const void *exceptionAddress = exInfo->ExceptionRecord->ExceptionAddress;
|
||||
fprintf(stderr, "A crash occurred in %s.\n"
|
||||
"Function time: %dms Total time: %dms\n\n"
|
||||
fprintf(stderr, "A crash occurred in %s.\n", appName);
|
||||
if (const char *name = QTest::currentTestFunction())
|
||||
fprintf(stderr, "While testing %s\n", name);
|
||||
fprintf(stderr, "Function time: %dms Total time: %dms\n\n"
|
||||
"Exception address: 0x%p\n"
|
||||
"Exception code : 0x%lx\n",
|
||||
appName, msecsFunctionTime, msecsTotalTime,
|
||||
exceptionAddress, exInfo->ExceptionRecord->ExceptionCode);
|
||||
msecsFunctionTime, msecsTotalTime, exceptionAddress,
|
||||
exInfo->ExceptionRecord->ExceptionCode);
|
||||
|
||||
DebugSymbolResolver resolver(GetCurrentProcess());
|
||||
if (resolver.isValid()) {
|
||||
|
Loading…
Reference in New Issue
Block a user