From c3e4c128b9fb426c4e3296c7c0bdbb6c4f9103dd Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Sun, 27 Aug 2017 22:31:29 -0400 Subject: [PATCH] test,process: run 'abort' suite on Windows PR-URL: https://github.com/nodejs/node/pull/15056 Fixes: https://github.com/nodejs/node/issues/14012 Refs: https://github.com/nodejs/node/pull/14013 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Rich Trott --- test/abort/test-http-parser-consume.js | 39 +++++++++++++---------- test/abort/test-process-abort-exitcode.js | 2 +- vcbuild.bat | 2 +- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/test/abort/test-http-parser-consume.js b/test/abort/test-http-parser-consume.js index 4a05a299a8e956..9115aba70dbf17 100644 --- a/test/abort/test-http-parser-consume.js +++ b/test/abort/test-http-parser-consume.js @@ -1,28 +1,33 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); -const http = require('http'); -const spawn = require('child_process').spawn; +const { createServer, get } = require('http'); +const { spawn } = require('child_process'); if (process.argv[2] === 'child') { - const server = http.createServer(common.mustCall((req, res) => { - res.end('hello'); - })); - + // sub-process + const server = createServer(common.mustCall((_, res) => res.end('h'))); server.listen(0, common.mustCall((s) => { - const rr = http.get( - { port: server.address().port }, - common.mustCall((d) => { - // This bad input (0) should abort the parser and the process - rr.parser.consume(0); - server.close(); - })); + const rr = get({ port: server.address().port }, common.mustCall(() => { + // This bad input (0) should abort the parser and the process + rr.parser.consume(0); + // This line should be unreachanble. + assert.fail('this should be unreachable'); + })); })); } else { - const child = spawn(process.execPath, [__filename, 'child'], - { stdio: 'inherit' }); + // super-proces + const child = spawn(process.execPath, [__filename, 'child']); + child.stdout.on('data', common.mustNotCall()); + + let stderr = ''; + child.stderr.on('data', common.mustCallAtLeast((data) => { + assert(Buffer.isBuffer(data)); + stderr += data.toString('utf8'); + }, 1)); child.on('exit', common.mustCall((code, signal) => { - assert(common.nodeProcessAborted(code, signal), - 'process should have aborted, but did not'); + assert(stderr.includes('failed'), `stderr: ${stderr}`); + const didAbort = common.nodeProcessAborted(code, signal); + assert(didAbort, `process did not abort, code:${code} signal:${signal}`); })); } diff --git a/test/abort/test-process-abort-exitcode.js b/test/abort/test-process-abort-exitcode.js index b29f9dc75cd202..2aa44024ec05b9 100644 --- a/test/abort/test-process-abort-exitcode.js +++ b/test/abort/test-process-abort-exitcode.js @@ -14,7 +14,7 @@ if (process.argv[2] === 'child') { const child = spawn(process.execPath, [__filename, 'child']); child.on('exit', common.mustCall((code, signal) => { if (common.isWindows) { - assert.strictEqual(code, 3); + assert.strictEqual(code, 134); assert.strictEqual(signal, null); } else { assert.strictEqual(code, null); diff --git a/vcbuild.bat b/vcbuild.bat index 6dd053999d55e2..cbe326c15a71c8 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -44,7 +44,7 @@ set enable_static= set build_addons_napi= set test_node_inspect= set test_check_deopts= -set js_test_suites=async-hooks inspector known_issues message parallel sequential +set js_test_suites=abort async-hooks inspector known_issues message parallel sequential set v8_test_options= set v8_build_options= set "common_test_suites=%js_test_suites% doctool addons addons-napi&set build_addons=1&set build_addons_napi=1"