Skip to content

Commit 40211e8

Browse files
TrottFishrock123
authored andcommitted
assert: remove unneeded arguments special handling
Remove special handling when asserting on a pair of arguments objects. The code being removed will only run if both `expected` and `actual` are arguments objects. Given that situation, the subsequent code for handling everything else works just fine. Tests added to confirm expected behavior. This came about while trying to improve test coverage. The segment of code removed had no test coverage. I was unable to write a test that would both exercise the code and fail if the code was removed. Further examination indicated that this was because the special handling was not needed. PR-URL: #7413 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent c39f6c0 commit 40211e8

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

‎lib/assert.js‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
constcompare=process.binding('buffer').compare;
2929
constutil=require('util');
3030
constBuffer=require('buffer').Buffer;
31-
constpSlice=Array.prototype.slice;
3231
constpToString=(obj)=>Object.prototype.toString.call(obj);
3332

3433
// 1. The assert module provides functions that throw
@@ -223,11 +222,6 @@ function objEquiv(a, b, strict, actualVisitedObjects) {
223222
constbIsArgs=isArguments(b);
224223
if((aIsArgs&&!bIsArgs)||(!aIsArgs&&bIsArgs))
225224
returnfalse;
226-
if(aIsArgs){
227-
a=pSlice.call(a);
228-
b=pSlice.call(b);
229-
return_deepEqual(a,b,strict);
230-
}
231225
constka=Object.keys(a);
232226
constkb=Object.keys(b);
233227
varkey,i;

‎test/parallel/test-assert.js‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ assert.throws(makeBlock(a.strictEqual, null, undefined),
5959
assert.doesNotThrow(makeBlock(a.notStrictEqual,2,'2'),
6060
'notStrictEqual(2, \'2\')');
6161

62-
// deepEquals joy!
62+
// deepEqual joy!
6363
// 7.2
6464
assert.doesNotThrow(makeBlock(a.deepEqual,newDate(2000,3,14),
6565
newDate(2000,3,14)),
@@ -409,6 +409,20 @@ var args = (function() { return arguments; })();
409409
a.throws(makeBlock(a.deepEqual,[],args));
410410
a.throws(makeBlock(a.deepEqual,args,[]));
411411

412+
// more checking that arguments objects are handled correctly
413+
{
414+
constreturnArguments=function(){returnarguments;};
415+
416+
constsomeArgs=returnArguments('a');
417+
constsameArgs=returnArguments('a');
418+
constdiffArgs=returnArguments('b');
419+
420+
a.throws(makeBlock(a.deepEqual,someArgs,['a']));
421+
a.throws(makeBlock(a.deepEqual,['a'],someArgs));
422+
a.throws(makeBlock(a.deepEqual,someArgs,{'0': 'a'}));
423+
a.throws(makeBlock(a.deepEqual,someArgs,diffArgs));
424+
a.doesNotThrow(makeBlock(a.deepEqual,someArgs,sameArgs));
425+
}
412426

413427
varcircular={y: 1};
414428
circular.x=circular;

0 commit comments

Comments
 (0)