Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/testlib/qteamcitylogger.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||
6 | - | |||||||||||||||||||||||||
7 | - | |||||||||||||||||||||||||
8 | namespace QTest { | - | ||||||||||||||||||||||||
9 | - | |||||||||||||||||||||||||
10 | static const char *incidentType2String(QAbstractTestLogger::IncidentTypes type) | - | ||||||||||||||||||||||||
11 | { | - | ||||||||||||||||||||||||
12 | switch (type) { | - | ||||||||||||||||||||||||
13 | case never executed: QAbstractTestLogger::Pass:case QAbstractTestLogger::Pass: never executed: case QAbstractTestLogger::Pass: | 0 | ||||||||||||||||||||||||
14 | return never executed: "PASS";return "PASS"; never executed: return "PASS"; | 0 | ||||||||||||||||||||||||
15 | case executed 75 times by 1 test: QAbstractTestLogger::XFail:case QAbstractTestLogger::XFail: Executed by:
executed 75 times by 1 test: case QAbstractTestLogger::XFail: Executed by:
| 75 | ||||||||||||||||||||||||
16 | return executed 75 times by 1 test: "XFAIL";return "XFAIL"; Executed by:
executed 75 times by 1 test: return "XFAIL"; Executed by:
| 75 | ||||||||||||||||||||||||
17 | case never executed: QAbstractTestLogger::Fail:case QAbstractTestLogger::Fail: never executed: case QAbstractTestLogger::Fail: | 0 | ||||||||||||||||||||||||
18 | return never executed: "FAIL!";return "FAIL!"; never executed: return "FAIL!"; | 0 | ||||||||||||||||||||||||
19 | case never executed: QAbstractTestLogger::XPass:case QAbstractTestLogger::XPass: never executed: case QAbstractTestLogger::XPass: | 0 | ||||||||||||||||||||||||
20 | return never executed: "XPASS";return "XPASS"; never executed: return "XPASS"; | 0 | ||||||||||||||||||||||||
21 | case never executed: QAbstractTestLogger::BlacklistedPass:case QAbstractTestLogger::BlacklistedPass: never executed: case QAbstractTestLogger::BlacklistedPass: | 0 | ||||||||||||||||||||||||
22 | return never executed: "BPASS";return "BPASS"; never executed: return "BPASS"; | 0 | ||||||||||||||||||||||||
23 | case never executed: QAbstractTestLogger::BlacklistedFail:case QAbstractTestLogger::BlacklistedFail: never executed: case QAbstractTestLogger::BlacklistedFail: | 0 | ||||||||||||||||||||||||
24 | return never executed: "BFAIL";return "BFAIL"; never executed: return "BFAIL"; | 0 | ||||||||||||||||||||||||
25 | } | - | ||||||||||||||||||||||||
26 | return never executed: "??????";return "??????"; never executed: return "??????"; | 0 | ||||||||||||||||||||||||
27 | } | - | ||||||||||||||||||||||||
28 | - | |||||||||||||||||||||||||
29 | static const char *messageType2String(QAbstractTestLogger::MessageTypes type) | - | ||||||||||||||||||||||||
30 | { | - | ||||||||||||||||||||||||
31 | switch (type) { | - | ||||||||||||||||||||||||
32 | case never executed: QAbstractTestLogger::Skip:case QAbstractTestLogger::Skip: never executed: case QAbstractTestLogger::Skip: | 0 | ||||||||||||||||||||||||
33 | return never executed: "SKIP";return "SKIP"; never executed: return "SKIP"; | 0 | ||||||||||||||||||||||||
34 | case executed 10 times by 1 test: QAbstractTestLogger::Warn:case QAbstractTestLogger::Warn: Executed by:
executed 10 times by 1 test: case QAbstractTestLogger::Warn: Executed by:
| 10 | ||||||||||||||||||||||||
35 | return executed 10 times by 1 test: "WARNING";return "WARNING"; Executed by:
executed 10 times by 1 test: return "WARNING"; Executed by:
| 10 | ||||||||||||||||||||||||
36 | case executed 10020 times by 1 test: QAbstractTestLogger::QWarning:case QAbstractTestLogger::QWarning: Executed by:
executed 10020 times by 1 test: case QAbstractTestLogger::QWarning: Executed by:
| 10020 | ||||||||||||||||||||||||
37 | return executed 10020 times by 1 test: "QWARN";return "QWARN"; Executed by:
executed 10020 times by 1 test: return "QWARN"; Executed by:
| 10020 | ||||||||||||||||||||||||
38 | case executed 448 times by 1 test: QAbstractTestLogger::QDebug:case QAbstractTestLogger::QDebug: Executed by:
executed 448 times by 1 test: case QAbstractTestLogger::QDebug: Executed by:
| 448 | ||||||||||||||||||||||||
39 | return executed 448 times by 1 test: "QDEBUG";return "QDEBUG"; Executed by:
executed 448 times by 1 test: return "QDEBUG"; Executed by:
| 448 | ||||||||||||||||||||||||
40 | case executed 10 times by 1 test: QAbstractTestLogger::QInfo:case QAbstractTestLogger::QInfo: Executed by:
executed 10 times by 1 test: case QAbstractTestLogger::QInfo: Executed by:
| 10 | ||||||||||||||||||||||||
41 | return executed 10 times by 1 test: "QINFO";return "QINFO"; Executed by:
executed 10 times by 1 test: return "QINFO"; Executed by:
| 10 | ||||||||||||||||||||||||
42 | case executed 5 times by 1 test: QAbstractTestLogger::QSystem:case QAbstractTestLogger::QSystem: Executed by:
executed 5 times by 1 test: case QAbstractTestLogger::QSystem: Executed by:
| 5 | ||||||||||||||||||||||||
43 | return executed 5 times by 1 test: "QSYSTEM";return "QSYSTEM"; Executed by:
executed 5 times by 1 test: return "QSYSTEM"; Executed by:
| 5 | ||||||||||||||||||||||||
44 | case executed 10 times by 1 test: QAbstractTestLogger::QFatal:case QAbstractTestLogger::QFatal: Executed by:
executed 10 times by 1 test: case QAbstractTestLogger::QFatal: Executed by:
| 10 | ||||||||||||||||||||||||
45 | return executed 10 times by 1 test: "QFATAL";return "QFATAL"; Executed by:
executed 10 times by 1 test: return "QFATAL"; Executed by:
| 10 | ||||||||||||||||||||||||
46 | case executed 155 times by 1 test: QAbstractTestLogger::Info:case QAbstractTestLogger::Info: Executed by:
executed 155 times by 1 test: case QAbstractTestLogger::Info: Executed by:
| 155 | ||||||||||||||||||||||||
47 | return executed 155 times by 1 test: "INFO";return "INFO"; Executed by:
executed 155 times by 1 test: return "INFO"; Executed by:
| 155 | ||||||||||||||||||||||||
48 | } | - | ||||||||||||||||||||||||
49 | return never executed: "??????";return "??????"; never executed: return "??????"; | 0 | ||||||||||||||||||||||||
50 | } | - | ||||||||||||||||||||||||
51 | } | - | ||||||||||||||||||||||||
52 | - | |||||||||||||||||||||||||
53 | QTeamCityLogger::QTeamCityLogger(const char *filename) | - | ||||||||||||||||||||||||
54 | : QAbstractTestLogger(filename) | - | ||||||||||||||||||||||||
55 | { | - | ||||||||||||||||||||||||
56 | } executed 146 times by 1 test: end of block Executed by:
| 146 | ||||||||||||||||||||||||
57 | - | |||||||||||||||||||||||||
58 | QTeamCityLogger::~QTeamCityLogger() | - | ||||||||||||||||||||||||
59 | { | - | ||||||||||||||||||||||||
60 | } | - | ||||||||||||||||||||||||
61 | - | |||||||||||||||||||||||||
62 | void QTeamCityLogger::startLogging() | - | ||||||||||||||||||||||||
63 | { | - | ||||||||||||||||||||||||
64 | QAbstractTestLogger::startLogging(); | - | ||||||||||||||||||||||||
65 | - | |||||||||||||||||||||||||
66 | QString testSuiteName = tcEscapedString(QString::fromUtf8(QTestResult::currentTestObjectName())); | - | ||||||||||||||||||||||||
67 | - | |||||||||||||||||||||||||
68 | QString str = QString(QLatin1String("##teamcity[testSuiteStarted name='%1']\n")).arg(testSuiteName); | - | ||||||||||||||||||||||||
69 | outputString(QString(str).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
70 | } executed 146 times by 1 test: end of block Executed by:
| 146 | ||||||||||||||||||||||||
71 | - | |||||||||||||||||||||||||
72 | void QTeamCityLogger::stopLogging() | - | ||||||||||||||||||||||||
73 | { | - | ||||||||||||||||||||||||
74 | QString testSuiteName = tcEscapedString(QString::fromUtf8(QTestResult::currentTestObjectName())); | - | ||||||||||||||||||||||||
75 | - | |||||||||||||||||||||||||
76 | QString str = QString(QLatin1String("##teamcity[testSuiteFinished name='%1']\n")).arg(testSuiteName); | - | ||||||||||||||||||||||||
77 | outputString(QString(str).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
78 | - | |||||||||||||||||||||||||
79 | QAbstractTestLogger::stopLogging(); | - | ||||||||||||||||||||||||
80 | } executed 146 times by 1 test: end of block Executed by:
| 146 | ||||||||||||||||||||||||
81 | - | |||||||||||||||||||||||||
82 | void QTeamCityLogger::enterTestFunction(const char * ) | - | ||||||||||||||||||||||||
83 | { | - | ||||||||||||||||||||||||
84 | - | |||||||||||||||||||||||||
85 | } | - | ||||||||||||||||||||||||
86 | - | |||||||||||||||||||||||||
87 | void QTeamCityLogger::leaveTestFunction() | - | ||||||||||||||||||||||||
88 | { | - | ||||||||||||||||||||||||
89 | - | |||||||||||||||||||||||||
90 | } | - | ||||||||||||||||||||||||
91 | - | |||||||||||||||||||||||||
92 | void QTeamCityLogger::addIncident(IncidentTypes type, const char *description, | - | ||||||||||||||||||||||||
93 | const char *file, int line) | - | ||||||||||||||||||||||||
94 | { | - | ||||||||||||||||||||||||
95 | - | |||||||||||||||||||||||||
96 | if ((type == QAbstractTestLogger::Pass
| 0-962 | ||||||||||||||||||||||||
97 | return; never executed: return; | 0 | ||||||||||||||||||||||||
98 | - | |||||||||||||||||||||||||
99 | QString buf; | - | ||||||||||||||||||||||||
100 | - | |||||||||||||||||||||||||
101 | QString tmpFuncName = escapedTestFuncName(); | - | ||||||||||||||||||||||||
102 | - | |||||||||||||||||||||||||
103 | if (tmpFuncName != currTestFuncName
| 80-1418 | ||||||||||||||||||||||||
104 | buf = QString(QLatin1String("##teamcity[testStarted name='%1']\n")).arg(tmpFuncName); | - | ||||||||||||||||||||||||
105 | outputString(QString(buf).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
106 | } executed 1418 times by 1 test: end of block Executed by:
| 1418 | ||||||||||||||||||||||||
107 | - | |||||||||||||||||||||||||
108 | currTestFuncName = tmpFuncName; | - | ||||||||||||||||||||||||
109 | - | |||||||||||||||||||||||||
110 | if (type == QAbstractTestLogger::XFail
| 75-1423 | ||||||||||||||||||||||||
111 | addPendingMessage(QTest::incidentType2String(type), QString::fromUtf8(description), file, line); | - | ||||||||||||||||||||||||
112 | return; executed 75 times by 1 test: return; Executed by:
| 75 | ||||||||||||||||||||||||
113 | } | - | ||||||||||||||||||||||||
114 | - | |||||||||||||||||||||||||
115 | QString detailedText = QString::fromUtf8(description); | - | ||||||||||||||||||||||||
116 | detailedText = tcEscapedString(detailedText); | - | ||||||||||||||||||||||||
117 | - | |||||||||||||||||||||||||
118 | - | |||||||||||||||||||||||||
119 | if ((
| 20-907 | ||||||||||||||||||||||||
120 | QString messageText(QLatin1String("Failure!")); | - | ||||||||||||||||||||||||
121 | - | |||||||||||||||||||||||||
122 | if (file
| 34-502 | ||||||||||||||||||||||||
123 | messageText += QString(QLatin1String(" |[Loc: %1(%2)|]")).arg(QString::fromUtf8(file)).arg(line); executed 502 times by 1 test: messageText += QString(QLatin1String(" |[Loc: %1(%2)|]")).arg(QString::fromUtf8(file)).arg(line); Executed by:
| 502 | ||||||||||||||||||||||||
124 | - | |||||||||||||||||||||||||
125 | buf = QString(QLatin1String("##teamcity[testFailed name='%1' message='%2' details='%3']\n")) | - | ||||||||||||||||||||||||
126 | .arg(tmpFuncName) | - | ||||||||||||||||||||||||
127 | .arg(messageText) | - | ||||||||||||||||||||||||
128 | .arg(detailedText); | - | ||||||||||||||||||||||||
129 | - | |||||||||||||||||||||||||
130 | outputString(QString(buf).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
131 | } executed 536 times by 1 test: end of block Executed by:
| 536 | ||||||||||||||||||||||||
132 | - | |||||||||||||||||||||||||
133 | if (!pendingMessages.isEmpty()
| 378-1045 | ||||||||||||||||||||||||
134 | buf = QString(QLatin1String("##teamcity[testStdOut name='%1' out='%2']\n")) | - | ||||||||||||||||||||||||
135 | .arg(tmpFuncName) | - | ||||||||||||||||||||||||
136 | .arg(pendingMessages); | - | ||||||||||||||||||||||||
137 | - | |||||||||||||||||||||||||
138 | outputString(QString(buf).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
139 | - | |||||||||||||||||||||||||
140 | pendingMessages.clear(); | - | ||||||||||||||||||||||||
141 | } executed 378 times by 1 test: end of block Executed by:
| 378 | ||||||||||||||||||||||||
142 | - | |||||||||||||||||||||||||
143 | buf = QString(QLatin1String("##teamcity[testFinished name='%1']\n")).arg(tmpFuncName); | - | ||||||||||||||||||||||||
144 | outputString(QString(buf).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
145 | } executed 1423 times by 1 test: end of block Executed by:
| 1423 | ||||||||||||||||||||||||
146 | - | |||||||||||||||||||||||||
147 | void QTeamCityLogger::addBenchmarkResult(const QBenchmarkResult &) | - | ||||||||||||||||||||||||
148 | { | - | ||||||||||||||||||||||||
149 | - | |||||||||||||||||||||||||
150 | } | - | ||||||||||||||||||||||||
151 | - | |||||||||||||||||||||||||
152 | void QTeamCityLogger::addMessage(MessageTypes type, const QString &message, | - | ||||||||||||||||||||||||
153 | const char *file, int line) | - | ||||||||||||||||||||||||
154 | { | - | ||||||||||||||||||||||||
155 | - | |||||||||||||||||||||||||
156 | if (type != QAbstractTestLogger::QFatal
| 0-10833 | ||||||||||||||||||||||||
157 | return; never executed: return; | 0 | ||||||||||||||||||||||||
158 | - | |||||||||||||||||||||||||
159 | QString escapedMessage = tcEscapedString(message); | - | ||||||||||||||||||||||||
160 | - | |||||||||||||||||||||||||
161 | QString buf; | - | ||||||||||||||||||||||||
162 | - | |||||||||||||||||||||||||
163 | if (type == QAbstractTestLogger::Skip
| 185-10658 | ||||||||||||||||||||||||
164 | if (file
| 0-185 | ||||||||||||||||||||||||
165 | escapedMessage.append(QString(QLatin1String(" |[Loc: %1(%2)|]")).arg(QString::fromUtf8(file)).arg(line)); executed 185 times by 1 test: escapedMessage.append(QString(QLatin1String(" |[Loc: %1(%2)|]")).arg(QString::fromUtf8(file)).arg(line)); Executed by:
| 185 | ||||||||||||||||||||||||
166 | - | |||||||||||||||||||||||||
167 | buf = QString(QLatin1String("##teamcity[testIgnored name='%1' message='%2']\n")) | - | ||||||||||||||||||||||||
168 | .arg(escapedTestFuncName()) | - | ||||||||||||||||||||||||
169 | .arg(escapedMessage); | - | ||||||||||||||||||||||||
170 | - | |||||||||||||||||||||||||
171 | outputString(QString(buf).toLocal8Bit().constData()); | - | ||||||||||||||||||||||||
172 | } executed 185 times by 1 test: end of block Executed by:
| 185 | ||||||||||||||||||||||||
173 | else { | - | ||||||||||||||||||||||||
174 | addPendingMessage(QTest::messageType2String(type), escapedMessage, file, line); | - | ||||||||||||||||||||||||
175 | } executed 10658 times by 1 test: end of block Executed by:
| 10658 | ||||||||||||||||||||||||
176 | } | - | ||||||||||||||||||||||||
177 | - | |||||||||||||||||||||||||
178 | QString QTeamCityLogger::tcEscapedString(const QString &str) const | - | ||||||||||||||||||||||||
179 | { | - | ||||||||||||||||||||||||
180 | QString formattedString; | - | ||||||||||||||||||||||||
181 | - | |||||||||||||||||||||||||
182 | for (int i = 0; i < str.length()
| 14241-144034 | ||||||||||||||||||||||||
183 | QChar ch = str.at(i); | - | ||||||||||||||||||||||||
184 | - | |||||||||||||||||||||||||
185 | switch (ch.toLatin1()) { | - | ||||||||||||||||||||||||
186 | case executed 380 times by 1 test: '\n':case '\n': Executed by:
executed 380 times by 1 test: case '\n': Executed by:
| 380 | ||||||||||||||||||||||||
187 | formattedString.append(QLatin1Literal("|n")); | - | ||||||||||||||||||||||||
188 | break; executed 380 times by 1 test: break; Executed by:
| 380 | ||||||||||||||||||||||||
189 | case never executed: '\r':case '\r': never executed: case '\r': | 0 | ||||||||||||||||||||||||
190 | formattedString.append(QLatin1Literal("|r")); | - | ||||||||||||||||||||||||
191 | break; never executed: break; | 0 | ||||||||||||||||||||||||
192 | case never executed: '|':case '|': never executed: case '|': | 0 | ||||||||||||||||||||||||
193 | formattedString.append(QLatin1Literal("||")); | - | ||||||||||||||||||||||||
194 | break; never executed: break; | 0 | ||||||||||||||||||||||||
195 | case executed 10 times by 1 test: '[':case '[': Executed by:
executed 10 times by 1 test: case '[': Executed by:
| 10 | ||||||||||||||||||||||||
196 | formattedString.append(QLatin1Literal("|[")); | - | ||||||||||||||||||||||||
197 | break; executed 10 times by 1 test: break; Executed by:
| 10 | ||||||||||||||||||||||||
198 | case executed 130 times by 1 test: ']':case ']': Executed by:
executed 130 times by 1 test: case ']': Executed by:
| 130 | ||||||||||||||||||||||||
199 | formattedString.append(QLatin1Literal("|]")); | - | ||||||||||||||||||||||||
200 | break; executed 130 times by 1 test: break; Executed by:
| 130 | ||||||||||||||||||||||||
201 | case executed 420 times by 1 test: '\'':case '\'': Executed by:
executed 420 times by 1 test: case '\'': Executed by:
| 420 | ||||||||||||||||||||||||
202 | formattedString.append(QLatin1Literal("|'")); | - | ||||||||||||||||||||||||
203 | break; executed 420 times by 1 test: break; Executed by:
| 420 | ||||||||||||||||||||||||
204 | default executed 143094 times by 1 test: :default: Executed by:
executed 143094 times by 1 test: default: Executed by:
| 143094 | ||||||||||||||||||||||||
205 | formattedString.append(ch); | - | ||||||||||||||||||||||||
206 | } executed 143094 times by 1 test: end of block Executed by:
| 143094 | ||||||||||||||||||||||||
207 | } | - | ||||||||||||||||||||||||
208 | - | |||||||||||||||||||||||||
209 | return executed 14241 times by 1 test: std::move(formattedString).simplified();return std::move(formattedString).simplified(); Executed by:
executed 14241 times by 1 test: return std::move(formattedString).simplified(); Executed by:
| 14241 | ||||||||||||||||||||||||
210 | } | - | ||||||||||||||||||||||||
211 | - | |||||||||||||||||||||||||
212 | QString QTeamCityLogger::escapedTestFuncName() const | - | ||||||||||||||||||||||||
213 | { | - | ||||||||||||||||||||||||
214 | const char *fn = QTestResult::currentTestFunction()
| 0-1683 | ||||||||||||||||||||||||
215 | : "UnknownTestFunc"; | - | ||||||||||||||||||||||||
216 | const char *tag = QTestResult::currentDataTag()
| 613-1070 | ||||||||||||||||||||||||
217 | - | |||||||||||||||||||||||||
218 | QString str = QString(QLatin1String("%1(%2)")).arg(QString::fromUtf8(fn)).arg(QString::fromUtf8(tag)); | - | ||||||||||||||||||||||||
219 | str = tcEscapedString(str); | - | ||||||||||||||||||||||||
220 | - | |||||||||||||||||||||||||
221 | return executed 1683 times by 1 test: str;return str; Executed by:
executed 1683 times by 1 test: return str; Executed by:
| 1683 | ||||||||||||||||||||||||
222 | } | - | ||||||||||||||||||||||||
223 | - | |||||||||||||||||||||||||
224 | void QTeamCityLogger::addPendingMessage(const char *type, const QString &msg, const char *file, int line) | - | ||||||||||||||||||||||||
225 | { | - | ||||||||||||||||||||||||
226 | QString pendMessage; | - | ||||||||||||||||||||||||
227 | - | |||||||||||||||||||||||||
228 | if (!pendingMessages.isEmpty()
| 378-10355 | ||||||||||||||||||||||||
229 | pendMessage += QLatin1String("|n"); executed 10355 times by 1 test: pendMessage += QLatin1String("|n"); Executed by:
| 10355 | ||||||||||||||||||||||||
230 | - | |||||||||||||||||||||||||
231 | if (file
| 205-10528 | ||||||||||||||||||||||||
232 | pendMessage += QString(QLatin1String("%1 |[Loc: %2(%3)|]: %4")) | - | ||||||||||||||||||||||||
233 | .arg(QString::fromUtf8(type)) | - | ||||||||||||||||||||||||
234 | .arg(QString::fromUtf8(file)) | - | ||||||||||||||||||||||||
235 | .arg(line) | - | ||||||||||||||||||||||||
236 | .arg(msg); | - | ||||||||||||||||||||||||
237 | - | |||||||||||||||||||||||||
238 | } executed 205 times by 1 test: end of block Executed by:
| 205 | ||||||||||||||||||||||||
239 | else { | - | ||||||||||||||||||||||||
240 | pendMessage += QString(QLatin1String("%1: %2")) | - | ||||||||||||||||||||||||
241 | .arg(QString::fromUtf8(type)) | - | ||||||||||||||||||||||||
242 | .arg(msg); | - | ||||||||||||||||||||||||
243 | } executed 10528 times by 1 test: end of block Executed by:
| 10528 | ||||||||||||||||||||||||
244 | - | |||||||||||||||||||||||||
245 | pendingMessages.append(pendMessage); | - | ||||||||||||||||||||||||
246 | } executed 10733 times by 1 test: end of block Executed by:
| 10733 | ||||||||||||||||||||||||
247 | - | |||||||||||||||||||||||||
248 | - | |||||||||||||||||||||||||
Switch to Source code | Preprocessed file |