Remove Q_ASSERT's from QMetaType autotest.
authorJason McDonald <jason.mcdonald@nokia.com>
Tue, 3 May 2011 01:48:40 +0000 (11:48 +1000)
committerRohan McGovern <rohan.mcgovern@nokia.com>
Wed, 18 May 2011 00:46:42 +0000 (10:46 +1000)
Instead of asserting in debug mode and doing nothing in release mode,
put specific warnings in the test output and fail the test gracefully.

Change-Id: I453a0ab7ddef5b2acf55f77f71a59a940d93ae54
Task-number: QTBUG-17582
Reviewed-by: Rohan McGovern
(cherry picked from commit a3b2fa3f1beffa7709c11522d4e2db9ec8f952e0)

tests/auto/qmetatype/tst_qmetatype.cpp

index 67bbac2..fcb949f 100644 (file)
@@ -113,17 +113,35 @@ protected:
 #ifdef Q_OS_LINUX
             pthread_yield();
 #endif
-            Q_ASSERT(QMetaType::isRegistered(tp));
-            Q_ASSERT(QMetaType::type(nm) == tp);
-            Q_ASSERT(QMetaType::typeName(tp) == name);
+            if (!QMetaType::isRegistered(tp)) {
+                ++failureCount;
+                qWarning() << name << "is not a registered metatype";
+            }
+            if (QMetaType::type(nm) != tp) {
+                ++failureCount;
+                qWarning() << "Wrong metatype returned for" << name;
+            }
+            if (QMetaType::typeName(tp) != name) {
+                ++failureCount;
+                qWarning() << "Wrong typeName returned for" << tp;
+            }
             void *buf = QMetaType::construct(tp, 0);
             void *buf2 = QMetaType::construct(tp, buf);
-            Q_ASSERT(buf);
-            Q_ASSERT(buf2);
+            if (!buf) {
+                ++failureCount;
+                qWarning() << "Null buffer returned by QMetaType::construct(tp, 0)";
+            }
+            if (!buf2) {
+                ++failureCount;
+                qWarning() << "Null buffer returned by QMetaType::construct(tp, buf)";
+            }
             QMetaType::destroy(tp, buf);
             QMetaType::destroy(tp, buf2);
         }
     }
+public:
+    MetaTypeTorturer() : failureCount(0) { }
+    int failureCount;
 };
 
 void tst_QMetaType::threadSafety()
@@ -139,6 +157,10 @@ void tst_QMetaType::threadSafety()
     QVERIFY(t1.wait());
     QVERIFY(t2.wait());
     QVERIFY(t3.wait());
+
+    QCOMPARE(t1.failureCount, 0);
+    QCOMPARE(t2.failureCount, 0);
+    QCOMPARE(t3.failureCount, 0);
 }
 
 namespace TestSpace