From 86e7c61a070d056daec9a756b86aece9ec30c2a8 Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Wed, 12 Jul 2017 12:27:28 -0400 Subject: [PATCH] test: split test-cli-node-options * partitioning the subprocess groups * use `-e` instead of module * reduce maxBuffer PR-URL: https://github.com/nodejs/node/pull/14195 Fixes: https://github.com/nodejs/node/issues/14191 Reviewed-By: Rich Trott --- .../test-cli-node-options-disallowed.js | 40 ++++++++++++++ test/parallel/test-cli-node-options.js | 54 ++++--------------- 2 files changed, 49 insertions(+), 45 deletions(-) create mode 100644 test/parallel/test-cli-node-options-disallowed.js diff --git a/test/parallel/test-cli-node-options-disallowed.js b/test/parallel/test-cli-node-options-disallowed.js new file mode 100644 index 00000000000000..b55543bfa243bc --- /dev/null +++ b/test/parallel/test-cli-node-options-disallowed.js @@ -0,0 +1,40 @@ +'use strict'; +const common = require('../common'); +if (process.config.variables.node_without_node_options) + common.skip('missing NODE_OPTIONS support'); + +// Test options specified by env variable. + +const assert = require('assert'); +const exec = require('child_process').execFile; + +common.refreshTmpDir(); +process.chdir(common.tmpDir); + +disallow('--version'); +disallow('-v'); +disallow('--help'); +disallow('-h'); +disallow('--eval'); +disallow('-e'); +disallow('--print'); +disallow('-p'); +disallow('-pe'); +disallow('--check'); +disallow('-c'); +disallow('--interactive'); +disallow('-i'); +disallow('--v8-options'); +disallow('--'); +disallow('--no_warnings'); // Node options don't allow '_' instead of '-'. + +function disallow(opt) { + const env = Object.assign({}, process.env, { NODE_OPTIONS: opt }); + exec(process.execPath, { env }, common.mustCall(function(err) { + const message = err.message.split(/\r?\n/)[1]; + const expect = `${process.execPath}: ${opt} is not allowed in NODE_OPTIONS`; + + assert.strictEqual(err.code, 9); + assert.strictEqual(message, expect); + })); +} diff --git a/test/parallel/test-cli-node-options.js b/test/parallel/test-cli-node-options.js index f52497e80839cb..94cf6ca5fbcdab 100644 --- a/test/parallel/test-cli-node-options.js +++ b/test/parallel/test-cli-node-options.js @@ -11,38 +11,7 @@ const exec = require('child_process').execFile; common.refreshTmpDir(); process.chdir(common.tmpDir); -disallow('--version'); -disallow('-v'); -disallow('--help'); -disallow('-h'); -disallow('--eval'); -disallow('-e'); -disallow('--print'); -disallow('-p'); -disallow('-pe'); -disallow('--check'); -disallow('-c'); -disallow('--interactive'); -disallow('-i'); -disallow('--v8-options'); -disallow('--'); -disallow('--no_warnings'); // Node options don't allow '_' instead of '-'. - -function disallow(opt) { - const options = { env: Object.assign({}, process.env, - { NODE_OPTIONS: opt }) }; - exec(process.execPath, options, common.mustCall(function(err) { - const message = err.message.split(/\r?\n/)[1]; - const expect = `${process.execPath}: ${opt} is not allowed in NODE_OPTIONS`; - - assert.strictEqual(err.code, 9); - assert.strictEqual(message, expect); - })); -} - -const printA = require.resolve('../fixtures/printA.js'); - -expect(`-r ${printA}`, 'A\nB\n'); +expect(`-r ${require.resolve('../fixtures/printA.js')}`, 'A\nB\n'); expect('--no-deprecation', 'B\n'); expect('--no-warnings', 'B\n'); expect('--trace-warnings', 'B\n'); @@ -54,6 +23,7 @@ expect('--track-heap-objects', 'B\n'); expect('--throw-deprecation', 'B\n'); expect('--zero-fill-buffers', 'B\n'); expect('--v8-pool-size=10', 'B\n'); + if (common.hasCrypto) { expect('--use-openssl-ca', 'B\n'); expect('--use-bundled-ca', 'B\n'); @@ -61,26 +31,20 @@ if (common.hasCrypto) { } // V8 options -expect('--abort-on-uncaught-exception', 'B\n'); -expect('--abort_on_uncaught_exception', 'B\n'); expect('--abort_on-uncaught_exception', 'B\n'); -expect('--max_old_space_size=0', 'B\n'); -expect('--max-old_space-size=0', 'B\n'); expect('--max-old-space-size=0', 'B\n'); function expect(opt, want) { - const printB = require.resolve('../fixtures/printB.js'); - const argv = [printB]; + const argv = ['-e', 'console.log("B")']; const opts = { env: Object.assign({}, process.env, { NODE_OPTIONS: opt }), - maxBuffer: 1000000000, + maxBuffer: 1e6, }; - exec(process.execPath, argv, opts, common.mustCall(function(err, stdout) { + exec(process.execPath, argv, opts, common.mustCall((err, stdout) => { assert.ifError(err); - if (!RegExp(want).test(stdout)) { - console.error('For %j, failed to find %j in: <\n%s\n>', - opt, want, stdout); - assert.fail(`Expected ${want}`); - } + if (stdout.includes(want)) return; + + const o = JSON.stringify(opt); + assert.fail(`For ${o}, failed to find ${want} in: <\n${stdout}\n>`); })); }