alsatian-fluent-assertions
Version:
Fluent assertions extension to Alsatian xUnit framework.
38 lines • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const StackTrace = require("stacktrace-js");
const base_error_1 = require("./base-error");
class SpecError extends base_error_1.BaseError {
static _stringifyPosition(node) {
let current = node;
let result = current.name;
while (current.parent) {
current = current.parent;
result = `${current.fullname}.${result}`;
}
return result;
}
static _filterToUserFrames(f) {
const fn = f.functionName || "";
return ((f.source || "").indexOf("alsatian-fluent-assertions") === -1 ||
(fn.indexOf("PropertiesMatcher") === -1 &&
fn.indexOf("SimpleMatcher") === -1 &&
fn.indexOf("Operators") === -1));
}
constructor(node, _message, expected, actual, nested = false) {
if (nested) {
super(_message, expected, actual);
return;
}
let frames = StackTrace.getSync();
frames = frames.filter(SpecError._filterToUserFrames);
const line = (frames[1] || {}).lineNumber;
let message = `${_message} @ ${SpecError._stringifyPosition(node)}`;
if (line) {
message += `, line: ${line}.`;
}
super(message, expected, actual);
}
}
exports.SpecError = SpecError;
//# sourceMappingURL=spec-error.js.map