| line |
true |
false |
branch |
|
30
|
0 |
0 |
if (result.isOk()) printIssue(" # TODO"); |
|
|
0 |
0 |
if (result.isOk()) printIssue(" # TODO"); |
|
|
0 |
0 |
if (result.isOk()) printIssue(" # TODO"); |
|
34
|
0 |
0 |
printIssue("unexpected exception "); |
|
|
0 |
0 |
printIssue("unexpected exception "); |
|
39
|
0 |
0 |
printIssue("fatal error condition with message:"); |
|
|
0 |
0 |
printIssue("fatal error condition with message:"); |
|
45
|
0 |
0 |
printIssue("expected exception, got none"); |
|
|
0 |
0 |
printIssue("expected exception, got none"); |
|
60
|
0 |
0 |
printIssue("explicitly"); |
|
|
0 |
0 |
printIssue("explicitly"); |
|
75
|
3 |
132 |
while (pos < expr.length()) { |
|
86
|
0 |
0 |
if (!result.hasExpression()) return; |
|
92
|
50 |
0 |
if (result.hasExpression()) stream << " " << result.getExpression(); |
|
|
50 |
0 |
if (result.hasExpression()) stream << " " << result.getExpression(); |
|
|
50 |
0 |
if (result.hasExpression()) stream << " " << result.getExpression(); |
|
96
|
50 |
0 |
if (!result.hasExpandedExpression()) return; |
|
|
17 |
33 |
if (!result.hasExpandedExpression()) return; |
|
97
|
33 |
0 |
stream << " for: "; |
|
98
|
33 |
0 |
string expr = result.getExpandedExpression(); |
|
100
|
33 |
0 |
expr_replace(expr, "\"\r\n==\r\n\"", "\" == \""); |
|
|
33 |
0 |
expr_replace(expr, "\"\r\n==\r\n\"", "\" == \""); |
|
|
33 |
0 |
expr_replace(expr, "\"\r\n==\r\n\"", "\" == \""); |
|
101
|
33 |
0 |
expr_replace(expr, "\"\n==\n\"", "\" == \""); |
|
|
33 |
0 |
expr_replace(expr, "\"\n==\n\"", "\" == \""); |
|
|
33 |
0 |
expr_replace(expr, "\"\n==\n\"", "\" == \""); |
|
103
|
33 |
0 |
expr_replace(expr, "\r", "\\r"); |
|
|
33 |
0 |
expr_replace(expr, "\r", "\\r"); |
|
|
33 |
0 |
expr_replace(expr, "\r", "\\r"); |
|
104
|
33 |
0 |
expr_replace(expr, "\n", "\\n"); |
|
|
33 |
0 |
expr_replace(expr, "\n", "\\n"); |
|
|
33 |
0 |
expr_replace(expr, "\n", "\\n"); |
|
105
|
33 |
0 |
stream << expr; |
|
109
|
0 |
0 |
if (itMessage != messages.end()) { |
|
116
|
50 |
0 |
if (itMessage == messages.cend()) return; |
|
120
|
0 |
0 |
const size_t N = static_cast(std::distance(itMessage, itEnd)); |
|
122
|
0 |
0 |
stream << " with " << pluralise( N, "message" ) << ":"; |
|
|
0 |
0 |
stream << " with " << pluralise( N, "message" ) << ":"; |
|
|
0 |
0 |
stream << " with " << pluralise( N, "message" ) << ":"; |
|
|
0 |
0 |
stream << " with " << pluralise( N, "message" ) << ":"; |
|
|
0 |
0 |
stream << " with " << pluralise( N, "message" ) << ":"; |
|
124
|
0 |
0 |
for (; itMessage != itEnd; ++itMessage) { |
|
126
|
0 |
0 |
if (itMessage->type != ResultWas::Info) { |
|
127
|
0 |
0 |
stream << "\n# " << itMessage->message; |
|
|
0 |
0 |
stream << "\n# " << itMessage->message; |
|
139
|
0 |
5 |
struct PerlReporter : IStreamingReporter { |
|
140
|
5 |
0 |
struct Scope { |
|
149
|
0 |
0 |
static string getDescription () { return "Reports test results in perl test-harness compatible format"; } |
|
152
|
5 |
0 |
: scope(), sliding_scope(), fatal(), config(_config.fullConfig()), stream(_config.stream()) |
|
|
5 |
0 |
: scope(), sliding_scope(), fatal(), config(_config.fullConfig()), stream(_config.stream()) |
|
184
|
0 |
13 |
if (fatal) { |
|
192
|
21 |
22 |
if (sliding_scope && sliding_scope->name == info.name) { |
|
|
12 |
9 |
if (sliding_scope && sliding_scope->name == info.name) { |
|
|
12 |
31 |
if (sliding_scope && sliding_scope->name == info.name) { |
|
201
|
31 |
0 |
startLine(); |
|
202
|
18 |
13 |
auto fullname = scope->fullname.length() ? (scope->fullname + " / " + info.name) : info.name; |
|
|
18 |
0 |
auto fullname = scope->fullname.length() ? (scope->fullname + " / " + info.name) : info.name; |
|
|
18 |
0 |
auto fullname = scope->fullname.length() ? (scope->fullname + " / " + info.name) : info.name; |
|
|
13 |
0 |
auto fullname = scope->fullname.length() ? (scope->fullname + " / " + info.name) : info.name; |
|
|
18 |
13 |
auto fullname = scope->fullname.length() ? (scope->fullname + " / " + info.name) : info.name; |
|
|
0 |
0 |
auto fullname = scope->fullname.length() ? (scope->fullname + " / " + info.name) : info.name; |
|
203
|
31 |
0 |
stream << "# Subtest: " << fullname << endl; |
|
|
31 |
0 |
stream << "# Subtest: " << fullname << endl; |
|
|
31 |
0 |
stream << "# Subtest: " << fullname << endl; |
|
204
|
31 |
0 |
scopes.push_back({0, 0, scope->depth + 1, info.name, fullname}); |
|
|
31 |
0 |
scopes.push_back({0, 0, scope->depth + 1, info.name, fullname}); |
|
|
31 |
0 |
scopes.push_back({0, 0, scope->depth + 1, info.name, fullname}); |
|
209
|
0 |
43 |
if (fatal) return; |
|
210
|
22 |
21 |
if (!sliding_scope) sliding_scope = scope + 1; |
|
212
|
22 |
21 |
if (sliding_scope == &scopes[1]) commitAssertions(); |
|
216
|
22 |
22 |
if (!sliding_scope) return; |
|
218
|
31 |
22 |
while (cnt--) closeCurrentScope(); |
|
223
|
31 |
0 |
auto name = scope->fullname; |
|
225
|
31 |
0 |
startLine() << "1.." << scope->count << endl; |
|
|
31 |
0 |
startLine() << "1.." << scope->count << endl; |
|
|
31 |
0 |
startLine() << "1.." << scope->count << endl; |
|
|
31 |
0 |
startLine() << "1.." << scope->count << endl; |
|
226
|
0 |
31 |
if (scope->failed) { |
|
227
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
|
0 |
0 |
startErrorLine() << "# Looks like you failed " << scope->failed << " test of " << scope->count << " at [" << name << "]." << endl; |
|
231
|
0 |
31 |
if (scopes.empty()) throw "WTF?"; |
|
235
|
31 |
0 |
startLine(); |
|
236
|
0 |
31 |
if (failed) { |
|
238
|
0 |
0 |
stream << "not ok"; |
|
240
|
31 |
0 |
else stream << "ok"; |
|
241
|
31 |
0 |
stream << " " << scope->count << " - [" << name << "]" << endl; |
|
|
31 |
0 |
stream << " " << scope->count << " - [" << name << "]" << endl; |
|
|
31 |
0 |
stream << " " << scope->count << " - [" << name << "]" << endl; |
|
|
31 |
0 |
stream << " " << scope->count << " - [" << name << "]" << endl; |
|
|
31 |
0 |
stream << " " << scope->count << " - [" << name << "]" << endl; |
|
|
31 |
0 |
stream << " " << scope->count << " - [" << name << "]" << endl; |
|
245
|
353 |
143 |
for (size_t i = 0; i < scope->depth; ++i) stream << " "; |
|
250
|
0 |
0 |
for (size_t i = 0; i < scope->depth; ++i) std::cerr << " "; |
|
257
|
50 |
0 |
ostringstream s; |
|
258
|
50 |
0 |
Printer(s, stats).print(); |
|
|
50 |
0 |
Printer(s, stats).print(); |
|
259
|
50 |
0 |
assertions.push_back({stats, s.str()}); |
|
|
50 |
0 |
assertions.push_back({stats, s.str()}); |
|
|
50 |
0 |
assertions.push_back({stats, s.str()}); |
|
264
|
50 |
22 |
for (auto& row : assertions) { |
|
266
|
50 |
0 |
auto result = stats.assertionResult; |
|
268
|
50 |
0 |
bool is_test = result.getResultType() != ResultWas::Info && result.getResultType() != ResultWas::Warning; |
|
|
50 |
0 |
bool is_test = result.getResultType() != ResultWas::Info && result.getResultType() != ResultWas::Warning; |
|
|
50 |
0 |
bool is_test = result.getResultType() != ResultWas::Info && result.getResultType() != ResultWas::Warning; |
|
|
50 |
0 |
bool is_test = result.getResultType() != ResultWas::Info && result.getResultType() != ResultWas::Warning; |
|
271
|
50 |
0 |
ostream& ss = result.succeeded() ? startLine() : startErrorLine(); |
|
|
50 |
0 |
ostream& ss = result.succeeded() ? startLine() : startErrorLine(); |
|
|
50 |
0 |
ostream& ss = result.succeeded() ? startLine() : startErrorLine(); |
|
|
0 |
0 |
ostream& ss = result.succeeded() ? startLine() : startErrorLine(); |
|
273
|
50 |
0 |
if (is_test) { |
|
275
|
50 |
0 |
if (result.succeeded()) { |
|
|
50 |
0 |
if (result.succeeded()) { |
|
276
|
50 |
0 |
ss << "ok"; |
|
279
|
0 |
0 |
ss << "not ok"; |
|
282
|
50 |
0 |
ss << " " << scope->count << " -"; |
|
|
50 |
0 |
ss << " " << scope->count << " -"; |
|
|
50 |
0 |
ss << " " << scope->count << " -"; |
|
286
|
50 |
0 |
Colour cg(color); (void)cg; |
|
287
|
50 |
0 |
ss << row.expr; |
|
288
|
50 |
0 |
ss << " # at " << result.getSourceInfo(); |
|
|
50 |
0 |
ss << " # at " << result.getSourceInfo(); |
|
|
50 |
0 |
ss << " # at " << result.getSourceInfo(); |
|
291
|
50 |
0 |
ss << endl; |
|
293
|
50 |
0 |
if (is_test && !result.succeeded()) { |
|
|
50 |
0 |
if (is_test && !result.succeeded()) { |
|
|
0 |
50 |
if (is_test && !result.succeeded()) { |
|
|
0 |
50 |
if (is_test && !result.succeeded()) { |
|
294
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
|
0 |
0 |
startErrorLine() << "#\e[1;31m Failed test in section [" << scope->fullname << "] at " << result.getSourceInfo() << "\e[0m" << endl; |
|
310
|
12 |
0 |
struct AData { |
|
327
|
1 |
0 |
CATCH_REGISTER_REPORTER("perl", PerlReporter); |
|
|
1 |
0 |
CATCH_REGISTER_REPORTER("perl", PerlReporter); |
|
335
|
5 |
0 |
std::vector argv = {"test"}; |
|
337
|
4 |
5 |
for (int i = 3; i < items; ++i) { |
|
339
|
0 |
4 |
if (!SvOK(arg)) continue; |
|
|
0 |
0 |
if (!SvOK(arg)) continue; |
|
|
0 |
0 |
if (!SvOK(arg)) continue; |
|
340
|
4 |
0 |
argv.push_back(SvPV_nolen(arg)); |
|
|
0 |
0 |
argv.push_back(SvPV_nolen(arg)); |
|
|
4 |
0 |
argv.push_back(SvPV_nolen(arg)); |
|
343
|
5 |
0 |
argv.push_back("-i"); |
|
345
|
5 |
0 |
session.useConfigData({}); |
|
346
|
5 |
0 |
err = session.applyCommandLine(argv.size(), argv.data()); |
|
348
|
0 |
5 |
if (err) croak("session.applyCommandLine: error %d", err); |
|
350
|
0 |
5 |
PerlReporter::context.count = SvUV(count); |
|
351
|
0 |
5 |
PerlReporter::context.failed = SvUV(failed); |