diff --git a/lib/assert.js b/lib/assert.js index 8955aa8761d7c2..ba316d38ff665f 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -28,7 +28,6 @@ const compare = process.binding('buffer').compare; const util = require('util'); const Buffer = require('buffer').Buffer; -const pSlice = Array.prototype.slice; const pToString = (obj) => Object.prototype.toString.call(obj); // 1. The assert module provides functions that throw @@ -223,11 +222,6 @@ function objEquiv(a, b, strict, actualVisitedObjects) { const bIsArgs = isArguments(b); if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) return false; - if (aIsArgs) { - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b, strict); - } const ka = Object.keys(a); const kb = Object.keys(b); var key, i; diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index b2e2ea4debfbc5..34e7b643442138 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -59,7 +59,7 @@ assert.throws(makeBlock(a.strictEqual, null, undefined), assert.doesNotThrow(makeBlock(a.notStrictEqual, 2, '2'), 'notStrictEqual(2, \'2\')'); -// deepEquals joy! +// deepEqual joy! // 7.2 assert.doesNotThrow(makeBlock(a.deepEqual, new Date(2000, 3, 14), new Date(2000, 3, 14)), @@ -409,6 +409,20 @@ var args = (function() { return arguments; })(); a.throws(makeBlock(a.deepEqual, [], args)); a.throws(makeBlock(a.deepEqual, args, [])); +// more checking that arguments objects are handled correctly +{ + const returnArguments = function() { return arguments; }; + + const someArgs = returnArguments('a'); + const sameArgs = returnArguments('a'); + const diffArgs = returnArguments('b'); + + a.throws(makeBlock(a.deepEqual, someArgs, ['a'])); + a.throws(makeBlock(a.deepEqual, ['a'], someArgs)); + a.throws(makeBlock(a.deepEqual, someArgs, {'0': 'a'})); + a.throws(makeBlock(a.deepEqual, someArgs, diffArgs)); + a.doesNotThrow(makeBlock(a.deepEqual, someArgs, sameArgs)); +} var circular = {y: 1}; circular.x = circular;