From f658dc0089624a12ec00889de9377fc54ce97c1b Mon Sep 17 00:00:00 2001 From: Robert Pamely Date: Tue, 6 Nov 2018 16:01:19 +0000 Subject: [PATCH] test: test dgram socket prints deprecation warnings Adds tests assert the deprecated properties and methods in the dgram socket warn. It runs each test in a separate child process since each deprecation will only warn once. --- test/parallel/test-dgram-deprecation-error.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 test/parallel/test-dgram-deprecation-error.js diff --git a/test/parallel/test-dgram-deprecation-error.js b/test/parallel/test-dgram-deprecation-error.js new file mode 100644 index 00000000000000..89cde12fd37cf1 --- /dev/null +++ b/test/parallel/test-dgram-deprecation-error.js @@ -0,0 +1,84 @@ +'use strict'; + +const assert = require('assert'); +const common = require('../common'); +const dgram = require('dgram'); +const fork = require('child_process').fork; + +const sock = dgram.createSocket('udp4'); + +const testNumber = parseInt(process.argv[2], 10); + +const propertiesToTest = [ + '_handle', + '_receiving', + '_bindState', + '_queue', + '_reuseAddr' +]; + +const methodsToTest = [ + '_healthCheck', + '_stopReceiving' +]; + +const propertyCases = propertiesToTest.map((propName) => { + return [ + () => { + // Test property getter + common.expectWarning( + 'DeprecationWarning', + `Socket.prototype.${propName} is deprecated`, + 'DEP0112' + ); + sock[propName]; + }, + () => { + // Test property setter + common.expectWarning( + 'DeprecationWarning', + `Socket.prototype.${propName} is deprecated`, + 'DEP0112' + ); + sock[propName] = null; + } + ]; +}); + +const methodCases = methodsToTest.map((propName) => { + return () => { + common.expectWarning( + 'DeprecationWarning', + `Socket.prototype.${propName}() is deprecated`, + 'DEP0112' + ); + sock[propName](); + }; +}); + +const cases = [].concat( + ...propertyCases, + ...methodCases +); + +// If we weren't passed a test ID then we need to spawn all of the cases. +// We run the cases in child processes since deprecations print once. +if (Number.isNaN(testNumber)) { + const children = cases.map((_case, i) => + fork(process.argv[1], [ String(i) ])); + + children.forEach((child) => { + child.on('close', (code) => { + // Pass on child exit code + if (code > 0) { + process.exit(code); + } + }); + }); + + return; +} + +// We were passed a test ID - run the test case +assert.ok(cases[testNumber]); +cases[testNumber]();