File tree 3 files changed +50
-1
lines changed
3 files changed +50
-1
lines changed Original file line number Diff line number Diff line change 2
2
// https://on.cypress.io/intelligent-code-completion
3
3
/// <reference types="Cypress" />
4
4
5
- import { add } from '../unit'
5
+ import { add } from '../unit'
6
+ const { fixSourcePathes } = require ( '../../utils' )
6
7
7
8
context ( 'Page test' , ( ) => {
8
9
beforeEach ( ( ) => {
@@ -28,4 +29,33 @@ context('Unit tests', () => {
28
29
it ( 'concatenates strings' , ( ) => {
29
30
expect ( add ( 'foo' , 'Bar' ) ) . to . equal ( 'fooBar' )
30
31
} )
32
+
33
+ it ( 'fixes webpack loader source-map path' , ( ) => {
34
+ const coverage = {
35
+ '/folder/module.js' : {
36
+ inputSourceMap : {
37
+ sources : [ '/folder/module.js' ]
38
+ }
39
+ } ,
40
+ '/folder/component.vue' : {
41
+ inputSourceMap : {
42
+ sources : [
43
+ '/folder/node_modules/cache-loader/dist/cjs.js??ref--0-0!/folder/node_modules/vue-loader/lib/index.js??vue-loader-options!/folder/component.vue?vue&type=script&lang=ts&'
44
+ ]
45
+ }
46
+ } ,
47
+ '/folder/module-without-sourcemap.js' : {
48
+ path : '/folder/module-without-sourcemap.js'
49
+ }
50
+ }
51
+
52
+ fixSourcePathes ( coverage )
53
+
54
+ expect ( coverage [ '/folder/module.js' ] . inputSourceMap . sources )
55
+ . to . deep . equal ( [ '/folder/module.js' ] )
56
+ expect ( coverage [ '/folder/component.vue' ] . inputSourceMap . sources )
57
+ . to . deep . equal ( [ '/folder/component.vue' ] )
58
+ expect ( coverage [ '/folder/module-without-sourcemap.js' ] . path )
59
+ . to . eq ( '/folder/module-without-sourcemap.js' )
60
+ } )
31
61
} )
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ const { join } = require('path')
3
3
const { existsSync, mkdirSync, readFileSync, writeFileSync } = require ( 'fs' )
4
4
const execa = require ( 'execa' )
5
5
const debug = require ( 'debug' ) ( 'code-coverage' )
6
+ const { fixSourcePathes } = require ( './utils' )
6
7
7
8
// these are standard folder and file names used by NYC tools
8
9
const outputFolder = '.nyc_output'
@@ -49,6 +50,7 @@ module.exports = {
49
50
* with previously collected coverage.
50
51
*/
51
52
combineCoverage ( coverage ) {
53
+ fixSourcePathes ( coverage )
52
54
const previous = existsSync ( nycFilename )
53
55
? JSON . parse ( readFileSync ( nycFilename ) )
54
56
: istanbul . createCoverageMap ( { } )
Original file line number Diff line number Diff line change
1
+ module . exports = {
2
+ /**
3
+ * Remove potential Webpack loaders string and query parameters from sourcemap path
4
+ */
5
+ fixSourcePathes ( coverage ) {
6
+ Object . keys ( coverage ) . forEach ( file => {
7
+ const sourcemap = coverage [ file ] . inputSourceMap
8
+ if ( ! sourcemap ) return
9
+ sourcemap . sources = sourcemap . sources . map ( source => {
10
+ let cleaned = source
11
+ if ( cleaned . includes ( '!' ) ) cleaned = cleaned . split ( '!' ) . pop ( )
12
+ if ( cleaned . includes ( '?' ) ) cleaned = cleaned . split ( '?' ) . shift ( )
13
+ return cleaned
14
+ } )
15
+ } )
16
+ }
17
+ }
You can’t perform that action at this time.
0 commit comments