test,process: run 'abort' suite on Windows · nodejs/node@e0c4f0b

11

'use strict';

22

const common = require('../common');

33

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');

6677

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')));

1210

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+

}));

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));

2428

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}`);

2732

}));

2833

}