mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
1) Switched + / - and red / green in diffs. It seems like that style is more natural to most people. 2) Short primitives do not use the diff anymore. Especially short numbers can be read well like 1 !== 2. Cases that can not be displayed like that (e.g., -0 and +0) use the regular diff output. 3) Improved error descriptions. It was not always clear what the messages stood for. That should now be resolved. 4) Added a position indicator for single lines in case a tty is used and the line is shorter than the visual columns. 5) Color detection is now done by checking stderr instead of stdout. PR-URL: https://github.com/nodejs/node/pull/21628 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
'use strict';
|
|
require('../common');
|
|
const assert = require('assert');
|
|
|
|
// Disable colored output to prevent color codes from breaking assertion
|
|
// message comparisons. This should only be an issue when process.stdout
|
|
// is a TTY.
|
|
if (process.stdout.isTTY)
|
|
process.env.NODE_DISABLE_COLORS = '1';
|
|
|
|
// Turn off no-restricted-properties because we are testing deepEqual!
|
|
/* eslint-disable no-restricted-properties */
|
|
|
|
// See https://github.com/nodejs/node/issues/10258
|
|
{
|
|
const date = new Date('2016');
|
|
function FakeDate() {}
|
|
FakeDate.prototype = Date.prototype;
|
|
const fake = new FakeDate();
|
|
|
|
assert.deepEqual(date, fake);
|
|
assert.deepEqual(fake, date);
|
|
|
|
// For deepStrictEqual we check the runtime type,
|
|
// then reveal the fakeness of the fake date
|
|
assert.throws(
|
|
() => assert.deepStrictEqual(date, fake),
|
|
{
|
|
message: 'Expected inputs to be strictly deep-equal:\n' +
|
|
'+ actual - expected\n\n+ 2016-01-01T00:00:00.000Z\n- Date {}'
|
|
}
|
|
);
|
|
assert.throws(
|
|
() => assert.deepStrictEqual(fake, date),
|
|
{
|
|
message: 'Expected inputs to be strictly deep-equal:\n' +
|
|
'+ actual - expected\n\n+ Date {}\n- 2016-01-01T00:00:00.000Z'
|
|
}
|
|
);
|
|
}
|
|
|
|
{ // At the moment global has its own type tag
|
|
const fakeGlobal = {};
|
|
Object.setPrototypeOf(fakeGlobal, Object.getPrototypeOf(global));
|
|
for (const prop of Object.keys(global)) {
|
|
fakeGlobal[prop] = global[prop];
|
|
}
|
|
assert.deepEqual(fakeGlobal, global);
|
|
// Message will be truncated anyway, don't validate
|
|
assert.throws(() => assert.deepStrictEqual(fakeGlobal, global),
|
|
assert.AssertionError);
|
|
}
|
|
|
|
{ // At the moment process has its own type tag
|
|
const fakeProcess = {};
|
|
Object.setPrototypeOf(fakeProcess, Object.getPrototypeOf(process));
|
|
for (const prop of Object.keys(process)) {
|
|
fakeProcess[prop] = process[prop];
|
|
}
|
|
assert.deepEqual(fakeProcess, process);
|
|
// Message will be truncated anyway, don't validate
|
|
assert.throws(() => assert.deepStrictEqual(fakeProcess, process),
|
|
assert.AssertionError);
|
|
}
|
|
/* eslint-enable */
|