From e7214f56b6ead3cbb50f758d9883ae5ea1dd01c5 Mon Sep 17 00:00:00 2001 From: Evaline Ju Date: Sun, 4 Oct 2020 21:02:20 -0400 Subject: [PATCH 1/2] Change serializer errors to use error codes --- lib/nodejs/serializer.js | 18 ++++++++++++++---- test/node-unit/serializer.spec.js | 20 ++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/nodejs/serializer.js b/lib/nodejs/serializer.js index 448cb52e45..6d595c9e81 100644 --- a/lib/nodejs/serializer.js +++ b/lib/nodejs/serializer.js @@ -7,7 +7,10 @@ 'use strict'; const {type} = require('../utils'); -const {createInvalidArgumentTypeError} = require('../errors'); +const { + createInvalidArgumentTypeError, + createInvalidArgumentValueError +} = require('../errors'); // this is not named `mocha:parallel:serializer` because it's noisy and it's // helpful to be able to write `DEBUG=mocha:parallel*` and get everything else. const debug = require('debug')('mocha:serializer'); @@ -131,7 +134,12 @@ class SerializableEvent { */ constructor(eventName, originalValue, originalError) { if (!eventName) { - throw new Error('expected a non-empty `eventName` string argument'); + throw createInvalidArgumentValueError( + 'Empty `eventName` string argument', + 'eventName', + eventName, + 'is empty' + ); } /** * The event name. @@ -140,8 +148,10 @@ class SerializableEvent { this.eventName = eventName; const originalValueType = type(originalValue); if (originalValueType !== 'object' && originalValueType !== 'undefined') { - throw new Error( - `expected object, received [${originalValueType}]: ${originalValue}` + throw createInvalidArgumentTypeError( + `Expected object but received ${originalValueType}`, + 'originalValue', + 'object' ); } /** diff --git a/test/node-unit/serializer.spec.js b/test/node-unit/serializer.spec.js index 86848d90b4..2286332d55 100644 --- a/test/node-unit/serializer.spec.js +++ b/test/node-unit/serializer.spec.js @@ -88,22 +88,18 @@ describe('serializer', function() { describe('SerializableEvent', function() { describe('constructor', function() { describe('when called without `eventName`', function() { - it('should throw', function() { - expect( - () => new SerializableEvent(), - 'to throw', - /expected a non-empty `eventName`/ - ); + it('should throw "invalid arg value" error', function() { + expect(() => new SerializableEvent(), 'to throw', { + code: 'ERR_MOCHA_INVALID_ARG_VALUE' + }); }); }); describe('when called with a non-object `rawObject`', function() { - it('should throw', function() { - expect( - () => new SerializableEvent('blub', 'glug'), - 'to throw', - /expected object, received \[string\]/ - ); + it('should throw "invalid arg type" error', function() { + expect(() => new SerializableEvent('blub', 'glug'), 'to throw', { + code: 'ERR_MOCHA_INVALID_ARG_TYPE' + }); }); }); }); From 14b116b5dfb73c336d6be2c7290e624d7ccdd21c Mon Sep 17 00:00:00 2001 From: Evaline Ju Date: Thu, 8 Oct 2020 21:47:23 -0400 Subject: [PATCH 2/2] fix: Check serializer argument type for empty string --- lib/nodejs/serializer.js | 10 +++------- test/node-unit/serializer.spec.js | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/nodejs/serializer.js b/lib/nodejs/serializer.js index 6d595c9e81..70640bc5b1 100644 --- a/lib/nodejs/serializer.js +++ b/lib/nodejs/serializer.js @@ -7,10 +7,7 @@ 'use strict'; const {type} = require('../utils'); -const { - createInvalidArgumentTypeError, - createInvalidArgumentValueError -} = require('../errors'); +const {createInvalidArgumentTypeError} = require('../errors'); // this is not named `mocha:parallel:serializer` because it's noisy and it's // helpful to be able to write `DEBUG=mocha:parallel*` and get everything else. const debug = require('debug')('mocha:serializer'); @@ -134,11 +131,10 @@ class SerializableEvent { */ constructor(eventName, originalValue, originalError) { if (!eventName) { - throw createInvalidArgumentValueError( + throw createInvalidArgumentTypeError( 'Empty `eventName` string argument', 'eventName', - eventName, - 'is empty' + 'string' ); } /** diff --git a/test/node-unit/serializer.spec.js b/test/node-unit/serializer.spec.js index 2286332d55..0169338a05 100644 --- a/test/node-unit/serializer.spec.js +++ b/test/node-unit/serializer.spec.js @@ -90,7 +90,7 @@ describe('serializer', function() { describe('when called without `eventName`', function() { it('should throw "invalid arg value" error', function() { expect(() => new SerializableEvent(), 'to throw', { - code: 'ERR_MOCHA_INVALID_ARG_VALUE' + code: 'ERR_MOCHA_INVALID_ARG_TYPE' }); }); });