From 9e75c6002857147ba9a61860ec45f2b8929ea72c Mon Sep 17 00:00:00 2001 From: Alexey Shvayka Date: Mon, 31 Aug 2020 21:45:36 +0300 Subject: [PATCH] Gracefully handle nullish arguments in harness/compareArray --- harness/compareArray.js | 6 ++-- test/harness/compare-array-falsy-arguments.js | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 test/harness/compare-array-falsy-arguments.js diff --git a/harness/compareArray.js b/harness/compareArray.js index 0e84f55e51..43cb453179 100644 --- a/harness/compareArray.js +++ b/harness/compareArray.js @@ -30,10 +30,12 @@ compareArray.format = function(array) { return `[${array.map(String).join(', ')}]`; }; -assert.compareArray = function(actual, expected, message) { +assert.compareArray = function(actual, expected, message = '') { + assert(actual != null, `First argument shouldn't be nullish. ${message}`); + assert(expected != null, `Second argument shouldn't be nullish. ${message}`); var format = compareArray.format; assert( compareArray(actual, expected), - `Expected ${format(actual)} and ${format(expected)} to have the same contents. ${(message || '')}` + `Expected ${format(actual)} and ${format(expected)} to have the same contents. ${message}` ); }; diff --git a/test/harness/compare-array-falsy-arguments.js b/test/harness/compare-array-falsy-arguments.js new file mode 100644 index 0000000000..ad16a49a8e --- /dev/null +++ b/test/harness/compare-array-falsy-arguments.js @@ -0,0 +1,28 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + compareArray gracefully handles nullish arguments. +includes: [compareArray.js] +---*/ + +function assertThrows(func, errorMessage) { + var caught = false; + try { + func(); + } catch (error) { + caught = true; + assert.sameValue(error.constructor, Test262Error); + assert.sameValue(error.message, errorMessage); + } + + assert(caught, `Expected ${func} to throw, but it didn't.`); +} + +assertThrows(() => assert.compareArray(), "First argument shouldn't be nullish. "); +assertThrows(() => assert.compareArray(null, []), "First argument shouldn't be nullish. "); +assertThrows(() => assert.compareArray(null, [], "foo"), "First argument shouldn't be nullish. foo"); + +assertThrows(() => assert.compareArray([]), "Second argument shouldn't be nullish. "); +assertThrows(() => assert.compareArray([], undefined, "foo"), "Second argument shouldn't be nullish. foo");