'use strict'; // Flags: --expose-internals // Tests that --pending-deprecation and NODE_PENDING_DEPRECATION both set the // `require('internal/options').getOptionValue('--pending-deprecation')` // flag that is used to determine if pending deprecation messages should be // shown. The test is performed by launching two child processes that run // this same test script with different arguments. If those exit with // code 0, then the test passes. If they don't, it fails. // TODO(joyeecheung): instead of testing internals, test the actual features // pending deprecations. const common = require('../common'); const assert = require('assert'); const fork = require('child_process').fork; const { getOptionValue } = require('internal/options'); function message(name) { return `${name} did not affect getOptionValue('--pending-deprecation')`; } switch (process.argv[2]) { case 'env': case 'switch': assert.strictEqual( getOptionValue('--pending-deprecation'), true ); break; default: // Verify that the flag is off by default. const envvar = process.env.NODE_PENDING_DEPRECATION; assert.strictEqual( getOptionValue('--pending-deprecation'), !!(envvar && envvar[0] === '1') ); // Test the --pending-deprecation command line switch. fork(__filename, ['switch'], { execArgv: ['--pending-deprecation', '--expose-internals'], silent: true }).on('exit', common.mustCall((code) => { assert.strictEqual(code, 0, message('--pending-deprecation')); })); // Test the --pending_deprecation command line switch. fork(__filename, ['switch'], { execArgv: ['--pending_deprecation', '--expose-internals'], silent: true }).on('exit', common.mustCall((code) => { assert.strictEqual(code, 0, message('--pending_deprecation')); })); // Test the NODE_PENDING_DEPRECATION environment var. fork(__filename, ['env'], { env: Object.assign({}, process.env, { NODE_PENDING_DEPRECATION: 1 }), execArgv: ['--expose-internals'], silent: true }).on('exit', common.mustCall((code) => { assert.strictEqual(code, 0, message('NODE_PENDING_DEPRECATION')); })); }