Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 1x 18x 18x 158x 158x 1x 1x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 1x | import { expect } from "@jest/globals";
import type { MatcherFunction } from "expect";
// Strip stack of rows with jest.
// Used to normalize cross environment differences strictly for testing purposes
// Real stacks sent up will contain cross browser quirks
function cleanStack(stack: string[]) {
Iif (!stack) return null;
return stack.map(function (item: string): string {
return item
.replace(/[A-Z]:\\.*?\\MHA\\/, "") // Remove path prefix that start <drive letter>:\src\MHA
.replace(/MHA\\src/, "src") // Remove path prefix that start MHA\\src
.replace(/Function\.get \[as parse\]/, "Function.parse") // normalize function name
.replace(/.*jest.*/, "") // Don't care about jest internals
.replace(/:\d+:\d*\)/, ")") // remove column and line # since they may vary
;
}).filter(function (item: string): boolean {
return !!item;
});
}
export const stacksEqual: MatcherFunction<[expected: string[]]> =
function (actualUnknown: unknown, expected: string[]) {
const actual = actualUnknown as string[];
let passed = true;
const messages: string[] = [];
const actualStack = cleanStack(actual);
const expectedStack = cleanStack(expected);
Iif (actualStack === undefined || actualStack === null) {
passed = false;
messages.push("actual is undefined");
} else Iif (expectedStack === undefined || expectedStack === null) {
passed = false;
messages.push("expected is undefined");
}
else {
passed = this.equals(actualStack, expectedStack);
Iif (!passed) {
messages.push("Stacks do not match");
messages.push("Actual stack:");
actualStack.forEach((actualItem) => { messages.push("\t" + actualItem); });
messages.push("Expected stack:");
expectedStack.forEach((expectedItem) => { messages.push("\t" + expectedItem); });
}
}
return {
pass: passed,
message: () => messages.join("\n"),
};
};
expect.extend({ stacksEqual, });
declare module "expect" {
interface Matchers<R> {
stacksEqual(expected: string[]): R;
}
} |