diff --git a/harness/assert.js b/harness/assert.js index 97d585fa9254c4f0db3fb48207c40857011e1eab..1cf2c9a48947ab6a552357cfc0dd43224867794d 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 0000000000000000000000000000000000000000..741751498a20e5b361e44dd1f578c4277fc223d1 --- /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.'); +}