Skip to content

Commit ca033c1

Browse files
committed
test_runner: align behavior of it and test
PR-URL: #46889 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 0b9cf6f commit ca033c1

File tree

6 files changed

+37
-44
lines changed

6 files changed

+37
-44
lines changed

doc/api/test.md

+13-12
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ test('skip() method with message', (t) => {
156156
Running tests can also be done using `describe` to declare a suite
157157
and `it` to declare a test.
158158
A suite is used to organize and group related tests together.
159-
`it` is an alias for `test`, except there is no test context passed,
160-
since nesting is done using suites.
159+
`it` is a shorthand for [`test()`][].
161160

162161
```js
163162
describe('A thing', () => {
@@ -851,17 +850,19 @@ Shorthand for marking a suite as `only`, same as
851850

852851
## `it([name][, options][, fn])`
853852

854-
* `name` {string} The name of the test, which is displayed when reporting test
855-
results. **Default:** The `name` property of `fn`, or `'<anonymous>'` if `fn`
856-
does not have a name.
857-
* `options` {Object} Configuration options for the suite.
858-
supports the same options as `test([name][, options][, fn])`.
859-
* `fn` {Function|AsyncFunction} The function under test.
860-
If the test uses callbacks, the callback function is passed as an argument.
861-
**Default:** A no-op function.
862-
* Returns: `undefined`.
853+
<!-- YAML
854+
added:
855+
- v18.6.0
856+
- v16.17.0
857+
changes:
858+
- version: REPLACEME
859+
pr-url: https://github.com/nodejs/node/pull/46889
860+
description: Calling `it()` is now equivalent to calling `test()`.
861+
-->
862+
863+
Shorthand for [`test()`][].
863864

864-
The `it()` function is the value imported from the `node:test` module.
865+
The `it()` function is imported from the `node:test` module.
865866

866867
## `it.skip([name][, options][, fn])`
867868

lib/internal/test_runner/harness.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const {
1717
const { exitCodes: { kGenericUserError } } = internalBinding('errors');
1818

1919
const { kEmptyObject } = require('internal/util');
20-
const { kCancelledByParent, Test, ItTest, Suite } = require('internal/test_runner/test');
20+
const { kCancelledByParent, Test, Suite } = require('internal/test_runner/test');
2121
const {
2222
kAsyncBootstrapFailure,
2323
parseCommandLine,
@@ -221,7 +221,7 @@ module.exports = {
221221
createTestTree,
222222
test: runInParentContext(Test, false),
223223
describe: runInParentContext(Suite),
224-
it: runInParentContext(ItTest),
224+
it: runInParentContext(Test),
225225
before: hook('before'),
226226
after: hook('after'),
227227
beforeEach: hook('beforeEach'),

lib/internal/test_runner/test.js

-8
Original file line numberDiff line numberDiff line change
@@ -745,13 +745,6 @@ class TestHook extends Test {
745745
}
746746
}
747747

748-
class ItTest extends Test {
749-
constructor(opt) { super(opt); } // eslint-disable-line no-useless-constructor
750-
getRunArgs() {
751-
return { ctx: { signal: this.signal, name: this.name }, args: [] };
752-
}
753-
}
754-
755748
class Suite extends Test {
756749
constructor(options) {
757750
super(options);
@@ -824,7 +817,6 @@ class Suite extends Test {
824817
}
825818

826819
module.exports = {
827-
ItTest,
828820
kCancelledByParent,
829821
kSubtestsFailed,
830822
kTestCodeFailure,

test/es-module/test-esm-repl-imports.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { describe, it } = require('node:test');
99

1010

1111
describe('ESM: REPL runs', { concurrency: true }, () => {
12-
it((done) => {
12+
it((t, done) => {
1313
const child = spawn(execPath, [
1414
'--interactive',
1515
], {

test/message/test_runner_describe_it.js

+18-18
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ it('async throw fail', async () => {
4747
throw new Error('thrown from async throw fail');
4848
});
4949

50-
it('async skip fail', async (t) => {
50+
it('async skip fail', async (t, done) => {
5151
t.skip();
5252
throw new Error('thrown from async throw fail');
5353
});
@@ -206,61 +206,61 @@ it('escaped skip message', { skip: '#skip' });
206206
// A test whose todo message needs to be escaped.
207207
it('escaped todo message', { todo: '#todo' });
208208

209-
it('callback pass', (done) => {
209+
it('callback pass', (t, done) => {
210210
setImmediate(done);
211211
});
212212

213-
it('callback fail', (done) => {
213+
it('callback fail', (t, done) => {
214214
setImmediate(() => {
215215
done(new Error('callback failure'));
216216
});
217217
});
218218

219-
it('sync t is this in test', function() {
220-
assert.deepStrictEqual(this, { signal: this.signal, name: this.name });
219+
it('sync t is this in test', function(t) {
220+
assert.strictEqual(this, t);
221221
});
222222

223-
it('async t is this in test', async function() {
224-
assert.deepStrictEqual(this, { signal: this.signal, name: this.name });
223+
it('async t is this in test', async function(t) {
224+
assert.strictEqual(this, t);
225225
});
226226

227-
it('callback t is this in test', function(done) {
228-
assert.deepStrictEqual(this, { signal: this.signal, name: this.name });
227+
it('callback t is this in test', function(t, done) {
228+
assert.strictEqual(this, t);
229229
done();
230230
});
231231

232-
it('callback also returns a Promise', async (done) => {
232+
it('callback also returns a Promise', async (t, done) => {
233233
throw new Error('thrown from callback also returns a Promise');
234234
});
235235

236-
it('callback throw', (done) => {
236+
it('callback throw', (t, done) => {
237237
throw new Error('thrown from callback throw');
238238
});
239239

240-
it('callback called twice', (done) => {
240+
it('callback called twice', (t, done) => {
241241
done();
242242
done();
243243
});
244244

245-
it('callback called twice in different ticks', (done) => {
245+
it('callback called twice in different ticks', (t, done) => {
246246
setImmediate(done);
247247
done();
248248
});
249249

250-
it('callback called twice in future tick', (done) => {
250+
it('callback called twice in future tick', (t, done) => {
251251
setImmediate(() => {
252252
done();
253253
done();
254254
});
255255
});
256256

257-
it('callback async throw', (done) => {
257+
it('callback async throw', (t, done) => {
258258
setImmediate(() => {
259259
throw new Error('thrown from callback async throw');
260260
});
261261
});
262262

263-
it('callback async throw after done', (done) => {
263+
it('callback async throw after done', (t, done) => {
264264
setImmediate(() => {
265265
throw new Error('thrown from callback async throw after done');
266266
});
@@ -316,7 +316,7 @@ describe('timeouts', () => {
316316
});
317317
});
318318

319-
it('timed out callback test', { timeout: 5 }, (done) => {
319+
it('timed out callback test', { timeout: 5 }, (t, done) => {
320320
setTimeout(done, 100);
321321
});
322322

@@ -327,7 +327,7 @@ describe('timeouts', () => {
327327
});
328328
});
329329

330-
it('large timeout callback test is ok', { timeout: 30_000_000 }, (done) => {
330+
it('large timeout callback test is ok', { timeout: 30_000_000 }, (t, done) => {
331331
setTimeout(done, 10);
332332
});
333333
});

test/message/test_runner_describe_it.out

+3-3
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ not ok 12 - async throw fail
104104
*
105105
...
106106
# Subtest: async skip fail
107-
not ok 13 - async skip fail
107+
not ok 13 - async skip fail # SKIP
108108
---
109109
duration_ms: *
110110
failureType: 'callbackAndPromisePresent'
@@ -645,8 +645,8 @@ not ok 60 - invalid subtest fail
645645
# Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event.
646646
# tests 60
647647
# pass 23
648-
# fail 23
648+
# fail 22
649649
# cancelled 0
650-
# skipped 9
650+
# skipped 10
651651
# todo 5
652652
# duration_ms *

0 commit comments

Comments
 (0)