(root: FileTree)
| 95 | } |
| 96 | |
| 97 | function calculateTreeCoverage(root: FileTree): CoverageTreeNode { |
| 98 | if ('children' in root) { |
| 99 | const stats = aggregateChildCoverage(root.children); |
| 100 | const coverage = calculateCoverage(stats); |
| 101 | return { |
| 102 | name: root.name, |
| 103 | values: { coverage }, |
| 104 | children: root.children.map(calculateTreeCoverage), |
| 105 | }; |
| 106 | } |
| 107 | |
| 108 | return { |
| 109 | name: root.name, |
| 110 | values: { |
| 111 | coverage: calculateCoverage(root), |
| 112 | missing: root.missing, |
| 113 | }, |
| 114 | }; |
| 115 | } |
| 116 | |
| 117 | function calculateCoverage({ covered, total }: CoverageStats): number { |
| 118 | if (total === 0) { |
no test coverage detected