From e375ba4f2504e9c8afa31a993105fad9e828f1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?TZ=20=7C=20=E5=A4=A9=E7=8C=AA?= Date: Fri, 29 Jun 2018 11:40:24 +0800 Subject: [PATCH] fix: should exit when no test files found (#100) --- lib/cmd/cov.js | 5 ++++- lib/cmd/test.js | 15 +++++++++++---- test/lib/cmd/cov.test.js | 10 ++++++++++ test/lib/cmd/test.test.js | 8 ++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/lib/cmd/cov.js b/lib/cmd/cov.js index 2dc2b9b1..c2dad72f 100644 --- a/lib/cmd/cov.js +++ b/lib/cmd/cov.js @@ -80,6 +80,7 @@ class CovCommand extends Command { // save coverage-xxxx.json to $PWD/coverage const covArgs = this.getCovArgs(context); + if (!covArgs) return; debug('covArgs: %j', covArgs); yield this.helper.forkNode(nycCli, covArgs, opt); } @@ -120,7 +121,9 @@ class CovCommand extends Command { covArgs.push(exclude); } covArgs.push(require.resolve('mocha/bin/_mocha')); - covArgs = covArgs.concat(this.formatTestArgs(context)); + const testArgs = this.formatTestArgs(context); + if (!testArgs) return; + covArgs = covArgs.concat(testArgs); return covArgs; } } diff --git a/lib/cmd/test.js b/lib/cmd/test.js index 33317d79..7045b289 100644 --- a/lib/cmd/test.js +++ b/lib/cmd/test.js @@ -45,6 +45,7 @@ class TestCommand extends Command { }; const mochaFile = require.resolve('mocha/bin/_mocha'); const testArgs = this.formatTestArgs(context); + if (!testArgs) return; debug('run test: %s %s', mochaFile, testArgs.join(' ')); yield this.helper.forkNode(mochaFile, testArgs, opt); } @@ -95,15 +96,21 @@ class TestCommand extends Command { testArgv.require = requireArr; // collect test files - let files = testArgv._.slice(); - if (!files.length) { - files = [ process.env.TESTS || `test/**/*.test.${testArgv.typescript ? 'ts' : 'js'}` ]; + let pattern = testArgv._.slice(); + if (!pattern.length) { + pattern = [ process.env.TESTS || `test/**/*.test.${testArgv.typescript ? 'ts' : 'js'}` ]; } + pattern = pattern.concat([ '!test/fixtures', '!test/node_modules' ]); // expand glob and skip node_modules and fixtures - files = globby.sync(files.concat([ '!test/fixtures', '!test/node_modules' ])); + const files = globby.sync(pattern); files.sort(); + if (files.length === 0) { + console.log(`No test files found with ${pattern}`); + return; + } + // auto add setup file as the first test file const setupFile = path.join(process.cwd(), 'test/.setup.js'); if (fs.existsSync(setupFile)) { diff --git a/test/lib/cmd/cov.test.js b/test/lib/cmd/cov.test.js index 16064e51..5558ba55 100644 --- a/test/lib/cmd/cov.test.js +++ b/test/lib/cmd/cov.test.js @@ -41,6 +41,15 @@ describe('test/lib/cmd/cov.test.js', () => { if (!process.env.NYC_ROOT_ID) assertCoverage(cwd); }); + it('should exit when not test files', done => { + mm(process.env, 'NYC_CWD', cwd); + coffee.fork(eggBin, [ 'cov', 'test/**/*.nth.js' ], { cwd }) + // .debug() + .expect('stdout', /No test files found/) + .expect('code', 0) + .end(done); + }); + it('should hotfixSpawnWrap success on mock windows', function* () { mm(process.env, 'TESTS', 'test/**/*.test.js'); mm(process.env, 'NYC_CWD', cwd); @@ -173,6 +182,7 @@ describe('test/lib/cmd/cov.test.js', () => { }); it('should set EGG_BIN_PREREQUIRE', function* () { + mm(process.env, 'TESTS', 'test/**/*.test.js'); const cwd = path.join(__dirname, '../../fixtures/prerequire'); yield coffee.fork(eggBin, [ 'cov' ], { cwd }) // .debug() diff --git a/test/lib/cmd/test.test.js b/test/lib/cmd/test.test.js index 304a1759..b7f76bb5 100644 --- a/test/lib/cmd/test.test.js +++ b/test/lib/cmd/test.test.js @@ -55,6 +55,14 @@ describe('test/lib/cmd/test.test.js', () => { .end(done); }); + it('should exit when not test files', done => { + coffee.fork(eggBin, [ 'test', 'test/**/*.nth.js' ], { cwd }) + // .debug() + .expect('stdout', /No test files found/) + .expect('code', 0) + .end(done); + }); + it('should use process.env.TEST_REPORTER', done => { mm(process.env, 'TESTS', 'test/**/*.test.js'); mm(process.env, 'TEST_REPORTER', 'json');