Skip to content

Commit cb816ec

Browse files
committed
test: reorder test files fixtures for better understanding
PR-URL: nodejs#48787 Reviewed-By: Moshe Atlow <[email protected]> Reviewed-By: Chemi Atlow <[email protected]>
1 parent fab6f58 commit cb816ec

File tree

10 files changed

+119
-24
lines changed

10 files changed

+119
-24
lines changed

test/parallel/test-runner-cli.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ const testFixtures = fixtures.path('test-runner');
2222
{
2323
// Default behavior. node_modules is ignored. Files that don't match the
2424
// pattern are ignored except in test/ directories.
25-
const args = ['--test', testFixtures];
26-
const child = spawnSync(process.execPath, args);
25+
const args = ['--test'];
26+
const child = spawnSync(process.execPath, args, { cwd: join(testFixtures, 'default-behavior') });
2727

2828
assert.strictEqual(child.status, 1);
2929
assert.strictEqual(child.signal, null);
@@ -39,8 +39,8 @@ const testFixtures = fixtures.path('test-runner');
3939

4040
{
4141
// Same but with a prototype mutation in require scripts.
42-
const args = ['--require', join(testFixtures, 'protoMutation.js'), '--test', testFixtures];
43-
const child = spawnSync(process.execPath, args);
42+
const args = ['--require', join(testFixtures, 'protoMutation.js'), '--test'];
43+
const child = spawnSync(process.execPath, args, { cwd: join(testFixtures, 'default-behavior') });
4444

4545
const stdout = child.stdout.toString();
4646
assert.match(stdout, /ok 1 - this should pass/);
@@ -72,7 +72,7 @@ const testFixtures = fixtures.path('test-runner');
7272

7373
{
7474
// Searches node_modules if specified.
75-
const args = ['--test', join(testFixtures, 'node_modules')];
75+
const args = ['--test', join(testFixtures, 'default-behavior/node_modules')];
7676
const child = spawnSync(process.execPath, args);
7777

7878
assert.strictEqual(child.status, 1);
@@ -85,7 +85,7 @@ const testFixtures = fixtures.path('test-runner');
8585
{
8686
// The current directory is used by default.
8787
const args = ['--test'];
88-
const options = { cwd: testFixtures };
88+
const options = { cwd: join(testFixtures, 'default-behavior') };
8989
const child = spawnSync(process.execPath, args, options);
9090

9191
assert.strictEqual(child.status, 1);
@@ -124,7 +124,7 @@ const testFixtures = fixtures.path('test-runner');
124124
// Test combined stream outputs
125125
const args = [
126126
'--test',
127-
'test/fixtures/test-runner/index.test.js',
127+
'test/fixtures/test-runner/default-behavior/index.test.js',
128128
'test/fixtures/test-runner/nested.js',
129129
'test/fixtures/test-runner/invalid-tap.js',
130130
];
@@ -202,7 +202,7 @@ const testFixtures = fixtures.path('test-runner');
202202
const args = ['--no-warnings',
203203
'--experimental-loader', 'data:text/javascript,',
204204
'--require', fixtures.path('empty.js'),
205-
'--test', join(testFixtures, 'index.test.js')];
205+
'--test', join(testFixtures, 'default-behavior', 'index.test.js')];
206206
const child = spawnSync(process.execPath, args);
207207

208208
assert.strictEqual(child.stderr.toString(), '');

test/parallel/test-runner-exit-code.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ if (process.argv[2] === 'child') {
4343
assert.strictEqual(child.status, 0);
4444
assert.strictEqual(child.signal, null);
4545

46-
child = spawnSync(process.execPath, ['--test', fixtures.path('test-runner', 'subdir', 'subdir_test.js')]);
46+
child = spawnSync(process.execPath, [
47+
'--test',
48+
fixtures.path('test-runner', 'default-behavior', 'subdir', 'subdir_test.js'),
49+
]);
4750
assert.strictEqual(child.status, 0);
4851
assert.strictEqual(child.signal, null);
4952

test/parallel/test-runner-inspect.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ common.skipIfInspectorDisabled();
1111
tmpdir.refresh();
1212

1313
{
14-
const child = new NodeInstance(['--test', '--inspect-brk=0'], undefined, fixtures.path('test-runner/index.test.js'));
14+
const child = new NodeInstance(
15+
['--test', '--inspect-brk=0'],
16+
undefined,
17+
fixtures.path('test-runner/default-behavior/index.test.js')
18+
);
1519

1620
let stdout = '';
1721
let stderr = '';

test/parallel/test-runner-run.mjs

Lines changed: 102 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,20 @@ describe('require(\'node:test\').run', { concurrency: true }, () => {
2626
});
2727

2828
it('should succeed with a file', async () => {
29-
const stream = run({ files: [join(testFixtures, 'test/random.cjs')] });
29+
const stream = run({ files: [join(testFixtures, 'default-behavior/test/random.cjs')] });
3030
stream.on('test:fail', common.mustNotCall());
3131
stream.on('test:pass', common.mustCall(1));
3232
// eslint-disable-next-line no-unused-vars
3333
for await (const _ of stream);
3434
});
3535

3636
it('should run same file twice', async () => {
37-
const stream = run({ files: [join(testFixtures, 'test/random.cjs'), join(testFixtures, 'test/random.cjs')] });
37+
const stream = run({
38+
files: [
39+
join(testFixtures, 'default-behavior/test/random.cjs'),
40+
join(testFixtures, 'default-behavior/test/random.cjs'),
41+
]
42+
});
3843
stream.on('test:fail', common.mustNotCall());
3944
stream.on('test:pass', common.mustCall(2));
4045
// eslint-disable-next-line no-unused-vars
@@ -68,7 +73,9 @@ describe('require(\'node:test\').run', { concurrency: true }, () => {
6873
});
6974

7075
it('should be piped with dot', async () => {
71-
const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(dot).toArray();
76+
const result = await run({
77+
files: [join(testFixtures, 'default-behavior/test/random.cjs')]
78+
}).compose(dot).toArray();
7279
assert.deepStrictEqual(result, [
7380
'.',
7481
'\n',
@@ -77,15 +84,19 @@ describe('require(\'node:test\').run', { concurrency: true }, () => {
7784

7885
it('should be piped with spec', async () => {
7986
const specReporter = new spec();
80-
const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(specReporter).toArray();
87+
const result = await run({
88+
files: [join(testFixtures, 'default-behavior/test/random.cjs')]
89+
}).compose(specReporter).toArray();
8190
const stringResults = result.map((bfr) => bfr.toString());
8291
assert.match(stringResults[0], /this should pass/);
8392
assert.match(stringResults[1], /tests 1/);
8493
assert.match(stringResults[1], /pass 1/);
8594
});
8695

8796
it('should be piped with tap', async () => {
88-
const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(tap).toArray();
97+
const result = await run({
98+
files: [join(testFixtures, 'default-behavior/test/random.cjs')]
99+
}).compose(tap).toArray();
89100
assert.strictEqual(result.length, 13);
90101
assert.strictEqual(result[0], 'TAP version 13\n');
91102
assert.strictEqual(result[1], '# Subtest: this should pass\n');
@@ -103,24 +114,44 @@ describe('require(\'node:test\').run', { concurrency: true }, () => {
103114
});
104115

105116
it('should skip tests not matching testNamePatterns - RegExp', async () => {
106-
const result = await run({ files: [join(testFixtures, 'test/skip_by_name.cjs')], testNamePatterns: [/executed/] })
117+
const result = await run({
118+
files: [join(testFixtures, 'default-behavior/test/skip_by_name.cjs')],
119+
testNamePatterns: [/executed/]
120+
})
107121
.compose(tap)
108122
.toArray();
109123
assert.strictEqual(result[2], 'ok 1 - this should be skipped # SKIP test name does not match pattern\n');
110124
assert.strictEqual(result[5], 'ok 2 - this should be executed\n');
111125
});
112126

113127
it('should skip tests not matching testNamePatterns - string', async () => {
114-
const result = await run({ files: [join(testFixtures, 'test/skip_by_name.cjs')], testNamePatterns: ['executed'] })
128+
const result = await run({
129+
files: [join(testFixtures, 'default-behavior/test/skip_by_name.cjs')],
130+
testNamePatterns: ['executed']
131+
})
115132
.compose(tap)
116133
.toArray();
117134
assert.strictEqual(result[2], 'ok 1 - this should be skipped # SKIP test name does not match pattern\n');
118135
assert.strictEqual(result[5], 'ok 2 - this should be executed\n');
119136
});
120137

138+
it('should emit "test:watch:drained" event on watch mode', async () => {
139+
const controller = new AbortController();
140+
await run({
141+
files: [join(testFixtures, 'default-behavior/test/random.cjs')],
142+
watch: true,
143+
signal: controller.signal,
144+
}).on('data', function({ type }) {
145+
if (type === 'test:watch:drained') {
146+
controller.abort();
147+
}
148+
});
149+
});
150+
151+
describe('AbortSignal', () => {
121152
it('should stop watch mode when abortSignal aborts', async () => {
122153
const controller = new AbortController();
123-
const result = await run({ files: [join(testFixtures, 'test/random.cjs')], watch: true, signal: controller.signal })
154+
const result = await run({ files: [join(testFixtures, 'default-behavior/test/random.cjs')], watch: true, signal: controller.signal })
124155
.compose(async function* (source) {
125156
for await (const chunk of source) {
126157
if (chunk.type === 'test:pass') {
@@ -133,14 +164,71 @@ describe('require(\'node:test\').run', { concurrency: true }, () => {
133164
assert.deepStrictEqual(result, ['this should pass']);
134165
});
135166

136-
it('should emit "test:watch:drained" event on watch mode', async () => {
137-
const controller = new AbortController();
138-
await run({ files: [join(testFixtures, 'test/random.cjs')], watch: true, signal: controller.signal })
139-
.on('data', function({ type }) {
140-
if (type === 'test:watch:drained') {
141-
controller.abort();
167+
it('should abort when test succeeded', async () => {
168+
const stream = run({
169+
files: [
170+
fixtures.path(
171+
'test-runner',
172+
'aborts',
173+
'successful-test-still-call-abort.js'
174+
),
175+
],
176+
});
177+
178+
let passedTestCount = 0;
179+
let failedTestCount = 0;
180+
181+
let output = '';
182+
for await (const data of stream) {
183+
if (data.type === 'test:stdout') {
184+
output += data.data.message.toString();
185+
}
186+
if (data.type === 'test:fail') {
187+
failedTestCount++;
142188
}
189+
if (data.type === 'test:pass') {
190+
passedTestCount++;
191+
}
192+
}
193+
194+
assert.match(output, /abort called for test 1/);
195+
assert.match(output, /abort called for test 2/);
196+
assert.strictEqual(failedTestCount, 0, new Error('no tests should fail'));
197+
assert.strictEqual(passedTestCount, 2);
198+
});
199+
200+
it('should abort when test failed', async () => {
201+
const stream = run({
202+
files: [
203+
fixtures.path(
204+
'test-runner',
205+
'aborts',
206+
'failed-test-still-call-abort.js'
207+
),
208+
],
143209
});
210+
211+
let passedTestCount = 0;
212+
let failedTestCount = 0;
213+
214+
let output = '';
215+
for await (const data of stream) {
216+
if (data.type === 'test:stdout') {
217+
output += data.data.message.toString();
218+
}
219+
if (data.type === 'test:fail') {
220+
failedTestCount++;
221+
}
222+
if (data.type === 'test:pass') {
223+
passedTestCount++;
224+
}
225+
}
226+
227+
assert.match(output, /abort called for test 1/);
228+
assert.match(output, /abort called for test 2/);
229+
assert.strictEqual(passedTestCount, 0, new Error('no tests should pass'));
230+
assert.strictEqual(failedTestCount, 2);
231+
});
144232
});
145233

146234
describe('sharding', () => {

0 commit comments

Comments
 (0)