Ensure that the behavior of `assert.deepEqual` does not depend on
argument ordering when comparing an `arguments` object with a
non-`arguments` object.
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);
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);