@cucumber/cucumber
Version:
The official JavaScript implementation of Cucumber.
51 lines • 1.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatError = formatError;
const assertion_error_formatter_1 = require("assertion-error-formatter");
const error_stack_parser_1 = __importDefault(require("error-stack-parser"));
const filter_stack_trace_1 = require("../filter_stack_trace");
function formatError(error, filterStackTraces) {
if (typeof error === 'string') {
const stackTrace = `Error: ${error}`;
return {
message: stackTrace,
exception: {
type: 'Error',
message: error,
stackTrace,
},
};
}
let processedStackTrace = error.stack;
try {
const parsedStack = error_stack_parser_1.default.parse(error);
const filteredStack = filterStackTraces
? (0, filter_stack_trace_1.filterStackTrace)(parsedStack)
: parsedStack;
processedStackTrace = filteredStack.map((f) => f.source).join('\n');
}
catch {
// if we weren't able to parse and process, we'll settle for the original
}
const stackTrace = (0, assertion_error_formatter_1.format)(error, {
colorFns: {
errorStack: (stack) => {
return processedStackTrace ? `\n${processedStackTrace}` : stack;
},
},
});
const type = error.constructor.name;
const message = typeof error === 'string' ? error : error.message;
return {
message: stackTrace,
exception: {
type,
message,
stackTrace,
},
};
}
//# sourceMappingURL=format_error.js.map