Add empty test suite flag to karma wrapper

This is already supported karma feature, but it wasn't respected
because our wrapper threw an error no matter what.

fe9a1dd13b/lib/cli.js (L201)
This commit is contained in:
Paul Slaughter 2019-05-10 07:14:53 -05:00
parent 88b02af305
commit 6f74a03557
No known key found for this signature in database
GPG key ID: DF5690803C68282A

View file

@ -9,11 +9,22 @@ const IS_EE = require('./helpers/is_ee_env');
const ROOT_PATH = path.resolve(__dirname, '..'); const ROOT_PATH = path.resolve(__dirname, '..');
const SPECS_PATH = /^(?:\.[\\\/])?(ee[\\\/])?spec[\\\/]javascripts[\\\/]/; const SPECS_PATH = /^(?:\.[\\\/])?(ee[\\\/])?spec[\\\/]javascripts[\\\/]/;
function fatalError(message) { function exitError(message) {
console.error(chalk.red(`\nError: ${message}\n`)); console.error(chalk.red(`\nError: ${message}\n`));
process.exit(1); process.exit(1);
} }
function exitWarn(message) {
console.error(chalk.yellow(`\nWarn: ${message}\n`));
process.exit(0);
}
function exit(message, isError = true) {
const fn = isError ? exitError : exitWarn;
fn(message);
}
// disable problematic options // disable problematic options
webpackConfig.entry = undefined; webpackConfig.entry = undefined;
webpackConfig.mode = 'development'; webpackConfig.mode = 'development';
@ -31,7 +42,8 @@ webpackConfig.plugins.push(
}), }),
); );
const specFilters = argumentsParser const options = argumentsParser
.option('--no-fail-on-empty-test-suite')
.option( .option(
'-f, --filter-spec [filter]', '-f, --filter-spec [filter]',
'Filter run spec files by path. Multiple filters are like a logical OR.', 'Filter run spec files by path. Multiple filters are like a logical OR.',
@ -41,7 +53,9 @@ const specFilters = argumentsParser
}, },
[], [],
) )
.parse(process.argv).filterSpec; .parse(process.argv);
const specFilters = options.filterSpec;
const createContext = (specFiles, regex, suffix) => { const createContext = (specFiles, regex, suffix) => {
const newContext = specFiles.reduce((context, file) => { const newContext = specFiles.reduce((context, file) => {
@ -73,11 +87,13 @@ if (specFilters.length) {
filteredSpecFiles = [...new Set(filteredSpecFiles)]; filteredSpecFiles = [...new Set(filteredSpecFiles)];
if (filteredSpecFiles.length < 1) { if (filteredSpecFiles.length < 1) {
fatalError('Your filter did not match any test files.'); const isError = options.failOnEmptyTestSuite;
exit('Your filter did not match any test files.', isError);
} }
if (!filteredSpecFiles.every(file => SPECS_PATH.test(file))) { if (!filteredSpecFiles.every(file => SPECS_PATH.test(file))) {
fatalError('Test files must be located within /spec/javascripts.'); exitError('Test files must be located within /spec/javascripts.');
} }
const CE_FILES = filteredSpecFiles.filter(file => !file.startsWith('ee')); const CE_FILES = filteredSpecFiles.filter(file => !file.startsWith('ee'));