Fix JUnit test-cases with error misclassified as passed test

Previous implementation considered only test-cases with <failure> as failed. This fix makes processing of <error> and <failure> the same. It also handles situation when error or failure elements contains only text and no attributes.
This commit is contained in:
Michal Dorner 2021-05-24 15:01:47 +02:00
parent 6969ae6af5
commit d01ef000ba
No known key found for this signature in database
GPG key ID: 9EEE04B48DA36786
4 changed files with 25 additions and 12 deletions

16
dist/index.js generated vendored
View file

@ -930,18 +930,24 @@ class JavaJunitParser {
});
}
getTestCaseResult(test) {
if (test.failure)
if (test.failure || test.error)
return 'failed';
if (test.skipped)
return 'skipped';
return 'success';
}
getTestCaseError(tc) {
if (!this.options.parseErrors || !tc.failure) {
var _a;
if (!this.options.parseErrors) {
return undefined;
}
const failure = tc.failure[0];
const details = failure._;
// We process <error> and <failure> the same way
const failures = (_a = tc.failure) !== null && _a !== void 0 ? _a : tc.error;
if (!failures) {
return undefined;
}
const failure = failures[0];
const details = typeof (failure) === 'object' ? failure._ : failure;
let filePath;
let line;
const src = this.exceptionThrowSource(details);
@ -953,7 +959,7 @@ class JavaJunitParser {
path: filePath,
line,
details,
message: failure.message
message: typeof (failure) === 'object' ? failure.message : undefined
};
}
exceptionThrowSource(stackTrace) {

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long