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:
parent
88b02af305
commit
6f74a03557
1 changed files with 21 additions and 5 deletions
|
@ -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'));
|
||||||
|
|
Loading…
Reference in a new issue