-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Collect test files later #3953
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Collect test files later #3953
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,84 @@ | ||
| 'use strict'; | ||
|
|
||
| const path = require('path'); | ||
| const ansi = require('ansi-colors'); | ||
| const debug = require('debug')('mocha:cli:run:helpers'); | ||
| const minimatch = require('minimatch'); | ||
| const utils = require('../utils'); | ||
|
|
||
| /** | ||
| * Exports a function that collects test files from CLI parameters. | ||
| * @see module:lib/cli/run-helpers | ||
| * @see module:lib/cli/watch-run | ||
| * @module | ||
| * @private | ||
| */ | ||
|
|
||
| /** | ||
| * Smash together an array of test files in the correct order | ||
| * @param {Object} opts - Options | ||
| * @param {string[]} opts.extension - File extensions to use | ||
| * @param {string[]} opts.spec - Files, dirs, globs to run | ||
| * @param {string[]} opts.ignore - Files, dirs, globs to ignore | ||
| * @param {string[]} opts.file - List of additional files to include | ||
| * @param {boolean} opts.recursive - Find files recursively | ||
| * @param {boolean} opts.sort - Sort test files | ||
| * @returns {string[]} List of files to test | ||
| * @private | ||
| */ | ||
| module.exports = ({ignore, extension, file, recursive, sort, spec} = {}) => { | ||
| let files = []; | ||
| const unmatched = []; | ||
| spec.forEach(arg => { | ||
| let newFiles; | ||
| try { | ||
| newFiles = utils.lookupFiles(arg, extension, recursive); | ||
| } catch (err) { | ||
| if (err.code === 'ERR_MOCHA_NO_FILES_MATCH_PATTERN') { | ||
| unmatched.push({message: err.message, pattern: err.pattern}); | ||
| return; | ||
| } | ||
|
|
||
| throw err; | ||
| } | ||
|
|
||
| if (typeof newFiles !== 'undefined') { | ||
| if (typeof newFiles === 'string') { | ||
| newFiles = [newFiles]; | ||
| } | ||
| newFiles = newFiles.filter(fileName => | ||
| ignore.every(pattern => !minimatch(fileName, pattern)) | ||
| ); | ||
| } | ||
|
|
||
| files = files.concat(newFiles); | ||
| }); | ||
|
|
||
| if (!files.length) { | ||
| // give full message details when only 1 file is missing | ||
| const noneFoundMsg = | ||
| unmatched.length === 1 | ||
| ? `Error: No test files found: ${JSON.stringify(unmatched[0].pattern)}` // stringify to print escaped characters raw | ||
| : 'Error: No test files found'; | ||
| console.error(ansi.red(noneFoundMsg)); | ||
| process.exit(1); | ||
| } else { | ||
| // print messages as an warning | ||
| unmatched.forEach(warning => { | ||
| console.warn(ansi.yellow(`Warning: ${warning.message}`)); | ||
| }); | ||
| } | ||
|
|
||
| const fileArgs = file.map(filepath => path.resolve(filepath)); | ||
| files = files.map(filepath => path.resolve(filepath)); | ||
|
|
||
| // ensure we don't sort the stuff from fileArgs; order is important! | ||
| if (sort) { | ||
| files.sort(); | ||
| } | ||
|
|
||
| // add files given through --file to be ran first | ||
| files = fileArgs.concat(files); | ||
| debug('files (in order): ', files); | ||
| return files; | ||
| }; | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,7 +16,6 @@ const { | |
|
|
||
| const { | ||
| list, | ||
| handleFiles, | ||
| handleRequires, | ||
| validatePlugin, | ||
| runMocha | ||
|
|
@@ -290,8 +289,5 @@ exports.builder = yargs => | |
| exports.handler = argv => { | ||
| debug('post-yargs config', argv); | ||
| const mocha = new Mocha(argv); | ||
| const files = handleFiles(argv); | ||
|
|
||
| debug('running tests with files', files); | ||
| runMocha(mocha, argv, files); | ||
| runMocha(mocha, argv); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is existing code, I know. But
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you have a suggestion how to improve this?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. At least I also wonder why I don't see
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it ok if I address this separately? It seems to be an orthogonal concern to me and there is a chance this changes the behavior, something I’d like to avoid. It also looks like this should be tackled more comprehensively by rethinking whether
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I started to address this in #3960 which should also answer the question about |
||
| }; | ||
Uh oh!
There was an error while loading. Please reload this page.