@@ -60,7 +60,7 @@ const {
6060 isRegExp,
6161} = require ( 'internal/util/types' ) ;
6262const { isError, setOwnProperty } = require ( 'internal/util' ) ;
63- const { innerOk } = require ( 'internal/assert/utils' ) ;
63+ const { innerOk, innerFail } = require ( 'internal/assert/utils' ) ;
6464
6565const {
6666 validateFunction,
@@ -144,53 +144,7 @@ function Assert(options) {
144144// they lose their `this` context and will use default behavior instead of the
145145// instance's custom options.
146146
147- function innerFail ( obj ) {
148- if ( obj . message . length === 0 ) {
149- obj . message = undefined ;
150- } else if ( typeof obj . message [ 0 ] === 'string' ) {
151- if ( obj . message . length > 1 ) {
152- obj . message = format ( ...obj . message ) ;
153- } else {
154- obj . message = obj . message [ 0 ] ;
155- }
156- } else if ( isError ( obj . message [ 0 ] ) ) {
157- if ( obj . message . length > 1 ) {
158- throw new ERR_AMBIGUOUS_ARGUMENT (
159- 'message' ,
160- `The error message was passed as error object "${ ErrorPrototypeToString ( obj . message [ 0 ] ) } " has trailing arguments that would be ignored.` ,
161- ) ;
162- }
163- throw obj . message [ 0 ] ;
164- } else if ( typeof obj . message [ 0 ] === 'function' ) {
165- if ( obj . message . length > 1 ) {
166- throw new ERR_AMBIGUOUS_ARGUMENT (
167- 'message' ,
168- `The error message with function "${ obj . message [ 0 ] . name || 'anonymous' } " has trailing arguments that would be ignored.` ,
169- ) ;
170- }
171- try {
172- obj . message = obj . message [ 0 ] ( obj . actual , obj . expected ) ;
173- if ( typeof obj . message !== 'string' ) {
174- obj . message = undefined ;
175- }
176- } catch {
177- // Ignore and use default message instead
178- obj . message = undefined ;
179- }
180- } else {
181- throw new ERR_INVALID_ARG_TYPE (
182- 'message' ,
183- [ 'string' , 'function' ] ,
184- obj . message [ 0 ] ,
185- ) ;
186- }
187-
188- const error = new AssertionError ( obj ) ;
189- if ( obj . generatedMessage !== undefined ) {
190- error . generatedMessage = obj . generatedMessage ;
191- }
192- throw error ;
193- }
147+ // See `internal/assert/utils.js` for MessageFactory/MessageTuple/InnerFailOptions typedefs
194148
195149/**
196150 * Throws an AssertionError with the given message.
@@ -250,7 +204,7 @@ Assert.prototype.ok = function ok(...args) {
250204 * The equality assertion tests shallow, coercive equality with ==.
251205 * @param {any } actual
252206 * @param {any } expected
253- * @param {string | Error | Function } [message]
207+ * @param {string | Error | MessageFactory } [message]
254208 * @returns {void }
255209 */
256210Assert . prototype . equal = function equal ( actual , expected , ...message ) {
@@ -275,7 +229,7 @@ Assert.prototype.equal = function equal(actual, expected, ...message) {
275229 * equal with !=.
276230 * @param {any } actual
277231 * @param {any } expected
278- * @param {string | Error | Function } [message]
232+ * @param {string | Error | MessageFactory } [message]
279233 * @returns {void }
280234 */
281235Assert . prototype . notEqual = function notEqual ( actual , expected , ...message ) {
@@ -299,7 +253,7 @@ Assert.prototype.notEqual = function notEqual(actual, expected, ...message) {
299253 * The deep equivalence assertion tests a deep equality relation.
300254 * @param {any } actual
301255 * @param {any } expected
302- * @param {string | Error | Function } [message]
256+ * @param {string | Error | MessageFactory } [message]
303257 * @returns {void }
304258 */
305259Assert . prototype . deepEqual = function deepEqual ( actual , expected , ...message ) {
@@ -323,7 +277,7 @@ Assert.prototype.deepEqual = function deepEqual(actual, expected, ...message) {
323277 * The deep non-equivalence assertion tests for any deep inequality.
324278 * @param {any } actual
325279 * @param {any } expected
326- * @param {string | Error | Function } [message]
280+ * @param {string | Error | MessageFactory } [message]
327281 * @returns {void }
328282 */
329283Assert . prototype . notDeepEqual = function notDeepEqual ( actual , expected , ...message ) {
@@ -348,7 +302,7 @@ Assert.prototype.notDeepEqual = function notDeepEqual(actual, expected, ...messa
348302 * relation.
349303 * @param {any } actual
350304 * @param {any } expected
351- * @param {string | Error | Function } [message]
305+ * @param {string | Error | MessageFactory } [message]
352306 * @returns {void }
353307 */
354308Assert . prototype . deepStrictEqual = function deepStrictEqual ( actual , expected , ...message ) {
@@ -373,7 +327,7 @@ Assert.prototype.deepStrictEqual = function deepStrictEqual(actual, expected, ..
373327 * inequality.
374328 * @param {any } actual
375329 * @param {any } expected
376- * @param {string | Error | Function } [message]
330+ * @param {string | Error | MessageFactory } [message]
377331 * @returns {void }
378332 */
379333Assert . prototype . notDeepStrictEqual = notDeepStrictEqual ;
@@ -398,7 +352,7 @@ function notDeepStrictEqual(actual, expected, ...message) {
398352 * The strict equivalence assertion tests a strict equality relation.
399353 * @param {any } actual
400354 * @param {any } expected
401- * @param {string | Error | Function } [message]
355+ * @param {string | Error | MessageFactory } [message]
402356 * @returns {void }
403357 */
404358Assert . prototype . strictEqual = function strictEqual ( actual , expected , ...message ) {
@@ -421,7 +375,7 @@ Assert.prototype.strictEqual = function strictEqual(actual, expected, ...message
421375 * The strict non-equivalence assertion tests for any strict inequality.
422376 * @param {any } actual
423377 * @param {any } expected
424- * @param {string | Error | Function } [message]
378+ * @param {string | Error | MessageFactory } [message]
425379 * @returns {void }
426380 */
427381Assert . prototype . notStrictEqual = function notStrictEqual ( actual , expected , ...message ) {
@@ -444,7 +398,7 @@ Assert.prototype.notStrictEqual = function notStrictEqual(actual, expected, ...m
444398 * The strict equivalence assertion test between two objects
445399 * @param {any } actual
446400 * @param {any } expected
447- * @param {string | Error | Function } [message]
401+ * @param {string | Error | MessageFactory } [message]
448402 * @returns {void }
449403 */
450404Assert . prototype . partialDeepStrictEqual = function partialDeepStrictEqual (
@@ -904,7 +858,7 @@ function internalMatch(string, regexp, message, fn) {
904858 * Expects the `string` input to match the regular expression.
905859 * @param {string } string
906860 * @param {RegExp } regexp
907- * @param {string | Error | Function } [message]
861+ * @param {string | Error | MessageFactory } [message]
908862 * @returns {void }
909863 */
910864Assert . prototype . match = function match ( string , regexp , ...message ) {
@@ -915,7 +869,7 @@ Assert.prototype.match = function match(string, regexp, ...message) {
915869 * Expects the `string` input not to match the regular expression.
916870 * @param {string } string
917871 * @param {RegExp } regexp
918- * @param {string | Error | Function } [message]
872+ * @param {string | Error | MessageFactory } [message]
919873 * @returns {void }
920874 */
921875Assert . prototype . doesNotMatch = function doesNotMatch ( string , regexp , ...message ) {
0 commit comments