@@ -16,7 +16,6 @@ var Suite = require('./suite');
1616var esmUtils = require ( './nodejs/esm-utils' ) ;
1717var createStatsCollector = require ( './stats-collector' ) ;
1818const {
19- warn,
2019 createInvalidReporterError,
2120 createInvalidInterfaceError,
2221 createMochaInstanceAlreadyDisposedError,
@@ -335,35 +334,26 @@ Mocha.prototype.reporter = function (reporterName, reporterOptions) {
335334 }
336335 // Try to load reporters from process.cwd() and node_modules
337336 if ( ! reporter ) {
337+ let foundReporter ;
338338 try {
339- reporter = require ( reporterName ) ;
339+ foundReporter = require . resolve ( reporterName ) ;
340+ reporter = require ( foundReporter ) ;
340341 } catch ( err ) {
341- if ( err . code === 'MODULE_NOT_FOUND' ) {
342- // Try to load reporters from a path (absolute or relative)
343- try {
344- reporter = require ( path . resolve ( utils . cwd ( ) , reporterName ) ) ;
345- } catch ( _err ) {
346- _err . code === 'MODULE_NOT_FOUND'
347- ? warn ( `'${ reporterName } ' reporter not found` )
348- : warn (
349- `'${ reporterName } ' reporter blew up with error:\n ${ err . stack } `
350- ) ;
351- }
352- } else {
353- warn ( `'${ reporterName } ' reporter blew up with error:\n ${ err . stack } ` ) ;
342+ if ( foundReporter ) {
343+ throw createInvalidReporterError ( err . message , foundReporter ) ;
344+ }
345+ // Try to load reporters from a cwd-relative path
346+ try {
347+ reporter = require ( path . resolve ( reporterName ) ) ;
348+ } catch ( e ) {
349+ throw createInvalidReporterError ( e . message , reporterName ) ;
354350 }
355351 }
356352 }
357- if ( ! reporter ) {
358- throw createInvalidReporterError (
359- `invalid reporter '${ reporterName } '` ,
360- reporterName
361- ) ;
362- }
363353 this . _reporter = reporter ;
364354 }
365355 this . options . reporterOption = reporterOptions ;
366- // alias option name is used in public reporters xunit/tap/progress
356+ // alias option name is used in built-in reporters xunit/tap/progress
367357 this . options . reporterOptions = reporterOptions ;
368358 return this ;
369359} ;
0 commit comments