Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b866755

Browse filesBrowse files
pmarchinitargos
authored andcommitted
test: test runner run plan
PR-URL: #57304 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
1 parent 77668ff commit b866755
Copy full SHA for b866755

File tree

Expand file treeCollapse file tree

12 files changed

+295
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

12 files changed

+295
-0
lines changed
Open diff view settings
Collapse file
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
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
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
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
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
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
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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
+9Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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
+20Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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
+9Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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
+15Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
});

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.