From e7f6cd7f867ad02de59181d37267b9bb40bb3c5e Mon Sep 17 00:00:00 2001 From: Leonardo Balter <leonardo.balter@gmail.com> Date: Mon, 14 Mar 2016 17:59:15 -0400 Subject: [PATCH] assert.throws fails if second argument is not a function --- harness/assert.js | 5 ++- test/harness/assert-throws-null-fn.js | 61 +++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 test/harness/assert-throws-null-fn.js diff --git a/harness/assert.js b/harness/assert.js index 97d585fa92..1cf2c9a489 100644 --- a/harness/assert.js +++ b/harness/assert.js @@ -52,8 +52,9 @@ assert.notSameValue = function (actual, unexpected, message) { }; assert.throws = function (expectedErrorConstructor, func, message) { - if (func === undefined) { - $ERROR('assert.throws requires two arguments: the error constructor and a function to run'); + if (typeof func !== "function") { + $ERROR('assert.throws requires two arguments: the error constructor ' + + 'and a function to run'); return; } if (message === undefined) { diff --git a/test/harness/assert-throws-null-fn.js b/test/harness/assert-throws-null-fn.js new file mode 100644 index 0000000000..741751498a --- /dev/null +++ b/test/harness/assert-throws-null-fn.js @@ -0,0 +1,61 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Fails if second arg is not a function +---*/ + +var threw = false; + +try { + assert.throws(TypeError, null); +} catch(err) { + threw = true; + if (err.constructor !== Test262Error) { + $ERROR( + 'Expected a Test262Error, but a "' + err.constructor.name + + '" was thrown.' + ); + } +} + +if (threw === false) { + $ERROR('Expected a Test262Error, but no error was thrown.'); +} + +threw = false; + +try { + assert.throws(TypeError, {}); +} catch(err) { + threw = true; + if (err.constructor !== Test262Error) { + $ERROR( + 'Expected a Test262Error, but a "' + err.constructor.name + + '" was thrown.' + ); + } +} + +if (threw === false) { + $ERROR('Expected a Test262Error, but no error was thrown.'); +} + +threw = false; + +try { + assert.throws(TypeError, ""); +} catch(err) { + threw = true; + if (err.constructor !== Test262Error) { + $ERROR( + 'Expected a Test262Error, but a "' + err.constructor.name + + '" was thrown.' + ); + } +} + +if (threw === false) { + $ERROR('Expected a Test262Error, but no error was thrown.'); +} -- GitLab