GeezerVison is showing github.com — test: test runner run plan · nodejs/node@b866755
File treeExpand file treeCollapse file tree Open diff view settings fixtures/test-runner/plan
Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboard +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('less assertions than planned', (t) => { | | 4 | + t.plan(2); | | 5 | + t.assert.ok(true, 'only one assertion'); | | 6 | + // Missing second assertion | | 7 | +}); |
Collapse file Copy file name to clipboard +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('matching assertions', (t) => { | | 4 | + t.plan(2); | | 5 | + t.assert.ok(true, 'first assertion'); | | 6 | + t.assert.ok(true, 'second assertion'); | | 7 | +}); |
Collapse file Copy file name to clipboard +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('more assertions than planned', (t) => { | | 4 | + t.plan(1); | | 5 | + t.assert.ok(true, 'first assertion'); | | 6 | + t.assert.ok(true, 'extra assertion'); // This should cause failure | | 7 | +}); |
Collapse file Copy file name to clipboard +14Lines changed: 14 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('deeply nested tests', async (t) => { | | 4 | + t.plan(1); | | 5 | + | | 6 | + await t.test('level 1', async (t) => { | | 7 | + t.plan(1); | | 8 | + | | 9 | + await t.test('level 2', (t) => { | | 10 | + t.plan(1); | | 11 | + t.assert.ok(true, 'deepest assertion'); | | 12 | + }); | | 13 | + }); | | 14 | +}); |
Collapse file Copy file name to clipboard +9Lines changed: 9 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('failing planning by options', { plan: 1 }, () => { | | 4 | + // Should fail - no assertions | | 5 | +}); | | 6 | + | | 7 | +test('passing planning by options', { plan: 1 }, (t) => { | | 8 | + t.assert.ok(true); | | 9 | +}); |
Collapse file Copy file name to clipboard +20Lines changed: 20 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | +import { Readable } from 'node:stream'; | | 3 | + | | 4 | +test('planning with streams', (t, done) => { | | 5 | + function* generate() { | | 6 | + yield 'a'; | | 7 | + yield 'b'; | | 8 | + yield 'c'; | | 9 | + } | | 10 | + const expected = ['a', 'b', 'c']; | | 11 | + t.plan(expected.length); | | 12 | + const stream = Readable.from(generate()); | | 13 | + stream.on('data', (chunk) => { | | 14 | + t.assert.strictEqual(chunk, expected.shift()); | | 15 | + }); | | 16 | + | | 17 | + stream.on('end', () => { | | 18 | + done(); | | 19 | + }); | | 20 | +}); |
Collapse file Copy file name to clipboard +9Lines changed: 9 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('parent test', async (t) => { | | 4 | + t.plan(1); | | 5 | + await t.test('child test', (t) => { | | 6 | + t.plan(1); | | 7 | + t.assert.ok(true, 'child assertion'); | | 8 | + }); | | 9 | +}); |
Collapse file Copy file name to clipboard +15Lines changed: 15 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('planning with wait should PASS within timeout', async (t) => { | | 4 | + t.plan(1, { wait: 5000 }); | | 5 | + setTimeout(() => { | | 6 | + t.assert.ok(true); | | 7 | + }, 250); | | 8 | +}); | | 9 | + | | 10 | +test('planning with wait should FAIL within timeout', async (t) => { | | 11 | + t.plan(1, { wait: 5000 }); | | 12 | + setTimeout(() => { | | 13 | + t.assert.ok(false); | | 14 | + }, 250); | | 15 | +}); |
Collapse file Copy file name to clipboard +8Lines changed: 8 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('planning should FAIL when wait time expires before plan is met', (t) => { | | 4 | + t.plan(2, { wait: 500 }); | | 5 | + setTimeout(() => { | | 6 | + t.assert.ok(true); | | 7 | + }, 30_000).unref(); | | 8 | +}); |
Collapse file Copy file name to clipboard +11Lines changed: 11 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +import test from 'node:test'; | | 2 | + | | 3 | +test('should not wait for assertions and fail immediately', async (t) => { | | 4 | + t.plan(1, { wait: false }); | | 5 | + | | 6 | + // Set up an async operation that won't complete before the test finishes | | 7 | + // Since wait:false, the test should fail immediately without waiting | | 8 | + setTimeout(() => { | | 9 | + t.assert.ok(true); | | 10 | + }, 1000).unref(); | | 11 | +}); |
|