diff --git a/lib/cli/run-helpers.js b/lib/cli/run-helpers.js index 95d1c2fc08..f78329d3eb 100644 --- a/lib/cli/run-helpers.js +++ b/lib/cli/run-helpers.js @@ -137,14 +137,14 @@ exports.handleFiles = ({ spec = [] } = {}) => { let files = []; - const errors = []; + const missingMessages = []; spec.forEach(arg => { let newFiles; try { newFiles = utils.lookupFiles(arg, extension, recursive); } catch (err) { if (err.code === 'ERR_MOCHA_NO_FILES_MATCH_PATTERN') { - errors.push(err.message); + missingMessages.push(err.message); return; } @@ -164,14 +164,16 @@ exports.handleFiles = ({ }); if (!files.length) { - // print messages as an error - errors.forEach(message => { - console.error(ansi.red(`Error: ${message}`)); - }); + if (missingMessages.length === 1) { + // give full message details when only 1 file is missing + console.error(ansi.red(`Error: ${missingMessages[0]}`)); + } else { + console.error(ansi.red('Error: No test files found')); + } process.exit(1); } else { // print messages as an warning - errors.forEach(message => { + missingMessages.forEach(message => { console.warn(ansi.yellow(`Warning: ${message}`)); }); } diff --git a/test/integration/glob.spec.js b/test/integration/glob.spec.js index da1f5f35c6..fc3f7bda9e 100644 --- a/test/integration/glob.spec.js +++ b/test/integration/glob.spec.js @@ -28,13 +28,23 @@ describe('globbing', function() { expect( results.stderr, 'to contain', - 'Error: Cannot find any files matching pattern "./*-none.js"' + 'Error: Cannot find any files matching pattern' ); }, done ); }); + it('should handle multiple non-matching patterns', function(done) { + testGlob.shouldFail( + './*-none.js ./*-none-twice.js', + function(results) { + expect(results.stderr, 'to contain', 'Error: No test files found'); + }, + done + ); + }); + it('should handle both matching and non-matching patterns in the same command', function(done) { testGlob.shouldSucceed( './*.js ./*-none.js', @@ -77,13 +87,23 @@ describe('globbing', function() { expect( results.stderr, 'to contain', - 'Error: Cannot find any files matching pattern "./*-none.js"' + 'Error: Cannot find any files matching pattern' ); }, done ); }); + it('should handle multiple non-matching patterns', function(done) { + testGlob.shouldFail( + '"./*-none.js" "./*-none-twice.js"', + function(results) { + expect(results.stderr, 'to contain', 'Error: No test files found'); + }, + done + ); + }); + it('should handle both matching and non-matching patterns in the same command', function(done) { testGlob.shouldSucceed( '"./*.js" "./*-none.js"', @@ -125,7 +145,7 @@ describe('globbing', function() { expect( results.stderr, 'to contain', - 'Error: Cannot find any files matching pattern "./**/*-none.js"' + 'Error: Cannot find any files matching pattern' ); }, done