mirror of
https://github.com/dorny/test-reporter.git
synced 2025-12-16 06:17:10 +01:00
Improve test error messages from flutter
For some reason the error message from flutter SDK might contain no useful information. Basically it just says that test failed and you should see the logs. Logs itself are provided as content of `print` event. This commit adds special processing for this behavior - it parses actual error message out of print event.
This commit is contained in:
parent
2c87efac07
commit
ea36be4653
4 changed files with 37 additions and 6 deletions
17
dist/index.js
generated
vendored
17
dist/index.js
generated
vendored
|
|
@ -512,14 +512,14 @@ class DartJsonParser {
|
|||
return undefined;
|
||||
}
|
||||
const { trackedFiles } = this.options;
|
||||
const message = (_b = (_a = test.error) === null || _a === void 0 ? void 0 : _a.error) !== null && _b !== void 0 ? _b : '';
|
||||
const stackTrace = (_d = (_c = test.error) === null || _c === void 0 ? void 0 : _c.stackTrace) !== null && _d !== void 0 ? _d : '';
|
||||
const stackTrace = (_b = (_a = test.error) === null || _a === void 0 ? void 0 : _a.stackTrace) !== null && _b !== void 0 ? _b : '';
|
||||
const print = test.print
|
||||
.filter(p => p.messageType === 'print')
|
||||
.map(p => p.message)
|
||||
.join('\n');
|
||||
const details = [print, stackTrace].filter(str => str !== '').join('\n');
|
||||
const src = this.exceptionThrowSource(details, trackedFiles);
|
||||
const message = this.getErrorMessage((_d = (_c = test.error) === null || _c === void 0 ? void 0 : _c.error) !== null && _d !== void 0 ? _d : '', print);
|
||||
let path;
|
||||
let line;
|
||||
if (src !== undefined) {
|
||||
|
|
@ -540,6 +540,19 @@ class DartJsonParser {
|
|||
details
|
||||
};
|
||||
}
|
||||
getErrorMessage(message, print) {
|
||||
if (this.sdk === 'flutter') {
|
||||
const uselessMessageRe = /^Test failed\. See exception logs above\.\nThe test description was:/m;
|
||||
const flutterPrintRe = /^══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═+\s+(.*)\s+When the exception was thrown, this was the stack:/ms;
|
||||
if (uselessMessageRe.test(message)) {
|
||||
const match = print.match(flutterPrintRe);
|
||||
if (match !== null) {
|
||||
return match[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
return message || print;
|
||||
}
|
||||
exceptionThrowSource(ex, trackedFiles) {
|
||||
const lines = ex.split(/\r?\n/g);
|
||||
// regexp to extract file path and line number from stack trace
|
||||
|
|
|
|||
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue