From a6615a29f3a69aed18d1c8fe9ce57a073c059939 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Mon, 13 Nov 2017 18:15:24 -0200 Subject: [PATCH] assert: add strict functionality export Requireing the strict version will allow to use `assert.equal`, `assert.deepEqual` and there negated counterparts to be used with strict comparison instead of using e.g. `assert.strictEqual`. The API is identical to the regular assert export and only differs in the way that all functions use strict compairson. Backport-PR-URL: https://github.com/nodejs/node/pull/19230 PR-URL: https://github.com/nodejs/node/pull/17002 Reviewed-By: Refael Ackermann Reviewed-By: James M Snell Reviewed-By: Vse Mozhet Byt Reviewed-By: Anna Henningsen --- doc/api/assert.md | 103 ++++++++++++++++++++++++++++++++--- doc/api/deprecations.md | 16 ++---- lib/assert.js | 12 ++++ test/parallel/test-assert.js | 19 +++++++ 4 files changed, 132 insertions(+), 18 deletions(-) diff --git a/doc/api/assert.md b/doc/api/assert.md index 058aff858be8e5..bcb8479114d960 100644 --- a/doc/api/assert.md +++ b/doc/api/assert.md @@ -7,6 +7,57 @@ The `assert` module provides a simple set of assertion tests that can be used to test invariants. +A `strict` and a `legacy` mode exist, while it is recommended to only use +[`strict mode`][]. + +For more information about the used equality comparisons see +[MDN's guide on equality comparisons and sameness][mdn-equality-guide]. + +## Strict mode + + +When using the `strict mode`, any `assert` function will use the equality used in +the strict function mode. So [`assert.deepEqual()`][] will, for example, work the +same as [`assert.deepStrictEqual()`][]. + +It can be accessed using: + +```js +const assert = require('assert').strict; +``` + +## Legacy mode + +> Stability: 0 - Deprecated: Use strict mode instead. + +When accessing `assert` directly instead of using the `strict` property, the +[Abstract Equality Comparison][] will be used for any function without a +"strict" in its name (e.g. [`assert.deepEqual()`][]). + +It can be accessed using: + +```js +const assert = require('assert'); +``` + +It is recommended to use the [`strict mode`][] instead as the +[Abstract Equality Comparison][] can often have surprising results. Especially +in case of [`assert.deepEqual()`][] as the used comparison rules there are very +lax. + +E.g. + +```js +// WARNING: This does not throw an AssertionError! +assert.deepEqual(/a/gi, new Date()); +``` + ## assert(value[, message])