summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestcase.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-05-19 10:25:45 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-05-26 11:02:48 +0000
commitae021882330abc5f6fbaadca290e6e5670c89028 (patch)
tree99821d2caae31319e00a89a5ecf858e38ebf4f6e /src/testlib/qtestcase.cpp
parent25a7034d78aeb12726a1052d64c0aa3314a1f69d (diff)
QTestlib: Add formatting for QObject * in QCOMPARE
Output object name and class in QCOMPARE(). This should help to debug flaky QWidget tests that for example check on focusWidget(). [ChangeLog][QtTestLib] QCOMPARE() now reports QObject * values by class and objectName(). Task-number: QTBUG-64446 Change-Id: Ife04e89bba04fc78d077c8f0f07af17a17c9cf8c Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/testlib/qtestcase.cpp')
-rw-r--r--src/testlib/qtestcase.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index daaa1bc390..596f521ffa 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -2822,6 +2822,24 @@ char *QTest::toString(const void *p)
return msg;
}
+/*! \internal
+ */
+char *QTest::toString(const volatile QObject *vo)
+{
+ if (vo == nullptr)
+ return qstrdup("<null>");
+
+ auto *o = const_cast<const QObject*>(vo);
+ const QString &name = o->objectName();
+ const char *className = o->metaObject()->className();
+ char *msg = new char[256];
+ if (name.isEmpty())
+ qsnprintf(msg, 256, "%s/%p", className, o);
+ else
+ qsnprintf(msg, 256, "%s/\"%s\"", className, qPrintable(name));
+ return msg;
+}
+
/*! \fn char *QTest::toString(const QColor &color)
\internal
*/