Skip to content

Commit cd5f99b

Browse files
committed
assert: move CallTracker to EOL
The `assert.CallTracker` API has been deprecateed since v20. The `node:test` `mock.fn` API provides a better alternative for the functionality.
1 parent 49bb0ae commit cd5f99b

10 files changed

+22
-784
lines changed

doc/api/assert.md

-330
Original file line numberDiff line numberDiff line change
@@ -215,331 +215,6 @@ try {
215215
}
216216
```
217217

218-
## Class: `assert.CallTracker`
219-
220-
<!-- YAML
221-
added:
222-
- v14.2.0
223-
- v12.19.0
224-
changes:
225-
- version: v20.1.0
226-
pr-url: https://github.com/nodejs/node/pull/47740
227-
description: the `assert.CallTracker` class has been deprecated and will be
228-
removed in a future version.
229-
-->
230-
231-
> Stability: 0 - Deprecated
232-
233-
This feature is deprecated and will be removed in a future version.
234-
Please consider using alternatives such as the
235-
[`mock`][] helper function.
236-
237-
### `new assert.CallTracker()`
238-
239-
<!-- YAML
240-
added:
241-
- v14.2.0
242-
- v12.19.0
243-
-->
244-
245-
Creates a new [`CallTracker`][] object which can be used to track if functions
246-
were called a specific number of times. The `tracker.verify()` must be called
247-
for the verification to take place. The usual pattern would be to call it in a
248-
[`process.on('exit')`][] handler.
249-
250-
```mjs
251-
import assert from 'node:assert';
252-
import process from 'node:process';
253-
254-
const tracker = new assert.CallTracker();
255-
256-
function func() {}
257-
258-
// callsfunc() must be called exactly 1 time before tracker.verify().
259-
const callsfunc = tracker.calls(func, 1);
260-
261-
callsfunc();
262-
263-
// Calls tracker.verify() and verifies if all tracker.calls() functions have
264-
// been called exact times.
265-
process.on('exit', () => {
266-
tracker.verify();
267-
});
268-
```
269-
270-
```cjs
271-
const assert = require('node:assert');
272-
const process = require('node:process');
273-
274-
const tracker = new assert.CallTracker();
275-
276-
function func() {}
277-
278-
// callsfunc() must be called exactly 1 time before tracker.verify().
279-
const callsfunc = tracker.calls(func, 1);
280-
281-
callsfunc();
282-
283-
// Calls tracker.verify() and verifies if all tracker.calls() functions have
284-
// been called exact times.
285-
process.on('exit', () => {
286-
tracker.verify();
287-
});
288-
```
289-
290-
### `tracker.calls([fn][, exact])`
291-
292-
<!-- YAML
293-
added:
294-
- v14.2.0
295-
- v12.19.0
296-
-->
297-
298-
* `fn` {Function} **Default:** A no-op function.
299-
* `exact` {number} **Default:** `1`.
300-
* Returns: {Function} A function that wraps `fn`.
301-
302-
The wrapper function is expected to be called exactly `exact` times. If the
303-
function has not been called exactly `exact` times when
304-
[`tracker.verify()`][] is called, then [`tracker.verify()`][] will throw an
305-
error.
306-
307-
```mjs
308-
import assert from 'node:assert';
309-
310-
// Creates call tracker.
311-
const tracker = new assert.CallTracker();
312-
313-
function func() {}
314-
315-
// Returns a function that wraps func() that must be called exact times
316-
// before tracker.verify().
317-
const callsfunc = tracker.calls(func);
318-
```
319-
320-
```cjs
321-
const assert = require('node:assert');
322-
323-
// Creates call tracker.
324-
const tracker = new assert.CallTracker();
325-
326-
function func() {}
327-
328-
// Returns a function that wraps func() that must be called exact times
329-
// before tracker.verify().
330-
const callsfunc = tracker.calls(func);
331-
```
332-
333-
### `tracker.getCalls(fn)`
334-
335-
<!-- YAML
336-
added:
337-
- v18.8.0
338-
- v16.18.0
339-
-->
340-
341-
* `fn` {Function}
342-
343-
* Returns: {Array} An array with all the calls to a tracked function.
344-
345-
* Object {Object}
346-
* `thisArg` {Object}
347-
* `arguments` {Array} the arguments passed to the tracked function
348-
349-
```mjs
350-
import assert from 'node:assert';
351-
352-
const tracker = new assert.CallTracker();
353-
354-
function func() {}
355-
const callsfunc = tracker.calls(func);
356-
callsfunc(1, 2, 3);
357-
358-
assert.deepStrictEqual(tracker.getCalls(callsfunc),
359-
[{ thisArg: undefined, arguments: [1, 2, 3] }]);
360-
```
361-
362-
```cjs
363-
const assert = require('node:assert');
364-
365-
// Creates call tracker.
366-
const tracker = new assert.CallTracker();
367-
368-
function func() {}
369-
const callsfunc = tracker.calls(func);
370-
callsfunc(1, 2, 3);
371-
372-
assert.deepStrictEqual(tracker.getCalls(callsfunc),
373-
[{ thisArg: undefined, arguments: [1, 2, 3] }]);
374-
```
375-
376-
### `tracker.report()`
377-
378-
<!-- YAML
379-
added:
380-
- v14.2.0
381-
- v12.19.0
382-
-->
383-
384-
* Returns: {Array} An array of objects containing information about the wrapper
385-
functions returned by [`tracker.calls()`][].
386-
* Object {Object}
387-
* `message` {string}
388-
* `actual` {number} The actual number of times the function was called.
389-
* `expected` {number} The number of times the function was expected to be
390-
called.
391-
* `operator` {string} The name of the function that is wrapped.
392-
* `stack` {Object} A stack trace of the function.
393-
394-
The arrays contains information about the expected and actual number of calls of
395-
the functions that have not been called the expected number of times.
396-
397-
```mjs
398-
import assert from 'node:assert';
399-
400-
// Creates call tracker.
401-
const tracker = new assert.CallTracker();
402-
403-
function func() {}
404-
405-
// Returns a function that wraps func() that must be called exact times
406-
// before tracker.verify().
407-
const callsfunc = tracker.calls(func, 2);
408-
409-
// Returns an array containing information on callsfunc()
410-
console.log(tracker.report());
411-
// [
412-
// {
413-
// message: 'Expected the func function to be executed 2 time(s) but was
414-
// executed 0 time(s).',
415-
// actual: 0,
416-
// expected: 2,
417-
// operator: 'func',
418-
// stack: stack trace
419-
// }
420-
// ]
421-
```
422-
423-
```cjs
424-
const assert = require('node:assert');
425-
426-
// Creates call tracker.
427-
const tracker = new assert.CallTracker();
428-
429-
function func() {}
430-
431-
// Returns a function that wraps func() that must be called exact times
432-
// before tracker.verify().
433-
const callsfunc = tracker.calls(func, 2);
434-
435-
// Returns an array containing information on callsfunc()
436-
console.log(tracker.report());
437-
// [
438-
// {
439-
// message: 'Expected the func function to be executed 2 time(s) but was
440-
// executed 0 time(s).',
441-
// actual: 0,
442-
// expected: 2,
443-
// operator: 'func',
444-
// stack: stack trace
445-
// }
446-
// ]
447-
```
448-
449-
### `tracker.reset([fn])`
450-
451-
<!-- YAML
452-
added:
453-
- v18.8.0
454-
- v16.18.0
455-
-->
456-
457-
* `fn` {Function} a tracked function to reset.
458-
459-
Reset calls of the call tracker.
460-
If a tracked function is passed as an argument, the calls will be reset for it.
461-
If no arguments are passed, all tracked functions will be reset.
462-
463-
```mjs
464-
import assert from 'node:assert';
465-
466-
const tracker = new assert.CallTracker();
467-
468-
function func() {}
469-
const callsfunc = tracker.calls(func);
470-
471-
callsfunc();
472-
// Tracker was called once
473-
assert.strictEqual(tracker.getCalls(callsfunc).length, 1);
474-
475-
tracker.reset(callsfunc);
476-
assert.strictEqual(tracker.getCalls(callsfunc).length, 0);
477-
```
478-
479-
```cjs
480-
const assert = require('node:assert');
481-
482-
const tracker = new assert.CallTracker();
483-
484-
function func() {}
485-
const callsfunc = tracker.calls(func);
486-
487-
callsfunc();
488-
// Tracker was called once
489-
assert.strictEqual(tracker.getCalls(callsfunc).length, 1);
490-
491-
tracker.reset(callsfunc);
492-
assert.strictEqual(tracker.getCalls(callsfunc).length, 0);
493-
```
494-
495-
### `tracker.verify()`
496-
497-
<!-- YAML
498-
added:
499-
- v14.2.0
500-
- v12.19.0
501-
-->
502-
503-
Iterates through the list of functions passed to
504-
[`tracker.calls()`][] and will throw an error for functions that
505-
have not been called the expected number of times.
506-
507-
```mjs
508-
import assert from 'node:assert';
509-
510-
// Creates call tracker.
511-
const tracker = new assert.CallTracker();
512-
513-
function func() {}
514-
515-
// Returns a function that wraps func() that must be called exact times
516-
// before tracker.verify().
517-
const callsfunc = tracker.calls(func, 2);
518-
519-
callsfunc();
520-
521-
// Will throw an error since callsfunc() was only called once.
522-
tracker.verify();
523-
```
524-
525-
```cjs
526-
const assert = require('node:assert');
527-
528-
// Creates call tracker.
529-
const tracker = new assert.CallTracker();
530-
531-
function func() {}
532-
533-
// Returns a function that wraps func() that must be called exact times
534-
// before tracker.verify().
535-
const callsfunc = tracker.calls(func, 2);
536-
537-
callsfunc();
538-
539-
// Will throw an error since callsfunc() was only called once.
540-
tracker.verify();
541-
```
542-
543218
## `assert(value[, message])`
544219

545220
<!-- YAML
@@ -2760,7 +2435,6 @@ assert.partialDeepStrictEqual(
27602435
[`===` operator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality
27612436
[`==` operator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality
27622437
[`AssertionError`]: #class-assertassertionerror
2763-
[`CallTracker`]: #class-assertcalltracker
27642438
[`Class`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
27652439
[`ERR_INVALID_RETURN_VALUE`]: errors.md#err_invalid_return_value
27662440
[`Error.captureStackTrace`]: errors.md#errorcapturestacktracetargetobject-constructoropt
@@ -2777,9 +2451,5 @@ assert.partialDeepStrictEqual(
27772451
[`assert.strictEqual()`]: #assertstrictequalactual-expected-message
27782452
[`assert.throws()`]: #assertthrowsfn-error-message
27792453
[`getColorDepth()`]: tty.md#writestreamgetcolordepthenv
2780-
[`mock`]: test.md#mocking
2781-
[`process.on('exit')`]: process.md#event-exit
2782-
[`tracker.calls()`]: #trackercallsfn-exact
2783-
[`tracker.verify()`]: #trackerverify
27842454
[enumerable "own" properties]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties
27852455
[prototype-spec]: https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots

doc/api/deprecations.md

+5-6
Original file line numberDiff line numberDiff line change
@@ -3567,16 +3567,17 @@ be added when a function is bound to an `AsyncResource`.
35673567

35683568
<!-- YAML
35693569
changes:
3570+
- version: REPLACEME
3571+
pr-url: https://github.com/nodejs/node/pull/00000
3572+
description: End-of-Life.
35703573
- version: v20.1.0
35713574
pr-url: https://github.com/nodejs/node/pull/47740
35723575
description: Runtime deprecation.
35733576
-->
35743577

3575-
Type: Runtime
3578+
Type: End-of-Life
35763579

3577-
In a future version of Node.js, [`assert.CallTracker`][],
3578-
will be removed.
3579-
Consider using alternatives such as the [`mock`][] helper function.
3580+
The `assert.CallTracker` API has been removed.
35803581

35813582
### DEP0174: calling `promisify` on a function that returns a `Promise`
35823583

@@ -3924,7 +3925,6 @@ upon `require('node:module').builtinModules`.
39243925
[`SlowBuffer`]: buffer.md#class-slowbuffer
39253926
[`String.prototype.toWellFormed`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toWellFormed
39263927
[`WriteStream.open()`]: fs.md#class-fswritestream
3927-
[`assert.CallTracker`]: assert.md#class-assertcalltracker
39283928
[`assert`]: assert.md
39293929
[`asyncResource.runInAsyncScope()`]: async_context.md#asyncresourceruninasyncscopefn-thisarg-args
39303930
[`buffer.subarray`]: buffer.md#bufsubarraystart-end
@@ -3986,7 +3986,6 @@ upon `require('node:module').builtinModules`.
39863986
[`message.socket`]: http.md#messagesocket
39873987
[`message.trailersDistinct`]: http.md#messagetrailersdistinct
39883988
[`message.trailers`]: http.md#messagetrailers
3989-
[`mock`]: test.md#mocking
39903989
[`module.createRequire()`]: module.md#modulecreaterequirefilename
39913990
[`os.networkInterfaces()`]: os.md#osnetworkinterfaces
39923991
[`os.tmpdir()`]: os.md#ostmpdir

0 commit comments

Comments
 (0)