diff --git a/test/parallel/test-cli-options-negation.js b/test/parallel/test-cli-options-negation.js new file mode 100644 index 00000000000000..bfbee635ab1a2e --- /dev/null +++ b/test/parallel/test-cli-options-negation.js @@ -0,0 +1,39 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const { spawnSync } = require('child_process'); + +// --warnings is on by default. +assertHasWarning(spawnWithFlags([])); + +// --warnings can be passed alone. +assertHasWarning(spawnWithFlags(['--warnings'])); + +// --no-warnings can be passed alone. +assertHasNoWarning(spawnWithFlags(['--no-warnings'])); + +// Last flag takes precedence. +assertHasWarning(spawnWithFlags(['--no-warnings', '--warnings'])); + +// Non-boolean flags cannot be negated. +assert(spawnWithFlags(['--no-max-http-header-size']).stderr.toString().includes( + '--no-max-http-header-size is an invalid negation because it is not ' + + 'a boolean option', +)); + +// Inexistant flags cannot be negated. +assert(spawnWithFlags(['--no-i-dont-exist']).stderr.toString().includes( + 'bad option: --no-i-dont-exist', +)); + +function spawnWithFlags(flags) { + return spawnSync(process.execPath, [...flags, '-e', 'new Buffer(0)']); +} + +function assertHasWarning(proc) { + assert(proc.stderr.toString().includes('Buffer() is deprecated')); +} + +function assertHasNoWarning(proc) { + assert(!proc.stderr.toString().includes('Buffer() is deprecated')); +}