1
1
const Exclude = require ( 'test-exclude' )
2
+ const furi = require ( 'furi' )
2
3
const libCoverage = require ( 'istanbul-lib-coverage' )
3
4
const libReport = require ( 'istanbul-lib-report' )
4
5
const reports = require ( 'istanbul-reports' )
@@ -74,7 +75,7 @@ class Report {
74
75
_getMergedProcessCov ( ) {
75
76
const v8ProcessCovs = [ ]
76
77
for ( const v8ProcessCov of this . _loadReports ( ) ) {
77
- v8ProcessCovs . push ( this . _filterProcessCov ( v8ProcessCov ) )
78
+ v8ProcessCovs . push ( this . _normalizeProcessCov ( v8ProcessCov ) )
78
79
}
79
80
return mergeProcessCovs ( v8ProcessCovs )
80
81
}
@@ -101,21 +102,26 @@ class Report {
101
102
}
102
103
103
104
/**
104
- * Returns a filtered process coverage.
105
+ * Normalizes a process coverage.
106
+ *
107
+ * This function replaces file URLs (`url` property) by their corresponding
108
+ * system-dependent path and applies the current inclusion rules to filter out
109
+ * the excluded script coverages.
105
110
*
106
111
* The result is a copy of the input, with script coverages filtered based
107
112
* on their `url` and the current inclusion rules.
108
113
* There is no deep cloning.
109
114
*
110
- * @param v8ProcessCov V8 process coverage to filter .
111
- * @return {v8ProcessCov } Filtered V8 process coverage.
115
+ * @param v8ProcessCov V8 process coverage to normalize .
116
+ * @return {v8ProcessCov } Normalized V8 process coverage.
112
117
* @private
113
118
*/
114
- _filterProcessCov ( v8ProcessCov ) {
119
+ _normalizeProcessCov ( v8ProcessCov ) {
115
120
const result = [ ]
116
121
for ( const v8ScriptCov of v8ProcessCov . result ) {
117
- // TODO: implement real fix from https://github.com/nodejs/node/issues/23783
118
- v8ScriptCov . url = v8ScriptCov . url . replace ( / ^ f i l e : \/ \/ / , '' )
122
+ if ( / ^ f i l e : \/ \/ / . test ( v8ScriptCov . url ) ) {
123
+ v8ScriptCov . url = furi . toSysPath ( v8ScriptCov . url )
124
+ }
119
125
if ( this . exclude . shouldInstrument ( v8ScriptCov . url ) &&
120
126
( ! this . omitRelative || isAbsolute ( v8ScriptCov . url ) ) ) {
121
127
result . push ( v8ScriptCov )
0 commit comments