|
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