forked from jestjs/jest
/
index.ts
48 lines (39 loc) · 1.21 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import {TestResult} from '@jest/types';
type PhabricatorReport = TestResult.AggregatedResultWithoutCoverage & {
coverageMap?: TestResult.CoverageMap | null;
};
function summarize(coverageMap: TestResult.CoverageMap) {
const summaries = Object.create(null);
coverageMap.files().forEach((file: string) => {
const covered = [];
const lineCoverage: any = coverageMap
.fileCoverageFor(file)
.getLineCoverage();
Object.keys(lineCoverage).forEach(lineNumber => {
// Line numbers start at one
const number = parseInt(lineNumber, 10) - 1;
covered[number] = lineCoverage[lineNumber] ? 'C' : 'U';
});
for (let i = 0; i < covered.length; i++) {
if (!covered[i]) {
covered[i] = 'N';
}
}
summaries[file] = covered.join('');
});
return summaries;
}
module.exports = function(
results: TestResult.AggregatedResult,
): PhabricatorReport {
return {
...results,
coverageMap: results.coverageMap && summarize(results.coverageMap),
};
};