summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestcase.cpp
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2022-08-11 11:59:16 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2022-08-12 20:32:30 +0200
commitf9b58b5c14518e5fcad634a3dae91b47f3068190 (patch)
treed8cda5c5dfbaa0e40258afdde72fb03363dd6189 /src/testlib/qtestcase.cpp
parent013574a5fdb7538acad1a9a5d8449efe62d868e9 (diff)
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>
Diffstat (limited to 'src/testlib/qtestcase.cpp')
-rw-r--r--src/testlib/qtestcase.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 6fd6e76def..89530f823f 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -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()) {