1'use strict'; 2 3require('../common'); 4 5// Tests basic functionality of util.deprecate(). 6 7const assert = require('assert'); 8const util = require('util'); 9 10const expectedWarnings = new Map(); 11 12// Emits deprecation only once if same function is called. 13{ 14 const msg = 'fhqwhgads'; 15 const fn = util.deprecate(() => {}, msg); 16 expectedWarnings.set(msg, { code: undefined, count: 1 }); 17 fn(); 18 fn(); 19} 20 21// Emits deprecation twice for different functions. 22{ 23 const msg = 'sterrance'; 24 const fn1 = util.deprecate(() => {}, msg); 25 const fn2 = util.deprecate(() => {}, msg); 26 expectedWarnings.set(msg, { code: undefined, count: 2 }); 27 fn1(); 28 fn2(); 29} 30 31// Emits deprecation only once if optional code is the same, even for different 32// functions. 33{ 34 const msg = 'cannonmouth'; 35 const code = 'deprecatesque'; 36 const fn1 = util.deprecate(() => {}, msg, code); 37 const fn2 = util.deprecate(() => {}, msg, code); 38 expectedWarnings.set(msg, { code, count: 1 }); 39 fn1(); 40 fn2(); 41 fn1(); 42 fn2(); 43} 44 45process.on('warning', (warning) => { 46 assert.strictEqual(warning.name, 'DeprecationWarning'); 47 assert.ok(expectedWarnings.has(warning.message)); 48 const expected = expectedWarnings.get(warning.message); 49 assert.strictEqual(warning.code, expected.code); 50 expected.count = expected.count - 1; 51 if (expected.count === 0) 52 expectedWarnings.delete(warning.message); 53}); 54 55process.on('exit', () => { 56 assert.deepStrictEqual(expectedWarnings, new Map()); 57}); 58