1'use strict'; 2 3require('../common'); 4const assert = require('assert'); 5 6// Assert legit flags are allowed, and bogus flags are disallowed 7{ 8 const goodFlags = [ 9 '--perf_basic_prof', 10 '--perf-basic-prof', 11 'perf-basic-prof', 12 '--perf_basic-prof', 13 'perf_basic-prof', 14 'perf_basic_prof', 15 '-r', 16 'r', 17 '--stack-trace-limit=100', 18 '--stack-trace-limit=-=xX_nodejs_Xx=-', 19 ].concat(process.features.inspector ? [ 20 '--inspect-brk', 21 'inspect-brk', 22 '--inspect_brk', 23 ] : []); 24 25 const badFlags = [ 26 'INSPECT-BRK', 27 '--INSPECT-BRK', 28 '--r', 29 '-R', 30 '---inspect-brk', 31 '--cheeseburgers', 32 ]; 33 34 goodFlags.forEach((flag) => { 35 assert.strictEqual( 36 process.allowedNodeEnvironmentFlags.has(flag), 37 true, 38 `flag should be in set: ${flag}` 39 ); 40 }); 41 42 badFlags.forEach((flag) => { 43 assert.strictEqual( 44 process.allowedNodeEnvironmentFlags.has(flag), 45 false, 46 `flag should not be in set: ${flag}` 47 ); 48 }); 49} 50 51// Assert all "canonical" flags begin with dash(es) 52{ 53 process.allowedNodeEnvironmentFlags.forEach((flag) => { 54 assert(/^--?[a-zA-Z0-9._-]+$/.test(flag), 55 `Unexpected format for flag ${flag}`); 56 }); 57} 58 59// Assert immutability of process.allowedNodeEnvironmentFlags 60{ 61 assert.strictEqual(Object.isFrozen(process.allowedNodeEnvironmentFlags), 62 true); 63 64 process.allowedNodeEnvironmentFlags.add('foo'); 65 assert.strictEqual(process.allowedNodeEnvironmentFlags.has('foo'), false); 66 process.allowedNodeEnvironmentFlags.forEach((flag) => { 67 assert.strictEqual(flag === 'foo', false); 68 }); 69 70 process.allowedNodeEnvironmentFlags.clear(); 71 assert.strictEqual(process.allowedNodeEnvironmentFlags.size > 0, true); 72 73 const size = process.allowedNodeEnvironmentFlags.size; 74 process.allowedNodeEnvironmentFlags.delete('-r'); 75 assert.strictEqual(process.allowedNodeEnvironmentFlags.size, size); 76} 77