diff --git a/lib/converter/converter.js b/lib/converter/converter.js index 6ea3394..3e9dc4f 100644 --- a/lib/converter/converter.js +++ b/lib/converter/converter.js @@ -1231,16 +1231,10 @@ const filterCoverageList = (item) => { // the inline sourcemap could be removed const maxOffset = source.length; - const rootFunctionInfo = { - root: true, - ranges: [{ - startOffset: minOffset, - endOffset: maxOffset, - count: 1 - }] - }; + const wrapperList = []; const coverageList = functions.filter((block) => { + const { ranges } = block; // first one is function coverage info @@ -1250,24 +1244,26 @@ const filterCoverageList = (item) => { return true; } - // blocks - const len = ranges.length; - if (len > 1) { - for (let i = 1; i < len; i++) { - const range = ranges[i]; - if (range.startOffset >= minOffset && range.endOffset <= maxOffset) { - rootFunctionInfo.ranges.push(range); - } - } - } + wrapperList.push(block); return false; }); - // first one for root function - if (rootFunctionInfo.ranges.length > 1) { - coverageList.unshift(rootFunctionInfo); - } + + const rootFunctionInfo = wrapperList.length ? wrapperList.pop() : { + root: true, + ranges: [{ + startOffset: minOffset, + endOffset: maxOffset, + count: 1 + }] + }; + + coverageList.unshift(rootFunctionInfo); + + // if (item.sourcePath.includes('PlaceB.tsx')) { + // console.log(coverageList); + // } return coverageList; }; @@ -1275,6 +1271,10 @@ const filterCoverageList = (item) => { const initJsCoverageList = (item) => { const coverageList = filterCoverageList(item); + // if (item.sourcePath.includes('PlaceB.tsx')) { + // console.log(coverageList[0]); + // } + // function could be covered even it is defined after an uncovered return, see case closures.js // fix uncovered range if there are covered ranges in uncovered range