node/test/parallel/test-assert-class-destructuring.js
Antoine du Hamel e72761fe5e
test: ensure assertions are reached on more tests
PR-URL: https://github.com/nodejs/node/pull/60485
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2025-11-06 09:47:01 +01:00

129 lines
3.2 KiB
JavaScript

'use strict';
require('../common');
const assert = require('assert');
// eslint-disable-next-line node-core/must-call-assert
const { Assert } = require('assert');
const { test } = require('node:test');
// 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';
}
test('Assert class destructuring behavior - diff option', () => {
const assertInstanceFull = new Assert({ diff: 'full' });
const assertInstanceSimple = new Assert({ diff: 'simple' });
assertInstanceFull.throws(
() => assertInstanceFull.strictEqual({ a: 1 }, { a: 2 }),
{ diff: 'full' },
);
assertInstanceSimple.throws(
() => assertInstanceSimple.strictEqual({ a: 1 }, { a: 2 }),
{ diff: 'simple' },
);
const { strictEqual: strictEqualSimple } = assertInstanceSimple;
const { strictEqual: strictEqualFull } = assertInstanceFull;
const { deepStrictEqual: deepStrictEqualFull } = assertInstanceFull;
const { equal: equalFull } = assertInstanceFull;
assert.throws(
() => strictEqualSimple({ a: 1 }, { a: 2 }),
(err) => {
assert.strictEqual(err.diff, 'simple');
return true;
}
);
assert.throws(
() => strictEqualFull({ a: 1 }, { a: 2 }),
(err) => {
assert.strictEqual(err.diff, 'simple');
return true;
}
);
assert.throws(
() => deepStrictEqualFull({ a: 1 }, { a: 2 }),
(err) => {
assert.strictEqual(err.diff, 'simple');
return true;
}
);
assert.throws(
() => equalFull({ a: 1 }, { a: 2 }),
(err) => {
assert.strictEqual(err.diff, 'simple');
return true;
}
);
});
test('Assert class destructuring behavior - strict option', () => {
const assertInstanceNonStrict = new Assert({ strict: false });
const assertInstanceStrict = new Assert({ strict: true });
assertInstanceNonStrict.equal(2, '2');
assert.throws(
() => assertInstanceStrict.equal(2, '2'),
assert.AssertionError
);
const { equal: equalNonStrict } = assertInstanceNonStrict;
const { equal: equalStrict } = assertInstanceStrict;
equalNonStrict(2, '2');
assert.throws(
() => equalStrict(2, '2'),
assert.AssertionError
);
});
test('Assert class destructuring behavior - comprehensive methods', () => {
const myAssert = new Assert({ diff: 'full', strict: false });
const {
fail,
equal,
strictEqual,
deepStrictEqual,
throws,
match,
doesNotMatch
} = myAssert;
assert.throws(() => fail('test message'), (err) => {
assert.strictEqual(err.diff, 'simple');
assert.strictEqual(err.message, 'test message');
return true;
});
assert.throws(() => equal({ a: 1 }, { a: 2 }), (err) => {
assert.strictEqual(err.diff, 'simple');
return true;
});
assert.throws(() => strictEqual({ a: 1 }, { a: 2 }), (err) => {
assert.strictEqual(err.diff, 'simple');
return true;
});
assert.throws(() => deepStrictEqual({ a: 1 }, { a: 2 }), (err) => {
assert.strictEqual(err.diff, 'simple');
return true;
});
throws(() => { throw new Error('test'); }, Error);
match('hello world', /world/);
doesNotMatch('hello world', /xyz/);
});