mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
assert: Ensure reflexivity of deepEqual
Ensure that the behavior of `assert.deepEqual` does not depend on argument ordering when comparing an `arguments` object with a non-`arguments` object.
This commit is contained in:
parent
70ea5bac43
commit
aae51ecf7d
@ -199,10 +199,11 @@ function objEquiv(a, b) {
|
||||
if (a.prototype !== b.prototype) return false;
|
||||
//~~~I've managed to break Object.keys through screwy arguments passing.
|
||||
// Converting to array solves the problem.
|
||||
if (isArguments(a)) {
|
||||
if (!isArguments(b)) {
|
||||
return false;
|
||||
}
|
||||
var aIsArgs = isArguments(a),
|
||||
bIsArgs = isArguments(b);
|
||||
if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
|
||||
return false;
|
||||
if (aIsArgs) {
|
||||
a = pSlice.call(a);
|
||||
b = pSlice.call(b);
|
||||
return _deepEqual(a, b);
|
||||
|
@ -249,6 +249,11 @@ try {
|
||||
gotError = true;
|
||||
}
|
||||
|
||||
// GH-7178. Ensure reflexivity of deepEqual with `arguments` objects.
|
||||
var args = (function() { return arguments; })();
|
||||
a.throws(makeBlock(a.deepEqual, [], args));
|
||||
a.throws(makeBlock(a.deepEqual, args, []));
|
||||
|
||||
console.log('All OK');
|
||||
assert.ok(gotError);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user