From 762a303e1fdec6a3d13c0f3fc5dd2ceb33d84e9a Mon Sep 17 00:00:00 2001 From: Nathan Friedly Date: Tue, 11 Oct 2016 15:43:36 -0400 Subject: [PATCH] test: validate 'expected' argument to mustCall() instead of silently overwriting invalid values with the default PR-URL: https://github.com/nodejs/node/pull/10692 Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Luigi Pinca Reviewed-By: Michal Zasso Reviewed-By: Rich Trott --- test/common.js | 5 ++++- test/parallel/test-common.js | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/test/common.js b/test/common.js index d95dd77019..75fcc58379 100644 --- a/test/common.js +++ b/test/common.js @@ -424,7 +424,10 @@ function runCallChecks(exitCode) { exports.mustCall = function(fn, expected) { - if (typeof expected !== 'number') expected = 1; + if (expected === undefined) + expected = 1; + else if (typeof expected !== 'number') + throw new TypeError(`Invalid expected value: ${expected}`); const context = { expected: expected, diff --git a/test/parallel/test-common.js b/test/parallel/test-common.js index 1adbf0098a..17f41840e4 100644 --- a/test/parallel/test-common.js +++ b/test/parallel/test-common.js @@ -5,3 +5,11 @@ const assert = require('assert'); common.globalCheck = false; global.gc = 42; // Not a valid global unless --expose_gc is set. assert.deepStrictEqual(common.leakedGlobals(), ['gc']); + +assert.throws(function() { + common.mustCall(function() {}, 'foo'); +}, /^TypeError: Invalid expected value: foo$/); + +assert.throws(function() { + common.mustCall(function() {}, /foo/); +}, /^TypeError: Invalid expected value: \/foo\/$/);