Skip to content

Commit f5494fa

Browse files
shockerqtruyadorno
authored andcommitted
test_runner: fixed test shorthands return type
`test.todo`, `test.only` and `test.skip` are expected to return the same as `test`. This commit corrects the inconsistent behavior of these shorthands. Fixes: #48557 PR-URL: #48555 Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
1 parent a9a1394 commit f5494fa

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

lib/internal/test_runner/harness.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,7 @@ function runInParentContext(Factory) {
214214

215215
const test = (name, options, fn) => run(name, options, fn);
216216
ArrayPrototypeForEach(['skip', 'todo', 'only'], (keyword) => {
217-
test[keyword] = (name, options, fn) => {
218-
run(name, options, fn, { [keyword]: true });
219-
};
217+
test[keyword] = (name, options, fn) => run(name, options, fn, { [keyword]: true });
220218
});
221219
return test;
222220
}
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'use strict';
2+
require('../common');
3+
4+
// Return type of shorthands should be consistent
5+
// with the return type of test
6+
7+
const assert = require('assert');
8+
const { test, describe, it } = require('node:test');
9+
const { isPromise } = require('util/types');
10+
11+
const testOnly = test('only test', { only: true });
12+
const testTodo = test('todo test', { todo: true });
13+
const testSkip = test('skip test', { skip: true });
14+
const testOnlyShorthand = test.only('only test shorthand');
15+
const testTodoShorthand = test.todo('todo test shorthand');
16+
const testSkipShorthand = test.skip('skip test shorthand');
17+
18+
describe('\'node:test\' and its shorthands should return the same', () => {
19+
it('should return a Promise', () => {
20+
assert(isPromise(testOnly));
21+
assert(isPromise(testTodo));
22+
assert(isPromise(testSkip));
23+
assert(isPromise(testOnlyShorthand));
24+
assert(isPromise(testTodoShorthand));
25+
assert(isPromise(testSkipShorthand));
26+
});
27+
28+
it('should resolve undefined', async () => {
29+
assert.strictEqual(await testOnly, undefined);
30+
assert.strictEqual(await testTodo, undefined);
31+
assert.strictEqual(await testSkip, undefined);
32+
assert.strictEqual(await testOnlyShorthand, undefined);
33+
assert.strictEqual(await testTodoShorthand, undefined);
34+
assert.strictEqual(await testSkipShorthand, undefined);
35+
});
36+
});

0 commit comments

Comments
 (0)