diff options
| author | Ryan Dahl <ry@tinyclouds.org> | 2009-12-29 20:14:58 +0100 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2009-12-29 20:15:05 +0100 |
| commit | 0accebe58343d60e3f2f9af3971114e685837d5b (patch) | |
| tree | d96da154cca74054d0633072cb7a42e172bc27cd /lib/assert.js | |
| parent | dd35637603ca338c9fcbbeedecf695450fcdc95d (diff) | |
| download | node-0accebe58343d60e3f2f9af3971114e685837d5b.tar.gz | |
Stack trace for asserts shouldn't include assert module
Diffstat (limited to 'lib/assert.js')
| -rw-r--r-- | lib/assert.js | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/lib/assert.js b/lib/assert.js index 4704d9a60..70eda84ff 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -35,26 +35,16 @@ var assert = exports; // 2. The AssertionError is defined in assert. // new assert.AssertionError({message: message, actual: actual, expected: expected}) -assert.AssertionError = function AssertionError(options) { +assert.AssertionError = function AssertionError (options) { this.name = "AssertionError"; this.message = options.message; this.actual = options.actual; this.expected = options.expected; this.operator = options.operator; + var stackStartFunction = options.stackStartFunction || fail; - //v8 specific if (Error.captureStackTrace) { - Error.captureStackTrace(this, fail); - //node specific, removes the node machinery stack frames - if (typeof(__filename) !== undefined) { - var stack = this.stack.split('\n'); - for (var i = stack.length - 1; i >= 0; i--) { - if (stack[i].indexOf(__filename) != -1) { - this.stack = stack.slice(0, i+2).join('\n'); - break; - } - } - } + Error.captureStackTrace(this, stackStartFunction); } }; @@ -85,12 +75,13 @@ assert.AssertionError.__proto__ = Error.prototype; // both the actual and expected values to the assertion error for // display purposes. -function fail(actual, expected, message, operator) { +function fail(actual, expected, message, operator, stackStartFunction) { throw new assert.AssertionError({ message: message, actual: actual, expected: expected, - operator: operator + operator: operator, + stackStartFunction: stackStartFunction }); } @@ -105,7 +96,7 @@ assert.fail = fail; // assert.strictEqual(true, guard, message_opt);. assert.ok = function ok(value, message) { - if (!!!value) fail(value, true, message, "=="); + if (!!!value) fail(value, true, message, "==", assert.ok); }; // 5. The equality assertion tests shallow, coercive equality with @@ -113,22 +104,24 @@ assert.ok = function ok(value, message) { // assert.equal(actual, expected, message_opt); assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, "=="); + if (actual != expected) fail(actual, expected, message, "==", assert.equal); }; // 6. The non-equality assertion tests for whether two objects are not equal // with != assert.notEqual(actual, expected, message_opt); assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) fail(actual, expected, message, "!="); + if (actual == expected) { + fail(actual, expected, message, "!=", assert.notEqual); + } }; // 7. The equivalence assertion tests a deep equality relation. // assert.deepEqual(actual, expected, message_opt); -exports.deepEqual = function deepEqual(actual, expected, message) { +assert.deepEqual = function deepEqual(actual, expected, message) { if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, "deepEqual"); + fail(actual, expected, message, "deepEqual", assert.deepEqual); } }; @@ -212,9 +205,9 @@ function objEquiv (a, b) { // 8. The non-equivalence assertion tests for any deep inequality. // assert.notDeepEqual(actual, expected, message_opt); -exports.notDeepEqual = function notDeepEqual(actual, expected, message) { +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { if (_deepEqual(actual, expected)) { - fail(actual, expected, message, "notDeepEqual"); + fail(actual, expected, message, "notDeepEqual", assert.notDeepEqual); } }; @@ -222,14 +215,18 @@ exports.notDeepEqual = function notDeepEqual(actual, expected, message) { // assert.strictEqual(actual, expected, message_opt); assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) fail(actual, expected, message, "==="); + if (actual !== expected) { + fail(actual, expected, message, "===", assert.strictEqual); + } }; // 10. The strict non-equality assertion tests for strict inequality, as determined by !==. // assert.notStrictEqual(actual, expected, message_opt); assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) fail(actual, expected, message, "!=="); + if (actual === expected) { + fail(actual, expected, message, "!==", assert.notStrictEqual); + } }; function _throws (shouldThrow, block, err, message) { @@ -285,3 +282,4 @@ assert.throws = function(block, /*optional*/error, /*optional*/message) { assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { _throws.apply(this, [false].concat(pSlice.call(arguments))); }; + |
