Skip to content
This repository has been archived by the owner on Jan 19, 2021. It is now read-only.

Commit

Permalink
Add test
Browse files Browse the repository at this point in the history
  • Loading branch information
jvanbruegge committed Oct 7, 2018
1 parent c9363b9 commit c9e99a8
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ export default function (source, sourceMap) {
let src = instrumentedSource;
if (options.fixWebpackSourcePaths) {
src = src.replace(/sources:\[([^\]])*\]/g, (match) => {
const splits = match.split('!');
return `sources:['${splits[splits.length - 1]}`;
const splits = match.replace('sources:[', '').split('!');
return `sources:[${splits[splits.length - 1]}`;
});
}
this.callback(error, src, instrumenter.lastSourceMap());
Expand Down
13 changes: 13 additions & 0 deletions test/__snapshots__/index.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@ exports[`errors 1`] = `Array []`;

exports[`errors 2`] = `Array []`;

exports[`fix webpack paths 1`] = `
"webpackJsonp([0],[
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
\\"use strict\\";
var cov_1v2zerd2hz=function(){var path=\\"/fixtures/basic.js\\",hash=\\"f413708755ce75e2d80eaa677c70f0f16a196e80\\",global=new Function('return this')(),gcv=\\"__coverage__\\",coverageData={path:\\"/fixtures/basic.js\\",statementMap:{\\"0\\":{start:{line:3,column:19},end:{line:3,column:563}},\\"1\\":{start:{line:3,column:76},end:{line:3,column:347}},\\"2\\":{start:{line:3,column:134},end:{line:3,column:142}},\\"3\\":{start:{line:3,column:144},end:{line:3,column:199}},\\"4\\":{start:{line:3,column:200},end:{line:3,column:231}},\\"5\\":{start:{line:3,column:232},end:{line:3,column:286}},\\"6\\":{start:{line:3,column:259},end:{line:3,column:286}},\\"7\\":{start:{line:3,column:287},end:{line:3,column:345}},\\"8\\":{start:{line:3,column:350},end:{line:3,column:559}},\\"9\\":{start:{line:3,column:407},end:{line:3,column:475}},\\"10\\":{start:{line:3,column:423},end:{line:3,column:475}},\\"11\\":{start:{line:3,column:476},end:{line:3,column:536}},\\"12\\":{start:{line:3,column:493},end:{line:3,column:536}},\\"13\\":{start:{line:3,column:537},end:{line:3,column:556}},\\"14\\":{start:{line:5,column:50},end:{line:5,column:151}},\\"15\\":{start:{line:5,column:92},end:{line:5,column:149}},\\"16\\":{start:{line:7,column:0},end:{line:20,column:4}},\\"17\\":{start:{line:9,column:4},end:{line:9,column:31}},\\"18\\":{start:{line:12,column:2},end:{line:17,column:6}},\\"19\\":{start:{line:15,column:6},end:{line:15,column:20}},\\"20\\":{start:{line:19,column:2},end:{line:19,column:13}}},fnMap:{\\"0\\":{name:\\"(anonymous_0)\\",decl:{start:{line:3,column:19},end:{line:3,column:20}},loc:{start:{line:3,column:31},end:{line:3,column:561}},line:3},\\"1\\":{name:\\"defineProperties\\",decl:{start:{line:3,column:42},end:{line:3,column:58}},loc:{start:{line:3,column:74},end:{line:3,column:349}},line:3},\\"2\\":{name:\\"(anonymous_2)\\",decl:{start:{line:3,column:357},end:{line:3,column:358}},loc:{start:{line:3,column:405},end:{line:3,column:558}},line:3},\\"3\\":{name:\\"_classCallCheck\\",decl:{start:{line:5,column:9},end:{line:5,column:24}},loc:{start:{line:5,column:48},end:{line:5,column:153}},line:5},\\"4\\":{name:\\"(anonymous_4)\\",decl:{start:{line:7,column:17},end:{line:7,column:18}},loc:{start:{line:7,column:29},end:{line:20,column:1}},line:7},\\"5\\":{name:\\"Foo\\",decl:{start:{line:8,column:11},end:{line:8,column:14}},loc:{start:{line:8,column:17},end:{line:10,column:3}},line:8},\\"6\\":{name:\\"bar\\",decl:{start:{line:14,column:20},end:{line:14,column:23}},loc:{start:{line:14,column:26},end:{line:16,column:5}},line:14}},branchMap:{\\"0\\":{loc:{start:{line:3,column:168},end:{line:3,column:198}},type:\\"binary-expr\\",locations:[{start:{line:3,column:168},end:{line:3,column:189}},{start:{line:3,column:193},end:{line:3,column:198}}],line:3},\\"1\\":{loc:{start:{line:3,column:232},end:{line:3,column:286}},type:\\"if\\",locations:[{start:{line:3,column:232},end:{line:3,column:286}},{start:{line:3,column:232},end:{line:3,column:286}}],line:3},\\"2\\":{loc:{start:{line:3,column:407},end:{line:3,column:475}},type:\\"if\\",locations:[{start:{line:3,column:407},end:{line:3,column:475}},{start:{line:3,column:407},end:{line:3,column:475}}],line:3},\\"3\\":{loc:{start:{line:3,column:476},end:{line:3,column:536}},type:\\"if\\",locations:[{start:{line:3,column:476},end:{line:3,column:536}},{start:{line:3,column:476},end:{line:3,column:536}}],line:3},\\"4\\":{loc:{start:{line:5,column:50},end:{line:5,column:151}},type:\\"if\\",locations:[{start:{line:5,column:50},end:{line:5,column:151}},{start:{line:5,column:50},end:{line:5,column:151}}],line:5}},s:{\\"0\\":0,\\"1\\":0,\\"2\\":0,\\"3\\":0,\\"4\\":0,\\"5\\":0,\\"6\\":0,\\"7\\":0,\\"8\\":0,\\"9\\":0,\\"10\\":0,\\"11\\":0,\\"12\\":0,\\"13\\":0,\\"14\\":0,\\"15\\":0,\\"16\\":0,\\"17\\":0,\\"18\\":0,\\"19\\":0,\\"20\\":0},f:{\\"0\\":0,\\"1\\":0,\\"2\\":0,\\"3\\":0,\\"4\\":0,\\"5\\":0,\\"6\\":0},b:{\\"0\\":[0,0],\\"1\\":[0,0],\\"2\\":[0,0],\\"3\\":[0,0],\\"4\\":[0,0]},inputSourceMap:{version:3,sources:[\\"test/fixtures/basic.js\\"],names:[\\"module\\",\\"exports\\"],mappings:\\";;;;;;AAAAA,OAAOC,OAAP;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,0BACQ;AACJ,aAAO,CAAC,CAAC,IAAT;AACD;AAHH;;AAAA;AAAA\\",file:\\"basic.js\\",sourceRoot:\\"\\",sourcesContent:[\\"module.exports = class Foo {\\\\n bar() {\\\\n return !!this;\\\\n }\\\\n};\\\\n\\"]},_coverageSchema:\\"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c\\"},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();var _createClass=(++cov_1v2zerd2hz.s[0],function(){++cov_1v2zerd2hz.f[0];function defineProperties(target,props){++cov_1v2zerd2hz.f[1];++cov_1v2zerd2hz.s[1];for(var i=0;i<props.length;i++){var descriptor=(++cov_1v2zerd2hz.s[2],props[i]);++cov_1v2zerd2hz.s[3];descriptor.enumerable=(++cov_1v2zerd2hz.b[0][0],descriptor.enumerable)||(++cov_1v2zerd2hz.b[0][1],false);++cov_1v2zerd2hz.s[4];descriptor.configurable=true;++cov_1v2zerd2hz.s[5];if(\\"value\\"in descriptor){++cov_1v2zerd2hz.b[1][0];++cov_1v2zerd2hz.s[6];descriptor.writable=true;}else{++cov_1v2zerd2hz.b[1][1];}++cov_1v2zerd2hz.s[7];Object.defineProperty(target,descriptor.key,descriptor);}}++cov_1v2zerd2hz.s[8];return function(Constructor,protoProps,staticProps){++cov_1v2zerd2hz.f[2];++cov_1v2zerd2hz.s[9];if(protoProps){++cov_1v2zerd2hz.b[2][0];++cov_1v2zerd2hz.s[10];defineProperties(Constructor.prototype,protoProps);}else{++cov_1v2zerd2hz.b[2][1];}++cov_1v2zerd2hz.s[11];if(staticProps){++cov_1v2zerd2hz.b[3][0];++cov_1v2zerd2hz.s[12];defineProperties(Constructor,staticProps);}else{++cov_1v2zerd2hz.b[3][1];}++cov_1v2zerd2hz.s[13];return Constructor;};}());function _classCallCheck(instance,Constructor){++cov_1v2zerd2hz.f[3];++cov_1v2zerd2hz.s[14];if(!(instance instanceof Constructor)){++cov_1v2zerd2hz.b[4][0];++cov_1v2zerd2hz.s[15];throw new TypeError(\\"Cannot call a class as a function\\");}else{++cov_1v2zerd2hz.b[4][1];}}++cov_1v2zerd2hz.s[16];module.exports=function(){++cov_1v2zerd2hz.f[4];function Foo(){++cov_1v2zerd2hz.f[5];++cov_1v2zerd2hz.s[17];_classCallCheck(this,Foo);}++cov_1v2zerd2hz.s[18];_createClass(Foo,[{key:\\"bar\\",value:function bar(){++cov_1v2zerd2hz.f[6];++cov_1v2zerd2hz.s[19];return!!this;}}]);++cov_1v2zerd2hz.s[20];return Foo;}();
/***/ })
],[0]);
//# sourceMappingURL=main.js.map"
`;

exports[`instrument code 1`] = `
"webpackJsonp([0],[
/* 0 */
Expand Down
13 changes: 13 additions & 0 deletions test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,16 @@ test('disabled sourcemaps', async () => {
expect(stats.compilation.errors).toMatchSnapshot('errors');
expect(stats.compilation.warnings).toMatchSnapshot('warnings');
});

test('fix webpack paths', async () => {
const stats = await webpack({
extend: {
devtool: 'source-map',
},
options: {
fixWebpackSourcePaths: true,
},
});
const instrumentedSource = stats.compilation.assets['main.js'].source();
expect(instrumentedSource).toMatchSnapshot();
});

0 comments on commit c9e99a8

Please sign in to comment.