Dev: Remap coverage report
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,4 +5,5 @@
|
||||
/test/playground.html
|
||||
eruda*
|
||||
/script/icomoon/
|
||||
/src/**/*.js.map
|
||||
npm-debug.log
|
||||
@@ -22,6 +22,8 @@ npm run dev
|
||||
npm run build
|
||||
# lint, build and test.
|
||||
npm run ci
|
||||
# check test coverage.
|
||||
npm run cov
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var webpackCfg = require('./script/webpack.release');
|
||||
var webpackCfg = require('./script/webpack.dev');
|
||||
webpackCfg.devtool = 'inline-source-map';
|
||||
|
||||
module.exports = function (config)
|
||||
{
|
||||
@@ -28,16 +29,26 @@ module.exports = function (config)
|
||||
'karma-phantomjs-launcher',
|
||||
'karma-wrap-preprocessor',
|
||||
'karma-coverage',
|
||||
'karma-webpack'
|
||||
'karma-webpack',
|
||||
'karma-sourcemap-loader',
|
||||
'karma-sourcemap-writer'
|
||||
],
|
||||
webpackServer: {
|
||||
noInfo: true
|
||||
},
|
||||
preprocessors: {
|
||||
'test/*.js': ['wrap'],
|
||||
'src/index.js': ['webpack', 'coverage']
|
||||
'src/index.js': ['webpack', 'sourcemap', 'sourcemap-writer', 'coverage']
|
||||
},
|
||||
webpack: webpackCfg,
|
||||
wrapPreprocessor: {
|
||||
template: '(function () { <%= contents %> })()'
|
||||
},
|
||||
coverageReporter: {
|
||||
type: 'json',
|
||||
subdir: '.',
|
||||
file: 'coverage-final.json'
|
||||
},
|
||||
reporters: ['progress', 'coverage'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"scripts": {
|
||||
"ci": "npm run lint && npm run test && npm run build",
|
||||
"build": "webpack --config script/webpack.dev.js && webpack -p --config script/webpack.release.js",
|
||||
"cov": "npm run test && remap-istanbul -i coverage/coverage-final.json -o coverage/coverage-remapped.json -t json && node script/coverage",
|
||||
"dev": "webpack-dev-server --config script/webpack.dev.js --host 0.0.0.0",
|
||||
"test": "karma start",
|
||||
"setup": "node script/cpTestLib",
|
||||
@@ -59,6 +60,7 @@
|
||||
"eslint": "^4.5.0",
|
||||
"handlebars": "^4.0.5",
|
||||
"handlebars-loader": "^1.1.4",
|
||||
"istanbul": "^0.4.5",
|
||||
"jasmine-core": "^2.4.1",
|
||||
"jasmine-jquery": "^2.1.1",
|
||||
"jquery": "^3.1.0",
|
||||
@@ -69,12 +71,15 @@
|
||||
"karma-jasmine": "^1.1.0",
|
||||
"karma-jquery": "^0.2.2",
|
||||
"karma-phantomjs-launcher": "^1.0.4",
|
||||
"karma-sourcemap-loader": "^0.3.7",
|
||||
"karma-sourcemap-writer": "^0.1.2",
|
||||
"karma-webpack": "^2.0.5",
|
||||
"karma-wrap-preprocessor": "^0.1.0",
|
||||
"modernizr": "^3.3.1",
|
||||
"node-sass": "^4.5.0",
|
||||
"postcss-class-prefix": "^0.3.0",
|
||||
"postcss-loader": "^2.0.6",
|
||||
"remap-istanbul": "^0.9.5",
|
||||
"sass-loader": "^6.0.3",
|
||||
"webpack": "^3.5.4",
|
||||
"webpack-dev-server": "^2.7.1"
|
||||
|
||||
30
script/coverage.js
Normal file
30
script/coverage.js
Normal file
@@ -0,0 +1,30 @@
|
||||
var path = require('path'),
|
||||
util = require('./util'),
|
||||
istanbul = require('istanbul');
|
||||
|
||||
var collector = new istanbul.Collector(),
|
||||
reporter = new istanbul.Reporter();
|
||||
|
||||
var remappedJson = require('../coverage/coverage-remapped.json');
|
||||
|
||||
var coverage = util.reduce(util.keys(remappedJson), function (result, source)
|
||||
{
|
||||
if (source.match(/src.*\.js$/) && source.indexOf('node_modules') < 0)
|
||||
{
|
||||
var correctPath = source.replace(path.resolve(__dirname, '../src'), path.resolve(__dirname, '../'));
|
||||
|
||||
var val = remappedJson[source];
|
||||
val.path = correctPath;
|
||||
result[correctPath] = val;
|
||||
}
|
||||
|
||||
return result;
|
||||
}, {});
|
||||
|
||||
collector.add(coverage);
|
||||
|
||||
reporter.add('html');
|
||||
reporter.write(collector, true, function ()
|
||||
{
|
||||
console.log('open coverage/index.html to see the coverage report.');
|
||||
});
|
||||
@@ -145,6 +145,12 @@
|
||||
* |------|-------|-------------------------------------|
|
||||
* |value |* |Value to check |
|
||||
* |return|boolean|True if value is correctly classified|
|
||||
*
|
||||
* ```javascript
|
||||
* isNum(5); // -> true
|
||||
* isNum(5.1); // -> true
|
||||
* isNum({}); // -> false
|
||||
* ```
|
||||
*/
|
||||
|
||||
/* dependencies
|
||||
@@ -499,5 +505,66 @@
|
||||
return exports;
|
||||
})();
|
||||
|
||||
/* ------------------------------ reduce ------------------------------ */
|
||||
|
||||
_.reduce = (function ()
|
||||
{
|
||||
/* Turn a list of values into a single value.
|
||||
*
|
||||
* |Name |Type |Desc |
|
||||
* |-------------------|------------|------------------------------|
|
||||
* |obj |object array|Collection to iterate over |
|
||||
* |[iteratee=identity]|function |Function invoked per iteration|
|
||||
* |[initial] |* |Initial value |
|
||||
* |[ctx] |* |Function context |
|
||||
* |return |* |Accumulated value |
|
||||
*
|
||||
* ```javascript
|
||||
* reduce([1, 2, 3], function (sum, n) { return sum + n }, 0); // -> 6
|
||||
* ```
|
||||
*/
|
||||
|
||||
/* dependencies
|
||||
* optimizeCb isArrLike isUndef keys
|
||||
*/
|
||||
|
||||
function exports(obj, iteratee, initial, ctx)
|
||||
{
|
||||
iteratee = optimizeCb(iteratee, ctx);
|
||||
|
||||
var i = 0, len, key;
|
||||
|
||||
if (isArrLike(obj))
|
||||
{
|
||||
if (isUndef(initial))
|
||||
{
|
||||
initial = obj[0];
|
||||
i = 1;
|
||||
}
|
||||
for (len = obj.length; i < len; i++)
|
||||
{
|
||||
initial = iteratee(initial, obj[i], i, obj);
|
||||
}
|
||||
} else
|
||||
{
|
||||
var _keys = keys(obj);
|
||||
if (isUndef(initial))
|
||||
{
|
||||
initial = obj[_keys[0]];
|
||||
i = 1;
|
||||
}
|
||||
for (len = _keys.length; i < len; i++)
|
||||
{
|
||||
key = _keys[i];
|
||||
initial = iteratee(initial, obj[key], key, obj);
|
||||
}
|
||||
}
|
||||
|
||||
return initial;
|
||||
}
|
||||
|
||||
return exports;
|
||||
})();
|
||||
|
||||
return _;
|
||||
}));
|
||||
@@ -191,3 +191,5 @@ module.exports = {
|
||||
};
|
||||
|
||||
extraUtil(util);
|
||||
|
||||
//# sourceMappingURL=index.js.map
|
||||
Reference in New Issue
Block a user