Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

util: adhere to noDeprecation set at runtime #6683

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions doc/api/util.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ exports.puts = util.deprecate(() => {

It returns a modified function which warns once by default.

If `--no-deprecation` is set then this function is a NO-OP. Configurable
at run-time through the `process.noDeprecation` boolean (only effective
when set before a module is loaded.)
This function does nothing if either the `--no-deprecation` command
line flag is used, or the `process.noDeprecation` property is set to
`true` *prior* to the first deprecation warning.

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
Expand Down
3 changes: 1 addition & 2 deletions lib/internal/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

const binding = process.binding('util');
const prefix = `(${process.release.name}:${process.pid}) `;
const noDeprecation = process.noDeprecation;

exports.getHiddenValue = binding.getHiddenValue;
exports.setHiddenValue = binding.setHiddenValue;
Expand All @@ -16,7 +15,7 @@ exports.deprecate = function(fn, msg) {
// All the internal deprecations have to use this function only, as this will
// prepend the prefix to the actual message.
exports.printDeprecationMessage = function(msg, warned, ctor) {
if (warned || noDeprecation)
if (warned || process.noDeprecation)
return true;
process.emitWarning(msg, 'DeprecationWarning',
ctor || exports.printDeprecationMessage);
Expand Down
33 changes: 33 additions & 0 deletions test/parallel/test-process-no-deprecation.js
Original file line number Diff line number Diff line change
@@ -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.');
}));