function indentAll(lines: string) {
return lines.split('\n').map(x => ' ' + x).join('\n')
}
* An error that encapsulates more than one error, to support soft-assertions from Jasmine
* even though Allure's API assumes one error-per test
*/
export default class CompoundError extends Error {
public innerErrors: Error[]
constructor(...innerErrors: Error[]) {
const message = ['CompoundError: One or more errors occurred. ---\n'].
concat(innerErrors.map(x =>
x.message && x.stack?.includes(x.message)
? (x.stack ? `${indentAll(x.stack)}\n--- End of stack trace ---\n` : '')
: (
(x.message ? ` ${x.message}\n--- End of error message ---\n` : '') +
(x.stack ? `${indentAll(x.stack)}\n--- End of stack trace ---\n` : '')
)
)).join('\n')
super(message)
this.innerErrors = innerErrors
}
}