summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorPaul Slaughter <pslaughter@gitlab.com>2019-05-10 07:14:53 -0500
committerPaul Slaughter <pslaughter@gitlab.com>2019-05-13 09:48:34 -0500
commit6f74a03557cf5e8ac11f99a73da0a754a70f54ff (patch)
tree0ec4802211ee8bf43cd83ceaad472ce018534ecd /config
parent88b02af305a1d279827235e13f8c58940eca9fb5 (diff)
downloadgitlab-ce-6f74a03557cf5e8ac11f99a73da0a754a70f54ff.tar.gz
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. https://github.com/karma-runner/karma/blob/fe9a1dd13b5eb3969f9e08acbce020e2a382fd9e/lib/cli.js#L201
Diffstat (limited to 'config')
-rw-r--r--config/karma.config.js26
1 files changed, 21 insertions, 5 deletions
diff --git a/config/karma.config.js b/config/karma.config.js
index 83ba46345f2..a4b4ac89c91 100644
--- a/config/karma.config.js
+++ b/config/karma.config.js
@@ -9,11 +9,22 @@ const IS_EE = require('./helpers/is_ee_env');
const ROOT_PATH = path.resolve(__dirname, '..');
const SPECS_PATH = /^(?:\.[\\\/])?(ee[\\\/])?spec[\\\/]javascripts[\\\/]/;
-function fatalError(message) {
+function exitError(message) {
console.error(chalk.red(`\nError: ${message}\n`));
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
webpackConfig.entry = undefined;
webpackConfig.mode = 'development';
@@ -31,7 +42,8 @@ webpackConfig.plugins.push(
}),
);
-const specFilters = argumentsParser
+const options = argumentsParser
+ .option('--no-fail-on-empty-test-suite')
.option(
'-f, --filter-spec [filter]',
'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 newContext = specFiles.reduce((context, file) => {
@@ -73,11 +87,13 @@ if (specFilters.length) {
filteredSpecFiles = [...new Set(filteredSpecFiles)];
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))) {
- 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'));