Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/testlib/qtestlog.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | static void saveCoverageTool(const char * appname, bool testfailed, bool installedTestCoverage) | - | ||||||||||||
13 | { | - | ||||||||||||
14 | - | |||||||||||||
15 | if (!installedTestCoverage) | - | ||||||||||||
16 | return; | - | ||||||||||||
17 | - | |||||||||||||
18 | - | |||||||||||||
19 | __coveragescanner_install(appname); | - | ||||||||||||
20 | __coveragescanner_teststate(testfailed ? "FAILED" : "PASSED"); | - | ||||||||||||
21 | __coveragescanner_save(); | - | ||||||||||||
22 | __coveragescanner_testname(""); | - | ||||||||||||
23 | __coveragescanner_clear(); | - | ||||||||||||
24 | unsetenv("QT_TESTCOCOON_ACTIVE"); | - | ||||||||||||
25 | - | |||||||||||||
26 | - | |||||||||||||
27 | - | |||||||||||||
28 | - | |||||||||||||
29 | - | |||||||||||||
30 | } | - | ||||||||||||
31 | - | |||||||||||||
32 | static QElapsedTimer elapsedFunctionTime; | - | ||||||||||||
33 | static QElapsedTimer elapsedTotalTime; | - | ||||||||||||
34 | - | |||||||||||||
35 | namespace QTest { | - | ||||||||||||
36 | - | |||||||||||||
37 | int fails = 0; | - | ||||||||||||
38 | int passes = 0; | - | ||||||||||||
39 | int skips = 0; | - | ||||||||||||
40 | int blacklists = 0; | - | ||||||||||||
41 | - | |||||||||||||
42 | struct IgnoreResultList | - | ||||||||||||
43 | { | - | ||||||||||||
44 | inline IgnoreResultList(QtMsgType tp, const QVariant &patternIn) | - | ||||||||||||
45 | : type(tp), pattern(patternIn), next(0) {} | - | ||||||||||||
46 | - | |||||||||||||
47 | static inline void clearList(IgnoreResultList *&list) | - | ||||||||||||
48 | { | - | ||||||||||||
49 | while (list) { | - | ||||||||||||
50 | IgnoreResultList *current = list; | - | ||||||||||||
51 | list = list->next; | - | ||||||||||||
52 | delete current; | - | ||||||||||||
53 | } | - | ||||||||||||
54 | } | - | ||||||||||||
55 | - | |||||||||||||
56 | static void append(IgnoreResultList *&list, QtMsgType type, const QVariant &patternIn) | - | ||||||||||||
57 | { | - | ||||||||||||
58 | QTest::IgnoreResultList *item = new QTest::IgnoreResultList(type, patternIn); | - | ||||||||||||
59 | - | |||||||||||||
60 | if (!list) { | - | ||||||||||||
61 | list = item; | - | ||||||||||||
62 | return; | - | ||||||||||||
63 | } | - | ||||||||||||
64 | IgnoreResultList *last = list; | - | ||||||||||||
65 | for ( ; last->next; last = last->next) ; | - | ||||||||||||
66 | last->next = item; | - | ||||||||||||
67 | } | - | ||||||||||||
68 | - | |||||||||||||
69 | static bool stringsMatch(const QString &expected, const QString &actual) | - | ||||||||||||
70 | { | - | ||||||||||||
71 | if (expected == actual) | - | ||||||||||||
72 | return true; | - | ||||||||||||
73 | - | |||||||||||||
74 | - | |||||||||||||
75 | - | |||||||||||||
76 | - | |||||||||||||
77 | if (expected.endsWith(QLatin1Char(' '))) | - | ||||||||||||
78 | return actual == expected.leftRef(expected.length() - 1); | - | ||||||||||||
79 | - | |||||||||||||
80 | return false; | - | ||||||||||||
81 | } | - | ||||||||||||
82 | - | |||||||||||||
83 | inline bool matches(QtMsgType tp, const QString &message) const | - | ||||||||||||
84 | { | - | ||||||||||||
85 | return tp == type | - | ||||||||||||
86 | && (pattern.type() == QVariant::String ? | - | ||||||||||||
87 | stringsMatch(pattern.toString(), message) : | - | ||||||||||||
88 | - | |||||||||||||
89 | pattern.toRegularExpression().match(message).hasMatch()); | - | ||||||||||||
90 | - | |||||||||||||
91 | - | |||||||||||||
92 | - | |||||||||||||
93 | } | - | ||||||||||||
94 | - | |||||||||||||
95 | QtMsgType type; | - | ||||||||||||
96 | QVariant pattern; | - | ||||||||||||
97 | IgnoreResultList *next; | - | ||||||||||||
98 | }; | - | ||||||||||||
99 | - | |||||||||||||
100 | static IgnoreResultList *ignoreResultList = 0; | - | ||||||||||||
101 | - | |||||||||||||
102 | struct LoggerList | - | ||||||||||||
103 | { | - | ||||||||||||
104 | QAbstractTestLogger *logger; | - | ||||||||||||
105 | LoggerList *next; | - | ||||||||||||
106 | }; | - | ||||||||||||
107 | - | |||||||||||||
108 | class TestLoggers | - | ||||||||||||
109 | { | - | ||||||||||||
110 | public: | - | ||||||||||||
111 | static void addLogger(QAbstractTestLogger *logger) | - | ||||||||||||
112 | { | - | ||||||||||||
113 | LoggerList *l = new LoggerList; | - | ||||||||||||
114 | l->logger = logger; | - | ||||||||||||
115 | l->next = loggers; | - | ||||||||||||
116 | loggers = l; | - | ||||||||||||
117 | } | - | ||||||||||||
118 | - | |||||||||||||
119 | static void destroyLoggers() | - | ||||||||||||
120 | { | - | ||||||||||||
121 | while (loggers) { | - | ||||||||||||
122 | LoggerList *l = loggers; | - | ||||||||||||
123 | loggers = loggers->next; | - | ||||||||||||
124 | delete l->logger; | - | ||||||||||||
125 | delete l; | - | ||||||||||||
126 | } | - | ||||||||||||
127 | } | - | ||||||||||||
128 | static void startLogging() | - | ||||||||||||
129 | { | - | ||||||||||||
130 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->startLogging(); l = l->next; }; | - | ||||||||||||
131 | } | - | ||||||||||||
132 | - | |||||||||||||
133 | static void stopLogging() | - | ||||||||||||
134 | { | - | ||||||||||||
135 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->stopLogging(); l = l->next; }; | - | ||||||||||||
136 | } | - | ||||||||||||
137 | - | |||||||||||||
138 | static void enterTestFunction(const char *function) | - | ||||||||||||
139 | { | - | ||||||||||||
140 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->enterTestFunction(function); l = l->next; }; | - | ||||||||||||
141 | } | - | ||||||||||||
142 | - | |||||||||||||
143 | static void leaveTestFunction() | - | ||||||||||||
144 | { | - | ||||||||||||
145 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->leaveTestFunction(); l = l->next; }; | - | ||||||||||||
146 | } | - | ||||||||||||
147 | - | |||||||||||||
148 | static void addIncident(QAbstractTestLogger::IncidentTypes type, const char *description, | - | ||||||||||||
149 | const char *file = 0, int line = 0) | - | ||||||||||||
150 | { | - | ||||||||||||
151 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->addIncident(type, description, file, line); l = l->next; }; | - | ||||||||||||
152 | } | - | ||||||||||||
153 | - | |||||||||||||
154 | static void addBenchmarkResult(const QBenchmarkResult &result) | - | ||||||||||||
155 | { | - | ||||||||||||
156 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->addBenchmarkResult(result); l = l->next; }; | - | ||||||||||||
157 | } | - | ||||||||||||
158 | - | |||||||||||||
159 | static void addMessage(QAbstractTestLogger::MessageTypes type, const QString &message, | - | ||||||||||||
160 | const char *file = 0, int line = 0) | - | ||||||||||||
161 | { | - | ||||||||||||
162 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->addMessage(type, message, file, line); l = l->next; }; | - | ||||||||||||
163 | } | - | ||||||||||||
164 | - | |||||||||||||
165 | static void outputString(const char *msg) | - | ||||||||||||
166 | { | - | ||||||||||||
167 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; logger->outputString(msg); l = l->next; }; | - | ||||||||||||
168 | } | - | ||||||||||||
169 | - | |||||||||||||
170 | static int loggerCount() | - | ||||||||||||
171 | { | - | ||||||||||||
172 | int count = 0; | - | ||||||||||||
173 | LoggerList *l = loggers; while (l) { QAbstractTestLogger *logger = l->logger; (void)logger;; ++count; l = l->next; }; | - | ||||||||||||
174 | return count; | - | ||||||||||||
175 | } | - | ||||||||||||
176 | - | |||||||||||||
177 | private: | - | ||||||||||||
178 | static LoggerList *loggers; | - | ||||||||||||
179 | }; | - | ||||||||||||
180 | - | |||||||||||||
181 | - | |||||||||||||
182 | - | |||||||||||||
183 | LoggerList *TestLoggers::loggers = 0; | - | ||||||||||||
184 | static bool loggerUsingStdout = false; | - | ||||||||||||
185 | - | |||||||||||||
186 | static int verbosity = 0; | - | ||||||||||||
187 | static int maxWarnings = 2002; | - | ||||||||||||
188 | static bool installedTestCoverage = true; | - | ||||||||||||
189 | - | |||||||||||||
190 | static QtMessageHandler oldMessageHandler; | - | ||||||||||||
191 | - | |||||||||||||
192 | static bool handleIgnoredMessage(QtMsgType type, const QString &message) | - | ||||||||||||
193 | { | - | ||||||||||||
194 | if (!ignoreResultList) | - | ||||||||||||
195 | return false; | - | ||||||||||||
196 | IgnoreResultList *last = 0; | - | ||||||||||||
197 | IgnoreResultList *list = ignoreResultList; | - | ||||||||||||
198 | while (list) { | - | ||||||||||||
199 | if (list->matches(type, message)) { | - | ||||||||||||
200 | - | |||||||||||||
201 | if (last) | - | ||||||||||||
202 | last->next = list->next; | - | ||||||||||||
203 | else if (list->next) | - | ||||||||||||
204 | ignoreResultList = list->next; | - | ||||||||||||
205 | else | - | ||||||||||||
206 | ignoreResultList = 0; | - | ||||||||||||
207 | - | |||||||||||||
208 | delete list; | - | ||||||||||||
209 | return true; | - | ||||||||||||
210 | } | - | ||||||||||||
211 | - | |||||||||||||
212 | last = list; | - | ||||||||||||
213 | list = list->next; | - | ||||||||||||
214 | } | - | ||||||||||||
215 | return false; | - | ||||||||||||
216 | } | - | ||||||||||||
217 | - | |||||||||||||
218 | static void messageHandler(QtMsgType type, const QMessageLogContext & context, const QString &message) | - | ||||||||||||
219 | { | - | ||||||||||||
220 | static QBasicAtomicInt counter = { QTest::maxWarnings }; | - | ||||||||||||
221 | - | |||||||||||||
222 | if (QTest::TestLoggers::loggerCount() == 0) { | - | ||||||||||||
223 | - | |||||||||||||
224 | qInstallMessageHandler(oldMessageHandler); | - | ||||||||||||
225 | do { if (!(QTest::TestLoggers::loggerCount() != 0)) qt_assert("QTest::TestLoggers::loggerCount() != 0",__FILE__,282289); } while (0); | - | ||||||||||||
226 | } | - | ||||||||||||
227 | - | |||||||||||||
228 | if (handleIgnoredMessage(type, message)) | - | ||||||||||||
229 | - | |||||||||||||
230 | return; | - | ||||||||||||
231 | - | |||||||||||||
232 | QString msg = qFormatLogMessage(type, context, message); | - | ||||||||||||
233 | - | |||||||||||||
234 | if (type != QtFatalMsg) { | - | ||||||||||||
235 | if (counter.load() <= 0) | - | ||||||||||||
236 | return; | - | ||||||||||||
237 | - | |||||||||||||
238 | if (!counter.deref()) { | - | ||||||||||||
239 | QTest::TestLoggers::addMessage(QAbstractTestLogger::QSystem, | - | ||||||||||||
240 | ([]() -> QString { enum { Size = sizeof(u"" "Maximum amount of warnings exceeded. Use -maxwarnings to override.")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "Maximum amount of warnings exceeded. Use -maxwarnings to override." }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }())); | - | ||||||||||||
241 | return; | - | ||||||||||||
242 | } | - | ||||||||||||
243 | } | - | ||||||||||||
244 | - | |||||||||||||
245 | switch (type) { | - | ||||||||||||
246 | case QtDebugMsg: | - | ||||||||||||
247 | QTest::TestLoggers::addMessage(QAbstractTestLogger::QDebug, msg); | - | ||||||||||||
248 | break; | - | ||||||||||||
249 | case QtInfoMsg: | - | ||||||||||||
250 | QTest::TestLoggers::addMessage(QAbstractTestLogger::QInfo, msg); | - | ||||||||||||
251 | break; | - | ||||||||||||
252 | case QtCriticalMsg: | - | ||||||||||||
253 | QTest::TestLoggers::addMessage(QAbstractTestLogger::QSystem, msg); | - | ||||||||||||
254 | break; | - | ||||||||||||
255 | case QtWarningMsg: | - | ||||||||||||
256 | QTest::TestLoggers::addMessage(QAbstractTestLogger::QWarning, msg); | - | ||||||||||||
257 | break; | - | ||||||||||||
258 | case QtFatalMsg: | - | ||||||||||||
259 | QTest::TestLoggers::addMessage(QAbstractTestLogger::QFatal, msg); | - | ||||||||||||
260 | - | |||||||||||||
261 | - | |||||||||||||
262 | - | |||||||||||||
263 | - | |||||||||||||
264 | - | |||||||||||||
265 | QTestResult::addFailure("Received a fatal error.", "Unknown file", 0); | - | ||||||||||||
266 | QTestLog::leaveTestFunction(); | - | ||||||||||||
267 | QTestLog::stopLogging(); | - | ||||||||||||
268 | break; | - | ||||||||||||
269 | } | - | ||||||||||||
270 | } | - | ||||||||||||
271 | } | - | ||||||||||||
272 | - | |||||||||||||
273 | void QTestLog::enterTestFunction(const char* function) | - | ||||||||||||
274 | { | - | ||||||||||||
275 | elapsedFunctionTime.restart(); | - | ||||||||||||
276 | if (printAvailableTags) | - | ||||||||||||
277 | return; | - | ||||||||||||
278 | - | |||||||||||||
279 | do { if (!(function)) qt_assert("function",__FILE__,336343); } while (0); | - | ||||||||||||
280 | - | |||||||||||||
281 | QTest::TestLoggers::enterTestFunction(function); | - | ||||||||||||
282 | } | - | ||||||||||||
283 | - | |||||||||||||
284 | int QTestLog::unhandledIgnoreMessages() | - | ||||||||||||
285 | { | - | ||||||||||||
286 | int i = 0; | - | ||||||||||||
287 | QTest::IgnoreResultList *list = QTest::ignoreResultList; | - | ||||||||||||
288 | while (list) { | - | ||||||||||||
289 | ++i; | - | ||||||||||||
290 | list = list->next; | - | ||||||||||||
291 | } | - | ||||||||||||
292 | return i; | - | ||||||||||||
293 | } | - | ||||||||||||
294 | - | |||||||||||||
295 | void QTestLog::leaveTestFunction() | - | ||||||||||||
296 | { | - | ||||||||||||
297 | if (printAvailableTags) | - | ||||||||||||
298 | return; | - | ||||||||||||
299 | - | |||||||||||||
300 | QTest::TestLoggers::leaveTestFunction(); | - | ||||||||||||
301 | } | - | ||||||||||||
302 | - | |||||||||||||
303 | void QTestLog::printUnhandledIgnoreMessages() | - | ||||||||||||
304 | { | - | ||||||||||||
305 | QString message; | - | ||||||||||||
306 | QTest::IgnoreResultList *list = QTest::ignoreResultList; | - | ||||||||||||
307 | while (list) { | - | ||||||||||||
308 | if (list->pattern.type() == QVariant::String) { | - | ||||||||||||
309 | message = ([]() -> QString { enum { Size = sizeof(u"" "Did not receive message: \"")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "Did not receive message: \"" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()) + list->pattern.toString() + QLatin1Char('"'); | - | ||||||||||||
310 | } else { | - | ||||||||||||
311 | - | |||||||||||||
312 | message = ([]() -> QString { enum { Size = sizeof(u"" "Did not receive any message matching: \"")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "Did not receive any message matching: \"" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()) + list->pattern.toRegularExpression().pattern() + QLatin1Char('"'); | - | ||||||||||||
313 | - | |||||||||||||
314 | } | - | ||||||||||||
315 | QTest::TestLoggers::addMessage(QAbstractTestLogger::Info, message); | - | ||||||||||||
316 | - | |||||||||||||
317 | list = list->next; | - | ||||||||||||
318 | } | - | ||||||||||||
319 | } | - | ||||||||||||
320 | - | |||||||||||||
321 | void QTestLog::clearIgnoreMessages() | - | ||||||||||||
322 | { | - | ||||||||||||
323 | QTest::IgnoreResultList::clearList(QTest::ignoreResultList); | - | ||||||||||||
324 | } | - | ||||||||||||
325 | - | |||||||||||||
326 | void QTestLog::addPass(const char *msg) | - | ||||||||||||
327 | { | - | ||||||||||||
328 | if (printAvailableTags) | - | ||||||||||||
329 | return; | - | ||||||||||||
330 | - | |||||||||||||
331 | do { if (!(msg)) qt_assert("msg",__FILE__,388395); } while (0); | - | ||||||||||||
332 | - | |||||||||||||
333 | ++QTest::passes; | - | ||||||||||||
334 | - | |||||||||||||
335 | QTest::TestLoggers::addIncident(QAbstractTestLogger::Pass, msg); | - | ||||||||||||
336 | } | - | ||||||||||||
337 | - | |||||||||||||
338 | void QTestLog::addFail(const char *msg, const char *file, int line) | - | ||||||||||||
339 | { | - | ||||||||||||
340 | do { if (!(msg)) qt_assert("msg",__FILE__,397404); } while (0); | - | ||||||||||||
341 | - | |||||||||||||
342 | ++QTest::fails; | - | ||||||||||||
343 | - | |||||||||||||
344 | QTest::TestLoggers::addIncident(QAbstractTestLogger::Fail, msg, file, line); | - | ||||||||||||
345 | } | - | ||||||||||||
346 | - | |||||||||||||
347 | void QTestLog::addXFail(const char *msg, const char *file, int line) | - | ||||||||||||
348 | { | - | ||||||||||||
349 | do { if (!(msg)) qt_assert("msg",__FILE__,406413); } while (0); | - | ||||||||||||
350 | do { if (!(file)) qt_assert("file",__FILE__,407414); } while (0); | - | ||||||||||||
351 | - | |||||||||||||
352 | QTest::TestLoggers::addIncident(QAbstractTestLogger::XFail, msg, file, line); | - | ||||||||||||
353 | } | - | ||||||||||||
354 | - | |||||||||||||
355 | void QTestLog::addXPass(const char *msg, const char *file, int line) | - | ||||||||||||
356 | { | - | ||||||||||||
357 | do { if (!(msg)) qt_assert("msg",__FILE__,414421); } while (0); | - | ||||||||||||
358 | do { if (!(file)) qt_assert("file",__FILE__,415422); } while (0); | - | ||||||||||||
359 | - | |||||||||||||
360 | ++QTest::fails; | - | ||||||||||||
361 | - | |||||||||||||
362 | QTest::TestLoggers::addIncident(QAbstractTestLogger::XPass, msg, file, line); | - | ||||||||||||
363 | } | - | ||||||||||||
364 | - | |||||||||||||
365 | void QTestLog::addBPass(const char *msg) | - | ||||||||||||
366 | { | - | ||||||||||||
367 | do { if (!(msg)) qt_assert("msg",__FILE__,424431); } while (0); | - | ||||||||||||
368 | - | |||||||||||||
369 | ++QTest::blacklists; | - | ||||||||||||
370 | - | |||||||||||||
371 | QTest::TestLoggers::addIncident(QAbstractTestLogger::BlacklistedPass, msg); | - | ||||||||||||
372 | } | - | ||||||||||||
373 | - | |||||||||||||
374 | void QTestLog::addBFail(const char *msg, const char *file, int line) | - | ||||||||||||
375 | { | - | ||||||||||||
376 | do { if (!(msg)) qt_assert("msg",__FILE__,433440); } while (0); | - | ||||||||||||
377 | do { if (!(file)) qt_assert("file",__FILE__,434441); } while (0); | - | ||||||||||||
378 | - | |||||||||||||
379 | ++QTest::blacklists; | - | ||||||||||||
380 | - | |||||||||||||
381 | QTest::TestLoggers::addIncident(QAbstractTestLogger::BlacklistedFail, msg, file, line); | - | ||||||||||||
382 | } | - | ||||||||||||
383 | - | |||||||||||||
384 | void QTestLog::addSkip(const char *msg, const char *file, int line) | - | ||||||||||||
385 | { | - | ||||||||||||
386 | do { if (!(msg)) qt_assert("msg",__FILE__,443450); } while (0); | - | ||||||||||||
387 | do { if (!(file)) qt_assert("file",__FILE__,444451); } while (0); | - | ||||||||||||
388 | - | |||||||||||||
389 | ++QTest::skips; | - | ||||||||||||
390 | - | |||||||||||||
391 | QTest::TestLoggers::addMessage(QAbstractTestLogger::Skip, QString::fromUtf8(msg), file, line); | - | ||||||||||||
392 | } | - | ||||||||||||
393 | - | |||||||||||||
394 | void QTestLog::addBenchmarkResult(const QBenchmarkResult &result) | - | ||||||||||||
395 | { | - | ||||||||||||
396 | QTest::TestLoggers::addBenchmarkResult(result); | - | ||||||||||||
397 | } | - | ||||||||||||
398 | - | |||||||||||||
399 | void QTestLog::startLogging() | - | ||||||||||||
400 | { | - | ||||||||||||
401 | elapsedTotalTime.start(); | - | ||||||||||||
402 | elapsedFunctionTime.start(); | - | ||||||||||||
403 | QTest::TestLoggers::startLogging(); | - | ||||||||||||
404 | QTest::oldMessageHandler = qInstallMessageHandler(QTest::messageHandler); | - | ||||||||||||
405 | } | - | ||||||||||||
406 | - | |||||||||||||
407 | void QTestLog::stopLogging() | - | ||||||||||||
408 | { | - | ||||||||||||
409 | qInstallMessageHandler(QTest::oldMessageHandler); | - | ||||||||||||
410 | QTest::TestLoggers::stopLogging(); | - | ||||||||||||
411 | QTest::TestLoggers::destroyLoggers(); | - | ||||||||||||
412 | QTest::loggerUsingStdout = false; | - | ||||||||||||
413 | saveCoverageTool(QTestResult::currentAppName(), failCount() != 0, QTestLog::installedTestCoverage()); | - | ||||||||||||
414 | } | - | ||||||||||||
415 | - | |||||||||||||
416 | void QTestLog::addLogger(LogMode mode, const char *filename) | - | ||||||||||||
417 | { | - | ||||||||||||
418 | if (filename
| 291-900 | ||||||||||||
419 | filename = 0; executed 291 times by 1 test: filename = 0; Executed by:
| 291 | ||||||||||||
420 | if (!filename
| 609-984 | ||||||||||||
421 | QTest::loggerUsingStdout = true; executed 984 times by 506 tests: QTest::loggerUsingStdout = true; Executed by:
| 984 | ||||||||||||
422 | - | |||||||||||||
423 | QAbstractTestLogger *logger = 0; | - | ||||||||||||
424 | switch (mode) { | - | ||||||||||||
425 | case executed 855 times by 506 tests: QTestLog::Plain:case QTestLog::Plain: Executed by:
executed 855 times by 506 tests: case QTestLog::Plain: Executed by:
| 855 | ||||||||||||
426 | logger = new QPlainTestLogger(filename); | - | ||||||||||||
427 | break; executed 855 times by 506 tests: break; Executed by:
| 855 | ||||||||||||
428 | case executed 8 times by 1 test: QTestLog::CSV:case QTestLog::CSV: Executed by:
executed 8 times by 1 test: case QTestLog::CSV: Executed by:
| 8 | ||||||||||||
429 | logger = new QCsvBenchmarkLogger(filename); | - | ||||||||||||
430 | break; executed 8 times by 1 test: break; Executed by:
| 8 | ||||||||||||
431 | case executed 184 times by 1 test: QTestLog::XML:case QTestLog::XML: Executed by:
executed 184 times by 1 test: case QTestLog::XML: Executed by:
| 184 | ||||||||||||
432 | logger = new QXmlTestLogger(QXmlTestLogger::Complete, filename); | - | ||||||||||||
433 | break; executed 184 times by 1 test: break; Executed by:
| 184 | ||||||||||||
434 | case executed 185 times by 1 test: QTestLog::LightXML:case QTestLog::LightXML: Executed by:
executed 185 times by 1 test: case QTestLog::LightXML: Executed by:
| 185 | ||||||||||||
435 | logger = new QXmlTestLogger(QXmlTestLogger::Light, filename); | - | ||||||||||||
436 | break; executed 185 times by 1 test: break; Executed by:
| 185 | ||||||||||||
437 | case executed 215 times by 1 test: QTestLog::XunitXML:case QTestLog::XunitXML: Executed by:
executed 215 times by 1 test: case QTestLog::XunitXML: Executed by:
| 215 | ||||||||||||
438 | logger = new QXunitTestLogger(filename); | - | ||||||||||||
439 | break; executed 215 times by 1 test: break; Executed by:
| 215 | ||||||||||||
440 | case executed 146 times by 1 test: QTestLog::TeamCity:case QTestLog::TeamCity: Executed by:
executed 146 times by 1 test: case QTestLog::TeamCity: Executed by:
| 146 | ||||||||||||
441 | logger = new QTeamCityLogger(filename); | - | ||||||||||||
442 | break; executed 146 times by 1 test: break; Executed by:
| 146 | ||||||||||||
443 | - | |||||||||||||
444 | - | |||||||||||||
445 | - | |||||||||||||
446 | - | |||||||||||||
447 | - | |||||||||||||
448 | } | - | ||||||||||||
449 | do { if (!(logger)
never executed: } while (0);qt_assert("logger",__FILE__,513); | 0-1593 | ||||||||||||
450 | QTest::TestLoggers::addLogger(logger); | - | ||||||||||||
451 | } executed 1593 times by 506 tests: end of block Executed by:
| 1593 | ||||||||||||
452 | - | |||||||||||||
453 | int QTestLog::loggerCount() | - | ||||||||||||
454 | { | - | ||||||||||||
455 | return QTest::TestLoggers::loggerCount(); | - | ||||||||||||
456 | } | - | ||||||||||||
457 | - | |||||||||||||
458 | bool QTestLog::loggerUsingStdout() | - | ||||||||||||
459 | { | - | ||||||||||||
460 | return QTest::loggerUsingStdout; | - | ||||||||||||
461 | } | - | ||||||||||||
462 | - | |||||||||||||
463 | void QTestLog::warn(const char *msg, const char *file, int line) | - | ||||||||||||
464 | { | - | ||||||||||||
465 | do { if (!(msg)) qt_assert("msg",__FILE__,519529); } while (0); | - | ||||||||||||
466 | - | |||||||||||||
467 | if (QTest::TestLoggers::loggerCount() > 0) | - | ||||||||||||
468 | QTest::TestLoggers::addMessage(QAbstractTestLogger::Warn, QString::fromUtf8(msg), file, line); | - | ||||||||||||
469 | } | - | ||||||||||||
470 | - | |||||||||||||
471 | void QTestLog::info(const char *msg, const char *file, int line) | - | ||||||||||||
472 | { | - | ||||||||||||
473 | do { if (!(msg)) qt_assert("msg",__FILE__,527537); } while (0); | - | ||||||||||||
474 | - | |||||||||||||
475 | QTest::TestLoggers::addMessage(QAbstractTestLogger::Info, QString::fromUtf8(msg), file, line); | - | ||||||||||||
476 | } | - | ||||||||||||
477 | - | |||||||||||||
478 | void QTestLog::setVerboseLevel(int level) | - | ||||||||||||
479 | { | - | ||||||||||||
480 | QTest::verbosity = level; | - | ||||||||||||
481 | } | - | ||||||||||||
482 | - | |||||||||||||
483 | int QTestLog::verboseLevel() | - | ||||||||||||
484 | { | - | ||||||||||||
485 | return QTest::verbosity; | - | ||||||||||||
486 | } | - | ||||||||||||
487 | - | |||||||||||||
488 | void QTestLog::ignoreMessage(QtMsgType type, const char *msg) | - | ||||||||||||
489 | { | - | ||||||||||||
490 | do { if (!(msg)) qt_assert("msg",__FILE__,544554); } while (0); | - | ||||||||||||
491 | - | |||||||||||||
492 | QTest::IgnoreResultList::append(QTest::ignoreResultList, type, QString::fromLocal8Bit(msg)); | - | ||||||||||||
493 | } | - | ||||||||||||
494 | - | |||||||||||||
495 | - | |||||||||||||
496 | void QTestLog::ignoreMessage(QtMsgType type, const QRegularExpression &expression) | - | ||||||||||||
497 | { | - | ||||||||||||
498 | do { if (!(expression.isValid())) qt_assert("expression.isValid()",__FILE__,552562); } while (0); | - | ||||||||||||
499 | - | |||||||||||||
500 | QTest::IgnoreResultList::append(QTest::ignoreResultList, type, QVariant(expression)); | - | ||||||||||||
501 | } | - | ||||||||||||
502 | - | |||||||||||||
503 | - | |||||||||||||
504 | void QTestLog::setMaxWarnings(int m) | - | ||||||||||||
505 | { | - | ||||||||||||
506 | QTest::maxWarnings = m <= 0 ? 2147483647 : m + 2; | - | ||||||||||||
507 | } | - | ||||||||||||
508 | - | |||||||||||||
509 | bool QTestLog::printAvailableTags = false; | - | ||||||||||||
510 | - | |||||||||||||
511 | void QTestLog::setPrintAvailableTagsMode() | - | ||||||||||||
512 | { | - | ||||||||||||
513 | printAvailableTags = true; | - | ||||||||||||
514 | } | - | ||||||||||||
515 | - | |||||||||||||
516 | int QTestLog::passCount() | - | ||||||||||||
517 | { | - | ||||||||||||
518 | return QTest::passes; | - | ||||||||||||
519 | } | - | ||||||||||||
520 | - | |||||||||||||
521 | int QTestLog::failCount() | - | ||||||||||||
522 | { | - | ||||||||||||
523 | return QTest::fails; | - | ||||||||||||
524 | } | - | ||||||||||||
525 | - | |||||||||||||
526 | int QTestLog::skipCount() | - | ||||||||||||
527 | { | - | ||||||||||||
528 | return QTest::skips; | - | ||||||||||||
529 | } | - | ||||||||||||
530 | - | |||||||||||||
531 | int QTestLog::blacklistCount() | - | ||||||||||||
532 | { | - | ||||||||||||
533 | return QTest::blacklists; | - | ||||||||||||
534 | } | - | ||||||||||||
535 | - | |||||||||||||
536 | void QTestLog::resetCounters() | - | ||||||||||||
537 | { | - | ||||||||||||
538 | QTest::passes = 0; | - | ||||||||||||
539 | QTest::fails = 0; | - | ||||||||||||
540 | QTest::skips = 0; | - | ||||||||||||
541 | } | - | ||||||||||||
542 | - | |||||||||||||
543 | void QTestLog::setInstalledTestCoverage(bool installed) | - | ||||||||||||
544 | { | - | ||||||||||||
545 | QTest::installedTestCoverage = installed; | - | ||||||||||||
546 | } | - | ||||||||||||
547 | - | |||||||||||||
548 | bool QTestLog::installedTestCoverage() | - | ||||||||||||
549 | { | - | ||||||||||||
550 | return QTest::installedTestCoverage; | - | ||||||||||||
551 | } | - | ||||||||||||
552 | - | |||||||||||||
553 | qint64 QTestLog::nsecsTotalTime() | - | ||||||||||||
554 | { | - | ||||||||||||
555 | return elapsedTotalTime.nsecsElapsed(); | - | ||||||||||||
556 | } | - | ||||||||||||
557 | - | |||||||||||||
558 | qint64 QTestLog::nsecsFunctionTime() | - | ||||||||||||
559 | { | - | ||||||||||||
560 | return elapsedFunctionTime.nsecsElapsed(); | - | ||||||||||||
561 | } | - | ||||||||||||
562 | - | |||||||||||||
563 | - | |||||||||||||
Switch to Source code | Preprocessed file |