Skip to content

Commit 6102dd2

Browse files
authored
Merge pull request #108 from Puppo/new-major
refactor: issue5.js and update test structure
2 parents aa1145c + 78a3482 commit 6102dd2

File tree

4 files changed

+40
-53
lines changed

4 files changed

+40
-53
lines changed

test/fixtures/issue5.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
const int = setInterval(() => {}, 10)
44
process.on('message', () => {
5-
process._rawDebug('!!! doit')
65
clearInterval(int)
76
replication()
87
})

test/index.test.js

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,7 @@
33
const { after, test } = require('node:test')
44
const path = require('node:path')
55
const { spawn } = require('node:child_process')
6-
const { createTcpListener, createUdpListener } = require('./utils')
7-
8-
function withResolvers () {
9-
let _resolve
10-
let _reject
11-
const promise = new Promise((resolve, reject) => {
12-
_resolve = resolve
13-
_reject = reject
14-
})
15-
return { promise, resolve: _resolve, reject: _reject }
16-
}
6+
const { createTcpListener, createUdpListener, withResolvers } = require('./utils')
177

188
// We need this `after` nonsense because no amount of removing listeners
199
// or sending termination signals will stop the child processes.

test/issue5.test.js

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,47 @@
11
'use strict'
22

3-
const test = require('node:test')
4-
const net = require('node:net')
5-
const path = require('node:path')
6-
const { fork, spawn } = require('node:child_process')
7-
const { Transform } = require('node:stream')
3+
const { test } = require('node:test')
4+
const net = require('net')
5+
const path = require('path')
6+
const { spawn } = require('child_process')
7+
const { withResolvers } = require('./utils')
88

9-
const { default: why } = require('why-is-node-running')
10-
11-
// https://github.com/pinojs/pino-socket/issues/5
12-
test('issue #5', (t, done) => {
9+
test('issue #5', async function (t) {
1310
t.plan(2)
11+
const {
12+
promise: scriptPromise,
13+
resolve: scriptResolve
14+
} = withResolvers()
15+
const {
16+
promise: psockPromise,
17+
resolve: psockResolve
18+
} = withResolvers()
1419

1520
const server = net.createServer()
1621
server.unref()
1722
server.listen(() => {
1823
const { address, port } = server.address()
1924
const scriptPath = path.join(__dirname, 'fixtures', 'issue5.js')
25+
const script = spawn('node', [scriptPath], { stdio: ['pipe', 'pipe', 'pipe', 'ipc'] })
26+
script.send('start')
2027
const psockPath = path.join(__dirname, '..', 'psock.js')
21-
const script = fork(scriptPath, {
22-
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
23-
})
24-
const psock = spawn(
25-
process.argv0,
26-
[psockPath, '-a', address, '-p', port, '-m', 'tcp', '-ne']
27-
)
28+
const psock = spawn('node', [psockPath, '-a', address, '-p', port, '-m', 'tcp', '-e'])
2829

29-
script.on('close', (code, signal) => {
30-
process._rawDebug('!!! script close', code, signal)
30+
script.on('close', (code) => {
3131
t.assert.equal(code, 1)
32+
scriptResolve()
3233
})
33-
// script.stdout.pipe(process.stdout)
34-
script.stdout.pipe(psock.stdin)
35-
// psock.stdin.pipe(process.stdout)
36-
psock.stdin.pipe(
37-
new Transform({
38-
transform (chunk, enc, cb) {
39-
process._rawDebug('!!! psock.stdin', chunk.toString())
40-
cb(null, chunk)
41-
}
42-
})
43-
)
4434

4535
let output = ''
46-
psock.stdin.on('data', (data) => {
47-
process._rawDebug('!!! psock data', data.toString())
48-
output += data.toString()
49-
})
50-
psock.on('close', (code, signal) => {
51-
process._rawDebug('!!! psock close', code, signal)
52-
t.assert.equal(output.length > 0, true)
53-
done()
36+
script.stdout.pipe(psock.stdin)
37+
psock.stdout.on('data', chunk => {
38+
output += chunk.toString()
5439
})
55-
56-
script.send('doit', (error) => {
57-
process._rawDebug('!!! send result', error)
40+
psock.on('close', () => {
41+
t.assert.strictEqual(output.length > 0, true)
42+
psockResolve()
5843
})
5944
})
45+
46+
await Promise.all([scriptPromise, psockPromise])
6047
})

test/utils.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,19 @@ function createSecureTcpListener (msgHandler) {
4646
})
4747
}
4848

49+
function withResolvers () {
50+
let _resolve
51+
let _reject
52+
const promise = new Promise((resolve, reject) => {
53+
_resolve = resolve
54+
_reject = reject
55+
})
56+
return { promise, resolve: _resolve, reject: _reject }
57+
}
58+
4959
module.exports = {
5060
createSecureTcpListener,
5161
createTcpListener,
52-
createUdpListener
62+
createUdpListener,
63+
withResolvers
5364
}

0 commit comments

Comments
 (0)