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; }