GeezerVison is showing github.com — test_runner: align behavior of it and test · nodejs/node@e52b169
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: doc/api/test.md +13-12Lines changed: 13 additions & 12 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -156,8 +156,7 @@ test('skip() method with message', (t) => { | 156 | 156 | Running tests can also be done using `describe` to declare a suite | 157 | 157 | and `it` to declare a test. | 158 | 158 | 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()`][]. | 161 | 160 |
| 162 | 161 | ```js | 163 | 162 | describe('A thing', () => { | @@ -838,17 +837,19 @@ Shorthand for marking a suite as `only`, same as | 838 | 837 |
| 839 | 838 | ## `it([name][, options][, fn])` | 840 | 839 |
| 841 | | -* `name` {string} The name of the test, which is displayed when reporting test | 842 | | - results. **Default:** The `name` property of `fn`, or `'<anonymous>'` if `fn` | 843 | | - does not have a name. | 844 | | -* `options` {Object} Configuration options for the suite. | 845 | | - supports the same options as `test([name][, options][, fn])`. | 846 | | -* `fn` {Function|AsyncFunction} The function under test. | 847 | | - If the test uses callbacks, the callback function is passed as an argument. | 848 | | - **Default:** A no-op function. | 849 | | -* Returns: `undefined`. | | 840 | +<!-- YAML | | 841 | +added: | | 842 | + - v18.6.0 | | 843 | + - v16.17.0 | | 844 | +changes: | | 845 | + - version: REPLACEME | | 846 | + pr-url: https://github.com/nodejs/node/pull/46889 | | 847 | + description: Calling `it()` is now equivalent to calling `test()`. | | 848 | +--> | | 849 | + | | 850 | +Shorthand for [`test()`][]. | 850 | 851 |
| 851 | | -The `it()` function is the value imported from the `node:test` module. | | 852 | +The `it()` function is imported from the `node:test` module. | 852 | 853 |
| 853 | 854 | ## `it.skip([name][, options][, fn])` | 854 | 855 |
| |
Collapse file Copy file name to clipboardExpand all lines: lib/internal/test_runner/harness.js +2-2Lines changed: 2 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -14,7 +14,7 @@ const { | 14 | 14 | }, | 15 | 15 | } = require('internal/errors'); | 16 | 16 | const { kEmptyObject } = require('internal/util'); | 17 | | -const { kCancelledByParent, Test, ItTest, Suite } = require('internal/test_runner/test'); | | 17 | +const { kCancelledByParent, Test, Suite } = require('internal/test_runner/test'); | 18 | 18 | const { | 19 | 19 | kAsyncBootstrapFailure, | 20 | 20 | parseCommandLine, | @@ -222,7 +222,7 @@ module.exports = { | 222 | 222 | createTestTree, | 223 | 223 | test, | 224 | 224 | describe: runInParentContext(Suite), | 225 | | - it: runInParentContext(ItTest), | | 225 | + it: runInParentContext(Test), | 226 | 226 | before: hook('before'), | 227 | 227 | after: hook('after'), | 228 | 228 | beforeEach: hook('beforeEach'), | |
Collapse file Copy file name to clipboardExpand all lines: lib/internal/test_runner/test.js -8Lines changed: 0 additions & 8 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -745,13 +745,6 @@ class TestHook extends Test { | 745 | 745 | } | 746 | 746 | } | 747 | 747 |
| 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 | | - | 755 | 748 | class Suite extends Test { | 756 | 749 | constructor(options) { | 757 | 750 | super(options); | @@ -824,7 +817,6 @@ class Suite extends Test { | 824 | 817 | } | 825 | 818 |
| 826 | 819 | module.exports = { | 827 | | - ItTest, | 828 | 820 | kCancelledByParent, | 829 | 821 | kSubtestsFailed, | 830 | 822 | kTestCodeFailure, | |
Collapse file Copy file name to clipboardExpand all lines: test/es-module/test-esm-repl-imports.js +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -9,7 +9,7 @@ const { describe, it } = require('node:test'); | 9 | 9 |
| 10 | 10 |
| 11 | 11 | describe('ESM: REPL runs', { concurrency: true }, () => { | 12 | | - it((done) => { | | 12 | + it((t, done) => { | 13 | 13 | const child = spawn(execPath, [ | 14 | 14 | '--interactive', | 15 | 15 | ], { | |
Collapse file Copy file name to clipboardExpand all lines: test/message/test_runner_describe_it.js +18-18Lines changed: 18 additions & 18 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -47,7 +47,7 @@ it('async throw fail', async () => { | 47 | 47 | throw new Error('thrown from async throw fail'); | 48 | 48 | }); | 49 | 49 |
| 50 | | -it('async skip fail', async (t) => { | | 50 | +it('async skip fail', async (t, done) => { | 51 | 51 | t.skip(); | 52 | 52 | throw new Error('thrown from async throw fail'); | 53 | 53 | }); | @@ -206,61 +206,61 @@ it('escaped skip message', { skip: '#skip' }); | 206 | 206 | // A test whose todo message needs to be escaped. | 207 | 207 | it('escaped todo message', { todo: '#todo' }); | 208 | 208 |
| 209 | | -it('callback pass', (done) => { | | 209 | +it('callback pass', (t, done) => { | 210 | 210 | setImmediate(done); | 211 | 211 | }); | 212 | 212 |
| 213 | | -it('callback fail', (done) => { | | 213 | +it('callback fail', (t, done) => { | 214 | 214 | setImmediate(() => { | 215 | 215 | done(new Error('callback failure')); | 216 | 216 | }); | 217 | 217 | }); | 218 | 218 |
| 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); | 221 | 221 | }); | 222 | 222 |
| 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); | 225 | 225 | }); | 226 | 226 |
| 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); | 229 | 229 | done(); | 230 | 230 | }); | 231 | 231 |
| 232 | | -it('callback also returns a Promise', async (done) => { | | 232 | +it('callback also returns a Promise', async (t, done) => { | 233 | 233 | throw new Error('thrown from callback also returns a Promise'); | 234 | 234 | }); | 235 | 235 |
| 236 | | -it('callback throw', (done) => { | | 236 | +it('callback throw', (t, done) => { | 237 | 237 | throw new Error('thrown from callback throw'); | 238 | 238 | }); | 239 | 239 |
| 240 | | -it('callback called twice', (done) => { | | 240 | +it('callback called twice', (t, done) => { | 241 | 241 | done(); | 242 | 242 | done(); | 243 | 243 | }); | 244 | 244 |
| 245 | | -it('callback called twice in different ticks', (done) => { | | 245 | +it('callback called twice in different ticks', (t, done) => { | 246 | 246 | setImmediate(done); | 247 | 247 | done(); | 248 | 248 | }); | 249 | 249 |
| 250 | | -it('callback called twice in future tick', (done) => { | | 250 | +it('callback called twice in future tick', (t, done) => { | 251 | 251 | setImmediate(() => { | 252 | 252 | done(); | 253 | 253 | done(); | 254 | 254 | }); | 255 | 255 | }); | 256 | 256 |
| 257 | | -it('callback async throw', (done) => { | | 257 | +it('callback async throw', (t, done) => { | 258 | 258 | setImmediate(() => { | 259 | 259 | throw new Error('thrown from callback async throw'); | 260 | 260 | }); | 261 | 261 | }); | 262 | 262 |
| 263 | | -it('callback async throw after done', (done) => { | | 263 | +it('callback async throw after done', (t, done) => { | 264 | 264 | setImmediate(() => { | 265 | 265 | throw new Error('thrown from callback async throw after done'); | 266 | 266 | }); | @@ -316,7 +316,7 @@ describe('timeouts', () => { | 316 | 316 | }); | 317 | 317 | }); | 318 | 318 |
| 319 | | - it('timed out callback test', { timeout: 5 }, (done) => { | | 319 | + it('timed out callback test', { timeout: 5 }, (t, done) => { | 320 | 320 | setTimeout(done, 100); | 321 | 321 | }); | 322 | 322 |
| @@ -327,7 +327,7 @@ describe('timeouts', () => { | 327 | 327 | }); | 328 | 328 | }); | 329 | 329 |
| 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) => { | 331 | 331 | setTimeout(done, 10); | 332 | 332 | }); | 333 | 333 | }); | |
Collapse file Copy file name to clipboardExpand all lines: test/message/test_runner_describe_it.out +3-3Lines changed: 3 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -104,7 +104,7 @@ not ok 12 - async throw fail | 104 | 104 | * | 105 | 105 | ... | 106 | 106 | # Subtest: async skip fail | 107 | | -not ok 13 - async skip fail | | 107 | +not ok 13 - async skip fail # SKIP | 108 | 108 | --- | 109 | 109 | duration_ms: * | 110 | 110 | failureType: 'callbackAndPromisePresent' | @@ -644,8 +644,8 @@ not ok 60 - invalid subtest fail | 644 | 644 | # 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. | 645 | 645 | # tests 60 | 646 | 646 | # pass 23 | 647 | | -# fail 23 | | 647 | +# fail 22 | 648 | 648 | # cancelled 0 | 649 | | -# skipped 9 | | 649 | +# skipped 10 | 650 | 650 | # todo 5 | 651 | 651 | # duration_ms * |
|