util: adhere to noDeprecation
set at runtime
Until now, the docs stated that `process.noDeprecation` could be set at runtime, but before any modules were loaded. That was not true, because `lib/internal/util.js` was loaded during the process startup process, so setting the flag at runtime was pointless. Minimal test case: process.noDeprecation = true; process.EventEmitter; This patch moves checking `process.noDeprecation` to the place where it was actually used. PR-URL: https://github.com/nodejs/node/pull/6683 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
5d38d543cd
commit
a4564f3649
@ -67,9 +67,9 @@ exports.puts = util.deprecate(() => {
|
|||||||
|
|
||||||
It returns a modified function which warns once by default.
|
It returns a modified function which warns once by default.
|
||||||
|
|
||||||
If `--no-deprecation` is set then this function is a NO-OP. Configurable
|
This function does nothing if either the `--no-deprecation` command
|
||||||
at run-time through the `process.noDeprecation` boolean (only effective
|
line flag is used, or the `process.noDeprecation` property is set to
|
||||||
when set before a module is loaded.)
|
`true` *prior* to the first deprecation warning.
|
||||||
|
|
||||||
If `--trace-deprecation` is set, a warning and a stack trace are logged
|
If `--trace-deprecation` is set, a warning and a stack trace are logged
|
||||||
to the console the first time the deprecated API is used. Configurable
|
to the console the first time the deprecated API is used. Configurable
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
const binding = process.binding('util');
|
const binding = process.binding('util');
|
||||||
const prefix = `(${process.release.name}:${process.pid}) `;
|
const prefix = `(${process.release.name}:${process.pid}) `;
|
||||||
const noDeprecation = process.noDeprecation;
|
|
||||||
|
|
||||||
exports.getHiddenValue = binding.getHiddenValue;
|
exports.getHiddenValue = binding.getHiddenValue;
|
||||||
exports.setHiddenValue = binding.setHiddenValue;
|
exports.setHiddenValue = binding.setHiddenValue;
|
||||||
@ -16,7 +15,7 @@ exports.deprecate = function(fn, msg) {
|
|||||||
// All the internal deprecations have to use this function only, as this will
|
// All the internal deprecations have to use this function only, as this will
|
||||||
// prepend the prefix to the actual message.
|
// prepend the prefix to the actual message.
|
||||||
exports.printDeprecationMessage = function(msg, warned, ctor) {
|
exports.printDeprecationMessage = function(msg, warned, ctor) {
|
||||||
if (warned || noDeprecation)
|
if (warned || process.noDeprecation)
|
||||||
return true;
|
return true;
|
||||||
process.emitWarning(msg, 'DeprecationWarning',
|
process.emitWarning(msg, 'DeprecationWarning',
|
||||||
ctor || exports.printDeprecationMessage);
|
ctor || exports.printDeprecationMessage);
|
||||||
|
33
test/parallel/test-process-no-deprecation.js
Normal file
33
test/parallel/test-process-no-deprecation.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
'use strict';
|
||||||
|
// Flags: --expose_internals --no-warnings
|
||||||
|
|
||||||
|
// The --no-warnings flag only supresses writing the warning to stderr, not the
|
||||||
|
// emission of the corresponding event. This test file can be run without it.
|
||||||
|
|
||||||
|
process.noDeprecation = true;
|
||||||
|
|
||||||
|
const common = require('../common');
|
||||||
|
const assert = require('assert');
|
||||||
|
|
||||||
|
function listener() {
|
||||||
|
common.fail('received unexpected warning');
|
||||||
|
}
|
||||||
|
|
||||||
|
process.addListener('warning', listener);
|
||||||
|
|
||||||
|
const internalUtil = require('internal/util');
|
||||||
|
internalUtil.printDeprecationMessage('Something is deprecated.');
|
||||||
|
|
||||||
|
// The warning would be emitted in the next tick, so continue after that.
|
||||||
|
process.nextTick(common.mustCall(() => {
|
||||||
|
// Check that deprecations can be re-enabled.
|
||||||
|
process.noDeprecation = false;
|
||||||
|
process.removeListener('warning', listener);
|
||||||
|
|
||||||
|
process.addListener('warning', common.mustCall((warning) => {
|
||||||
|
assert.strictEqual(warning.name, 'DeprecationWarning');
|
||||||
|
assert.strictEqual(warning.message, 'Something else is deprecated.');
|
||||||
|
}));
|
||||||
|
|
||||||
|
internalUtil.printDeprecationMessage('Something else is deprecated.');
|
||||||
|
}));
|
Loading…
x
Reference in New Issue
Block a user