83 lines
No EOL
3.9 KiB
JavaScript
83 lines
No EOL
3.9 KiB
JavaScript
"use strict";
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.PrettyStacktraceProcessor = void 0;
|
|
var fs = require("fs");
|
|
var configuration_1 = require("../configuration");
|
|
var display_processor_1 = require("../display-processor");
|
|
var STACK_REG_EXP = /\((.*):(\d+):(\d+)\)/;
|
|
var CONTEXT = 2;
|
|
var PrettyStacktraceProcessor = /** @class */ (function (_super) {
|
|
__extends(PrettyStacktraceProcessor, _super);
|
|
function PrettyStacktraceProcessor() {
|
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
}
|
|
PrettyStacktraceProcessor.prototype.displaySpecErrorMessages = function (spec, log) {
|
|
return this.configuration.spec.displayStacktrace === configuration_1.StacktraceOption.PRETTY ? this.displayErrorMessages(spec) : log;
|
|
};
|
|
PrettyStacktraceProcessor.prototype.displaySummaryErrorMessages = function (spec, log) {
|
|
return this.configuration.summary.displayStacktrace === configuration_1.StacktraceOption.PRETTY ? this.displayErrorMessages(spec) : log;
|
|
};
|
|
PrettyStacktraceProcessor.prototype.displayErrorMessages = function (spec) {
|
|
var logs = [];
|
|
for (var _i = 0, _a = spec.failedExpectations; _i < _a.length; _i++) {
|
|
var failedExpectation = _a[_i];
|
|
logs.push(this.theme.failed("- ") + this.theme.failed(failedExpectation.message));
|
|
if (failedExpectation.stack) {
|
|
logs.push(this.prettifyStack(failedExpectation.stack));
|
|
}
|
|
}
|
|
return logs.join("\n");
|
|
};
|
|
PrettyStacktraceProcessor.prototype.prettifyStack = function (stack) {
|
|
var _this = this;
|
|
var logs = [];
|
|
var filteredStack = this.configuration.stacktrace.filter(stack);
|
|
var stackRegExp = new RegExp(STACK_REG_EXP);
|
|
filteredStack.split("\n").forEach(function (stackLine) {
|
|
if (stackRegExp.test(stackLine)) {
|
|
var _a = stackLine.match(stackRegExp), filename = _a[1], lineNumber = _a[2], columnNumber = _a[3];
|
|
var errorContext = _this.retrieveErrorContext(filename, parseInt(lineNumber, 10), parseInt(columnNumber, 10));
|
|
logs.push(_this.theme.prettyStacktraceFilename(filename) + ":" + _this.theme.prettyStacktraceLineNumber(lineNumber) + ":" + _this.theme.prettyStacktraceColumnNumber(columnNumber));
|
|
logs.push(errorContext + "\n");
|
|
}
|
|
});
|
|
return "\n" + logs.join("\n");
|
|
};
|
|
PrettyStacktraceProcessor.prototype.retrieveErrorContext = function (filename, lineNb, columnNb) {
|
|
var logs = [];
|
|
var fileLines;
|
|
try {
|
|
fileLines = fs.readFileSync(filename, "utf-8")
|
|
.split("\n");
|
|
}
|
|
catch (error) {
|
|
return "jasmine-spec-reporter: unable to open '" + filename + "'\n" + error;
|
|
}
|
|
for (var i = 0; i < fileLines.length; i++) {
|
|
var errorLine = lineNb - 1;
|
|
if (i >= errorLine - CONTEXT && i <= errorLine + CONTEXT) {
|
|
logs.push(fileLines[i]);
|
|
}
|
|
if (i === errorLine) {
|
|
logs.push(" ".repeat(columnNb - 1) + this.theme.prettyStacktraceError("~"));
|
|
}
|
|
}
|
|
return logs.join("\n");
|
|
};
|
|
return PrettyStacktraceProcessor;
|
|
}(display_processor_1.DisplayProcessor));
|
|
exports.PrettyStacktraceProcessor = PrettyStacktraceProcessor;
|
|
//# sourceMappingURL=pretty-stacktrace-processor.js.map
|