MCPcopy
hub / github.com/petkaantonov/bluebird / assertLongTrace

Function assertLongTrace

test/mocha/helpers/assert_long_trace.js:3–85  ·  view source on GitHub ↗
(error, expectedJumpCount, expectedFramesForJumpsMap)

Source from the content-addressed store, hash-verified

1var assert = require("assert");
2
3function assertLongTrace(error, expectedJumpCount, expectedFramesForJumpsMap) {
4 var envFramePattern = /(?:\(node.js:|\(module.js:|\(timers.js:|\bcheckTimers\b|\bdrainQueue\b|\btimerLoop\b|\b_onImmediate\b|\b_immediateCallback\b)/;
5 var stack = error.stack.split("\n");
6 var frameLinePattern = /(^\s+at|@|\s+\(No stack trace\))/;
7 var previousEventPattern = /^From previous event/;
8 var firstLine;
9 for (var i = 0; i < stack.length; ++i) {
10 if (previousEventPattern.test(stack[i])) {
11 throw new Error("From previous event before any frames");
12 }
13 if (frameLinePattern.test(stack[i])) {
14 firstLine = i - 1;
15 break;
16 }
17 }
18 var prev = stack[firstLine - 1];
19 var jumpCount = 1;
20 var jumpIndex = 0;
21 var currentJumpFramesCount = 0;
22 var envFramesCount = 0;
23 for (var i = firstLine; i < stack.length; ++i) {
24 var line = stack[i];
25 if (previousEventPattern.test(line)) {
26 var jumpContainsOnlyEnvFrames =
27 currentJumpFramesCount === 0 && envFramesCount > 0;
28 if (!jumpContainsOnlyEnvFrames) {
29 if (previousEventPattern.test(prev)) {
30 throw new Error("2 consecutive From previous events");
31 }
32 if (jumpIndex < expectedFramesForJumpsMap.length) {
33 var expectedFrames = expectedFramesForJumpsMap[jumpIndex];
34 var expectedMessage = typeof expectedFrames === "number"
35 ? (expectedFrames + "")
36 : (expectedFrames[0] + "-" + expectedFrames[1]);
37 var message = "Expected " + (jumpIndex+1) + "th jump to contain " +
38 expectedMessage + " frames " +
39 "but it contains " + currentJumpFramesCount + " frames";
40 if (typeof expectedFrames === "number") {
41 assert(expectedFrames === currentJumpFramesCount, message);
42 } else {
43 assert(expectedFrames[0] <= currentJumpFramesCount &&
44 currentJumpFramesCount <= expectedFrames[1],
45 message);
46 }
47 }
48 jumpCount++;
49 jumpIndex++;
50 }
51 currentJumpFramesCount = 0;
52 envFramesCount = 0;
53 } else if (frameLinePattern.test(line)) {
54 if (envFramePattern.test(line)) {
55 envFramesCount++;
56 } else {
57 currentJumpFramesCount++;
58 }
59 }
60 prev = line;

Callers 2

generator.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…