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 a07f32e

Browse filesBrowse files
joyeecheungaduh95
authored andcommitted
test: split test-runner-watch-mode-kill-signal
This test has been timing out in the CI with no information about why. Splitting it into multiple files to at least show which test case is timing out. Drive-by: name the test as test-watch-mode-kill-signal-* as the tests aren't testing the test runner and are just testing --watch-kill-signal. PR-URL: #60298 Refs: #60297 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
1 parent 04cc7aa commit a07f32e
Copy full SHA for a07f32e

File tree

Expand file treeCollapse file tree

6 files changed

+150
-131
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

6 files changed

+150
-131
lines changed
Open diff view settings
Collapse file

‎test/common/watch.js‎

Copy file name to clipboard
+16Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
'use strict';
2+
const common = require('./index.js');
3+
4+
exports.skipIfNoWatchModeSignals = function() {
5+
if (common.isWindows) {
6+
common.skip('no signals on Windows');
7+
}
8+
9+
if (common.isIBMi) {
10+
common.skip('IBMi does not support `fs.watch()`');
11+
}
12+
13+
if (common.isAIX) {
14+
common.skip('folder watch capability is limited in AIX.');
15+
}
16+
};
Collapse file
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
process.on('SIGTERM', () => { console.log('__SIGTERM received__'); process.exit(); });
2+
process.on('SIGINT', () => { console.log('__SIGINT received__'); process.exit(); });
3+
process.send('script ready');
4+
setTimeout(() => {}, 100_000);
Collapse file

‎test/parallel/test-runner-watch-mode-kill-signal.mjs‎

Copy file name to clipboardExpand all lines: test/parallel/test-runner-watch-mode-kill-signal.mjs
-131Lines changed: 0 additions & 131 deletions
This file was deleted.
Collapse file
+45Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Test that the kill signal sent by --watch defaults to SIGTERM.
2+
3+
import '../common/index.mjs';
4+
import assert from 'node:assert';
5+
import { writeFileSync } from 'node:fs';
6+
import { spawn } from 'node:child_process';
7+
import { once } from 'node:events';
8+
import tmpdir from '../common/tmpdir.js';
9+
import fixtures from '../common/fixtures.js';
10+
import { skipIfNoWatchModeSignals } from '../common/watch.js';
11+
12+
skipIfNoWatchModeSignals();
13+
14+
tmpdir.refresh();
15+
const indexPath = tmpdir.resolve('kill-signal-for-watch.js');
16+
const indexContents = fixtures.readSync('kill-signal-for-watch.js', 'utf8');
17+
writeFileSync(indexPath, indexContents);
18+
19+
const child = spawn(
20+
process.execPath,
21+
['--watch', indexPath],
22+
{
23+
cwd: tmpdir.path,
24+
stdio: ['inherit', 'pipe', 'inherit', 'ipc'],
25+
}
26+
);
27+
28+
let stdout = '';
29+
child.stdout.on('data', (data) => {
30+
stdout += `${data}`;
31+
if (/__(SIGINT|SIGTERM) received__/.test(stdout)) {
32+
child.kill();
33+
}
34+
});
35+
36+
child.on('message', (msg) => {
37+
if (msg === 'script ready') {
38+
writeFileSync(indexPath, indexContents);
39+
}
40+
});
41+
42+
await once(child, 'exit');
43+
44+
assert.match(stdout, /__SIGTERM received__/);
45+
assert.doesNotMatch(stdout, /__SIGINT received__/);
Collapse file
+39Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Test that --watch-kill-signal errors when an invalid kill signal is provided.
2+
3+
import '../common/index.mjs';
4+
import assert from 'node:assert';
5+
import { writeFileSync } from 'node:fs';
6+
import { spawn } from 'node:child_process';
7+
import tmpdir from '../common/tmpdir.js';
8+
import fixtures from '../common/fixtures.js';
9+
import { skipIfNoWatchModeSignals } from '../common/watch.js';
10+
11+
skipIfNoWatchModeSignals();
12+
13+
tmpdir.refresh();
14+
const indexPath = tmpdir.resolve('kill-signal-for-watch.js');
15+
const indexContents = fixtures.readSync('kill-signal-for-watch.js', 'utf8');
16+
writeFileSync(indexPath, indexContents);
17+
18+
const currentRun = Promise.withResolvers();
19+
const child = spawn(
20+
process.execPath,
21+
['--watch', '--watch-kill-signal', 'invalid_signal', indexPath],
22+
{
23+
cwd: tmpdir.path,
24+
stdio: ['inherit', 'inherit', 'pipe'],
25+
}
26+
);
27+
let stderr = '';
28+
29+
child.stderr.on('data', (data) => {
30+
stderr += data.toString();
31+
currentRun.resolve();
32+
});
33+
34+
await currentRun.promise;
35+
36+
assert.match(
37+
stderr,
38+
/TypeError \[ERR_UNKNOWN_SIGNAL\]: Unknown signal: invalid_signal/
39+
);
Collapse file
+46Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Test that the kill signal sent by --watch can be overridden to SIGINT
2+
// by using --watch-kill-signal.
3+
4+
import '../common/index.mjs';
5+
import assert from 'node:assert';
6+
import { writeFileSync } from 'node:fs';
7+
import { spawn } from 'node:child_process';
8+
import { once } from 'node:events';
9+
import tmpdir from '../common/tmpdir.js';
10+
import fixtures from '../common/fixtures.js';
11+
import { skipIfNoWatchModeSignals } from '../common/watch.js';
12+
13+
skipIfNoWatchModeSignals();
14+
15+
tmpdir.refresh();
16+
const indexPath = tmpdir.resolve('kill-signal-for-watch.js');
17+
const indexContents = fixtures.readSync('kill-signal-for-watch.js', 'utf8');
18+
writeFileSync(indexPath, indexContents);
19+
20+
const child = spawn(
21+
process.execPath,
22+
['--watch', '--watch-kill-signal', 'SIGINT', indexPath],
23+
{
24+
cwd: tmpdir.path,
25+
stdio: ['inherit', 'pipe', 'inherit', 'ipc'],
26+
}
27+
);
28+
29+
let stdout = '';
30+
child.stdout.on('data', (data) => {
31+
stdout += `${data}`;
32+
if (/__(SIGINT|SIGTERM) received__/.test(stdout)) {
33+
child.kill();
34+
}
35+
});
36+
37+
child.on('message', (msg) => {
38+
if (msg === 'script ready') {
39+
writeFileSync(indexPath, indexContents);
40+
}
41+
});
42+
43+
await once(child, 'exit');
44+
45+
assert.match(stdout, /__SIGINT received__/);
46+
assert.doesNotMatch(stdout, /__SIGTERM received__/);

0 commit comments

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