assert.throws fails if second argument is not a function

This commit is contained in:
Leonardo Balter 2016-03-14 17:59:15 -04:00 committed by Mike Pennisi
parent e451026965
commit e7f6cd7f86
2 changed files with 64 additions and 2 deletions

View File

@ -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) {

View File

@ -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.');
}