summaryrefslogtreecommitdiff
path: root/user/node/flaky-sigint-test.patch
blob: 0ac7a49b1f2c3b0bae5e23e2d02061a9453a4001 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
From 80ade7f46f3cd6b969153dbfc34c451fc624bdc6 Mon Sep 17 00:00:00 2001
From: Rich Trott <rtrott@gmail.com>
Date: Sun, 6 Nov 2022 22:41:28 -0800
Subject: [PATCH 1/2] test: fix flaky test-repl-sigint-nested-eval

There is a race condition where process.kill can be sent before the
target is ready to receive the signal.

Fixes: https://github.com/nodejs/node/issues/41123
---
 test/parallel/test-repl-sigint-nested-eval.js | 12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/test/parallel/test-repl-sigint-nested-eval.js b/test/parallel/test-repl-sigint-nested-eval.js
index 28e4d44b235c..5830e08629b9 100644
--- a/test/parallel/test-repl-sigint-nested-eval.js
+++ b/test/parallel/test-repl-sigint-nested-eval.js
@@ -12,7 +12,7 @@ const spawn = require('child_process').spawn;
 
 process.env.REPL_TEST_PPID = process.pid;
 const child = spawn(process.execPath, [ '-i' ], {
-  stdio: [null, null, 2]
+  stdio: [null, null, 2, 'ipc']
 });
 
 let stdout = '';
@@ -22,7 +22,8 @@ child.stdout.on('data', function(c) {
 });
 
 child.stdout.once('data', common.mustCall(() => {
-  process.on('SIGUSR2', common.mustCall(() => {
+  child.on('message', common.mustCall((msg) => {
+    assert.strictEqual(msg, 'repl is busy');
     process.kill(child.pid, 'SIGINT');
     child.stdout.once('data', common.mustCall(() => {
       // Make sure REPL still works.
@@ -30,9 +31,10 @@ child.stdout.once('data', common.mustCall(() => {
     }));
   }));
 
-  child.stdin.write('process.kill(+process.env.REPL_TEST_PPID, "SIGUSR2");' +
-                    'vm.runInThisContext("while(true){}", ' +
-                    '{ breakOnSigint: true });\n');
+  child.stdin.write(
+    'vm.runInThisContext("process.send(\'repl is busy\'); while(true){}", ' +
+    '{ breakOnSigint: true });\n'
+  );
 }));
 
 child.on('close', function(code) {

From 2d9cf095d12420ef825e9ba83deb46426561ddbb Mon Sep 17 00:00:00 2001
From: Rich Trott <rtrott@gmail.com>
Date: Thu, 10 Nov 2022 09:00:55 -0800
Subject: [PATCH 2/2] Update test/parallel/test-repl-sigint-nested-eval.js

Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 test/parallel/test-repl-sigint-nested-eval.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/test/parallel/test-repl-sigint-nested-eval.js b/test/parallel/test-repl-sigint-nested-eval.js
index 5830e08629b9..62eb46e0af67 100644
--- a/test/parallel/test-repl-sigint-nested-eval.js
+++ b/test/parallel/test-repl-sigint-nested-eval.js
@@ -10,7 +10,6 @@ if (!common.isMainThread)
 const assert = require('assert');
 const spawn = require('child_process').spawn;
 
-process.env.REPL_TEST_PPID = process.pid;
 const child = spawn(process.execPath, [ '-i' ], {
   stdio: [null, null, 2, 'ipc']
 });