Merge pull request #4742 from w33ble/test-coverage

Return of the test coverage
This commit is contained in:
Jim Unger 2015-08-26 11:51:02 -05:00
commit 85e3579105
9 changed files with 63 additions and 3 deletions

1
.gitignore vendored
View file

@ -16,3 +16,4 @@ installedPlugins
disabledPlugins
webpackstats.json
config/kibana.dev.yml
coverage

View file

@ -38,6 +38,7 @@
"test:quick": "grunt test:quick",
"test:browser": "grunt test:browser",
"test:server": "grunt test:server",
"test:coverage": "grunt test:coverage",
"build": "grunt build",
"start": "./bin/kibana --dev",
"precommit": "grunt lintStagedFiles",
@ -141,8 +142,10 @@
"gruntify-eslint": "^1.0.0",
"html-entities": "^1.1.1",
"husky": "^0.8.1",
"istanbul-instrumenter-loader": "^0.1.3",
"karma": "^0.13.3",
"karma-chrome-launcher": "^0.2.0",
"karma-coverage": "^0.5.0",
"karma-firefox-launcher": "^0.1.6",
"karma-growl-reporter": "^0.1.1",
"karma-ie-launcher": "^0.2.0",

View file

@ -125,6 +125,7 @@ class BaseOptimizer {
}, babelOptions)
}
].concat(this.env.loaders),
postLoaders: this.env.postLoaders || [],
noParse: this.env.noParse,
},

View file

@ -6,10 +6,17 @@ module.exports = (kibana) => {
let findSourceFiles = require('./findSourceFiles');
return new kibana.Plugin({
config: (Joi) => {
return Joi.object({
enabled: Joi.boolean().default(true),
instrument: Joi.boolean().default(false)
}).default();
},
uiExports: {
bundle: async (UiBundle, env, apps) => {
let modules = [];
let config = kibana.config;
// add the modules from all of the apps
for (let app of apps) {
@ -23,6 +30,14 @@ module.exports = (kibana) => {
for (let f of testFiles) modules.push(f);
if (config.get('testsBundle.instrument')) {
env.addPostLoader({
test: /\.jsx?$/,
exclude: /[\/\\](__tests__|node_modules|bower_components|webpackShims)[\/\\]/,
loader: 'istanbul-instrumenter'
});
}
return new UiBundle({
id: 'tests',
modules: modules,

View file

@ -1,4 +1,4 @@
{
"name": "tests_bundle",
"name": "testsBundle",
"version": "0.0.0"
}

View file

@ -54,6 +54,7 @@ module.exports = class UiBundlerEnv {
// webpack loaders map loader configuration to regexps
this.loaders = [];
this.postLoaders = [];
}
consumePlugin(plugin) {
@ -74,6 +75,11 @@ module.exports = class UiBundlerEnv {
for (let loader of arr(spec)) this.addLoader(loader);
};
case 'postLoaders':
return (plugin, spec) => {
for (let loader of arr(spec)) this.addPostLoader(loader);
};
case 'noParse':
return (plugin, spec) => {
for (let re of arr(spec)) this.addNoParse(re);
@ -94,6 +100,10 @@ module.exports = class UiBundlerEnv {
this.loaders.push(loader);
}
addPostLoader(loader) {
this.postLoaders.push(loader);
}
addNoParse(regExp) {
this.noParse.push(regExp);
}

View file

@ -40,5 +40,15 @@ module.exports = function (grunt) {
dev: { singleRun: false },
unit: { singleRun: true },
coverage: {
singleRun: true,
reporters: ['coverage'],
coverageReporter: {
reporters: [
{ type: 'html', dir: 'coverage' },
{ type: 'text-summary' },
]
}
}
};
};

View file

@ -1,4 +1,5 @@
module.exports = function (grunt) {
let platform = require('os').platform();
let {resolve} = require('path');
let root = p => resolve(__dirname, '../../', p);
@ -10,7 +11,7 @@ module.exports = function (grunt) {
quiet: false,
failOnError: false
},
cmd: './bin/kibana',
cmd: /^win/.test(platform) ? '.\\bin\\kibana.bat' : './bin/kibana',
args: [
'--server.port=5610',
'--env.name=development',
@ -20,6 +21,24 @@ module.exports = function (grunt) {
]
},
testCoverageServer: {
options: {
wait: false,
ready: /Server running/,
quiet: false,
failOnError: false
},
cmd: /^win/.test(platform) ? '.\\bin\\kibana.bat' : './bin/kibana',
args: [
'--server.port=5610',
'--env.name=development',
'--logging.json=false',
'--optimize.bundleFilter=tests',
'--plugins.initialize=false',
'--testsBundle.instrument=true'
]
},
devTestServer: {
options: {
wait: false,

View file

@ -2,6 +2,7 @@ var _ = require('lodash');
module.exports = function (grunt) {
grunt.registerTask('test:server', [ 'simplemocha:all' ]);
grunt.registerTask('test:browser', [ 'run:testServer', 'karma:unit' ]);
grunt.registerTask('test:coverage', [ 'run:testCoverageServer', 'karma:coverage' ]);
grunt.registerTask('test:quick', [
'test:server',