test,process: run 'abort' suite on Windows · nodejs/node@e0c4f0b
11'use strict';
22const common = require('../common');
33const 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');
6677if (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')));
1210server.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+}));
2017}));
2118} 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));
2428child.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}`);
2732}));
2833}