1
0
mirror of synced 2025-11-06 04:21:11 +08:00

Dev: Remap coverage report

This commit is contained in:
surunzi
2017-10-14 16:16:29 +08:00
parent 66b5e950df
commit 3202901728
7 changed files with 121 additions and 3 deletions

1
.gitignore vendored
View File

@@ -5,4 +5,5 @@
/test/playground.html
eruda*
/script/icomoon/
/src/**/*.js.map
npm-debug.log

View File

@@ -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

View File

@@ -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,

View File

@@ -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
View 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.');
});

View File

@@ -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 _;
}));

View File

@@ -191,3 +191,5 @@ module.exports = {
};
extraUtil(util);
//# sourceMappingURL=index.js.map