|
1 | 1 | 'use strict'; |
2 | 2 | const common = require('../common'); |
3 | 3 | const assert = require('assert'); |
4 | | -const http = require('http'); |
5 | | -const spawn = require('child_process').spawn; |
| 4 | +const { createServer, get } = require('http'); |
| 5 | +const { spawn } = require('child_process'); |
6 | 6 |
|
7 | 7 | if (process.argv[2] === 'child') { |
8 | | - const server = http.createServer(common.mustCall((req, res) => { |
9 | | - res.end('hello'); |
10 | | - })); |
11 | | - |
| 8 | + // sub-process |
| 9 | + const server = createServer(common.mustCall((_, res) => res.end('h'))); |
12 | 10 | server.listen(0, common.mustCall((s) => { |
13 | | - const rr = http.get( |
14 | | - { port: server.address().port }, |
15 | | - common.mustCall((d) => { |
16 | | - // This bad input (0) should abort the parser and the process |
17 | | - rr.parser.consume(0); |
18 | | - server.close(); |
19 | | - })); |
| 11 | + const rr = get({ port: server.address().port }, common.mustCall(() => { |
| 12 | + // This bad input (0) should abort the parser and the process |
| 13 | + rr.parser.consume(0); |
| 14 | + // This line should be unreachanble. |
| 15 | + assert.fail('this should be unreachable'); |
| 16 | + })); |
20 | 17 | })); |
21 | 18 | } else { |
22 | | - const child = spawn(process.execPath, [__filename, 'child'], |
23 | | - { stdio: 'inherit' }); |
| 19 | + // super-proces |
| 20 | + const child = spawn(process.execPath, [__filename, 'child']); |
| 21 | + child.stdout.on('data', common.mustNotCall()); |
| 22 | + |
| 23 | + let stderr = ''; |
| 24 | + child.stderr.on('data', common.mustCallAtLeast((data) => { |
| 25 | + assert(Buffer.isBuffer(data)); |
| 26 | + stderr += data.toString('utf8'); |
| 27 | + }, 1)); |
24 | 28 | child.on('exit', common.mustCall((code, signal) => { |
25 | | - assert(common.nodeProcessAborted(code, signal), |
26 | | - 'process should have aborted, but did not'); |
| 29 | + assert(stderr.includes('failed'), `stderr: ${stderr}`); |
| 30 | + const didAbort = common.nodeProcessAborted(code, signal); |
| 31 | + assert(didAbort, `process did not abort, code:${code} signal:${signal}`); |
27 | 32 | })); |
28 | 33 | } |
0 commit comments