'use strict'; require('../common'); // Tests that node exits consistently on bad option syntax. const assert = require('assert'); const { spawnSync } = require('child_process'); if (process.features.inspector) { requiresArgument('--inspect-port'); requiresArgument('--inspect-port='); requiresArgument('--debug-port'); requiresArgument('--debug-port='); } requiresArgument('--eval'); missingOption('--allow-fs-read=*', '--experimental-permission'); missingOption('--allow-fs-write=*', '--experimental-permission'); function missingOption(option, requiredOption) { const r = spawnSync(process.execPath, [option], { encoding: 'utf8' }); assert.strictEqual(r.status, 1); const message = `${requiredOption} is required`; assert.match(r.stderr, new RegExp(message)); } function requiresArgument(option) { const r = spawnSync(process.execPath, [option], { encoding: 'utf8' }); assert.strictEqual(r.status, 9); const msg = r.stderr.split(/\r?\n/)[0]; assert.strictEqual( msg, `${process.execPath}: ${option} requires an argument` ); }