mirror of
https://github.com/nodejs/node.git
synced 2024-11-29 23:16:30 +01:00
9d4ab90117
In addition to `--pending-deprecation`, emit a deprecation warning for usage of the `Buffer()` constructor for call sites that are outside of `node_modules`. The goal of this is to better target developers, rather than burdening users with an omnipresent and quickly ignored warning. This implements the result of a TSC meeting discussion from March 22, 2018. PR-URL: https://github.com/nodejs/node/pull/19524 Refs: https://github.com/nodejs/node/issues/19079#issuecomment-375121443 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Myles Borins <myles.borins@gmail.com>
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const child_process = require('child_process');
|
|
const assert = require('assert');
|
|
const common = require('../common');
|
|
|
|
if (process.env.NODE_PENDING_DEPRECATION)
|
|
common.skip('test does not work when NODE_PENDING_DEPRECATION is set');
|
|
|
|
function test(main, callSite, expected) {
|
|
const { stderr } = child_process.spawnSync(process.execPath, ['-p', `
|
|
process.mainModule = { filename: ${JSON.stringify(main)} };
|
|
|
|
vm.runInNewContext('new Buffer(10)', { Buffer }, {
|
|
filename: ${JSON.stringify(callSite)}
|
|
});`], { encoding: 'utf8' });
|
|
if (expected)
|
|
assert(stderr.includes('[DEP0005] DeprecationWarning'), stderr);
|
|
else
|
|
assert.strictEqual(stderr.trim(), '');
|
|
}
|
|
|
|
test('/a/node_modules/b.js', '/a/node_modules/x.js', true);
|
|
test('/a/node_modules/b.js', '/a/node_modules/foo/node_modules/x.js', false);
|
|
test('/a/node_modules/foo/node_modules/b.js', '/a/node_modules/x.js', false);
|
|
test('/node_modules/foo/b.js', '/node_modules/foo/node_modules/x.js', false);
|
|
test('/a.js', '/b.js', true);
|
|
test('/a.js', '/node_modules/b.js', false);
|
|
test('c:\\a\\node_modules\\b.js', 'c:\\a\\node_modules\\x.js', true);
|
|
test('c:\\a\\node_modules\\b.js',
|
|
'c:\\a\\node_modules\\foo\\node_modules\\x.js', false);
|
|
test('c:\\node_modules\\foo\\b.js',
|
|
'c:\\node_modules\\foo\\node_modules\\x.js', false);
|
|
test('c:\\a.js', 'c:\\b.js', true);
|
|
test('c:\\a.js', 'c:\\node_modules\\b.js', false);
|