From 8902ef43949e6c371d38a650680709cbf47b5d94 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Mon, 10 Aug 2015 22:54:11 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=A1=20Adding=20code=20coverage=20is=20?= =?UTF-8?q?a=20snap!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + karma.conf.js | 13 +++++++++++-- package.json | 4 ++++ webpack.config.js | 13 ++++++++++++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 3c3629e..916e0b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +coverage/ diff --git a/karma.conf.js b/karma.conf.js index 61a8c5e..b2c07c2 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -36,7 +36,15 @@ module.exports = function (config) { // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], + reporters: ['progress', 'coverage'], + + coverageReporter: { + reporters: [ + {type: 'lcov', dir: 'coverage/', subdir: '.'}, + {type: 'json', dir: 'coverage/', subdir: '.'}, + {type: 'text-summary'} + ] + }, // web server port @@ -69,7 +77,8 @@ module.exports = function (config) { require('karma-webpack'), 'karma-jasmine', 'karma-firefox-launcher', - 'karma-chrome-launcher' + 'karma-chrome-launcher', + 'karma-coverage' ] }); }; diff --git a/package.json b/package.json index 4cc85c5..44141f0 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,13 @@ "babel-core": "5.8.22", "babel-loader": "5.3.2", "css-loader": "0.15.6", + "isparta": "3.0.3", + "isparta-loader": "0.2.0", + "istanbul": "0.3.17", "jasmine-core": "2.3.4", "karma": "0.13.8", "karma-chrome-launcher": "0.2.0", + "karma-coverage": "0.5.0", "karma-firefox-launcher": "0.1.6", "karma-jasmine": "0.3.6", "karma-webpack": "1.7.0", diff --git a/webpack.config.js b/webpack.config.js index 365e4f3..366a36f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -10,11 +10,11 @@ var config = { devtool: 'eval', module: { loaders: [ - {test: /\.js$/, loader: 'babel', exclude: /node_modules/}, {test: /\.css$/, loader: 'style!css'} ] } }; +config.module.loaders = getJSLoaders().concat(config.module.loaders); if (process.env.NODE_ENV === 'test') { config.entry = './ControllerSpec.js'; @@ -23,6 +23,17 @@ if (process.env.NODE_ENV === 'test') { module.exports = config; +function getJSLoaders() { + var jsLoaders = []; + if (process.env.NODE_ENV === 'test') { + jsLoaders.push({test: /js\/.*\.js$/, loader: 'isparta', exclude: /node_modules/}); + jsLoaders.push({test: /test\/.*\.js$/, loader: 'babel', exclude: /node_modules/}); + } else { + jsLoaders.push({test: /\.js$/, loader: 'babel', exclude: /node_modules/}); + } + return jsLoaders; +} + function here(d) { return d ? path.join(__dirname, d) : __dirname; }