Skip to content

Commit 16cc465

Browse files
authored
Xcode Averages (#4)
1 parent 9dd37ae commit 16cc465

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

index.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,44 @@ class LLVMCoverageReader {
1919
const data = require(file);
2020
console.log(data);
2121

22-
// Read the code coverage percentages for every package file
23-
const testedFiles = data['data'][0]['files'];
24-
const testFileCount = testedFiles.length;
25-
var accumlative = 0;
26-
for (const i in testedFiles) {
27-
accumlative += testedFiles[i]['summary']['lines']['percent'];
22+
// Create 2 groups of files (Source + Source&Test)
23+
const testAndSourceFiles = data['data'][0]['files'].filter((file) => !file.filename.includes('.build'));
24+
const sourceFiles = testAndSourceFiles.filter((file) => !file.filename.includes('Tests'));
25+
26+
// Iterate through the source files
27+
var sourceLineCount = 0;
28+
var sourceLinesCovered = 0;
29+
for (const i in sourceFiles) {
30+
let filename = sourceFiles[i].filename;
31+
let percent = sourceFiles[i]['summary']['lines']['percent'];
32+
let count = sourceFiles[i]['summary']['lines']['count'];
33+
let covered = sourceFiles[i]['summary']['lines']['covered'];
34+
//console.log(i, filename, covered, count, percent);
35+
sourceLineCount += sourceFiles[i]['summary']['lines']['count'];
36+
sourceLinesCovered += sourceFiles[i]['summary']['lines']['covered'];
37+
}
38+
39+
// Iterate through the source and test files
40+
var testAndSourceLineCount = 0;
41+
var testAndSourceLinesCovered = 0;
42+
for (const i in testAndSourceFiles) {
43+
let filename = testAndSourceFiles[i].filename;
44+
let percent = testAndSourceFiles[i]['summary']['lines']['percent'];
45+
let count = testAndSourceFiles[i]['summary']['lines']['count'];
46+
let covered = testAndSourceFiles[i]['summary']['lines']['covered'];
47+
//console.log(i, filename, covered, count, percent);
48+
testAndSourceLineCount += testAndSourceFiles[i]['summary']['lines']['count'];
49+
testAndSourceLinesCovered += testAndSourceFiles[i]['summary']['lines']['covered'];
2850
}
51+
52+
const sourcePercentage = ((sourceLinesCovered / sourceLineCount) * 100);
53+
const testAndSourcePercentage = ((testAndSourceLinesCovered / testAndSourceLineCount) * 100);
54+
// Average the 2 percentages together (what Xcode does).
55+
const avergagePercentage = ((sourcePercentage + testAndSourcePercentage) / 200.0) * 100;
56+
console.log('Percentages', sourcePercentage, testAndSourcePercentage);
2957

30-
let percentage = Math.floor(((accumlative / (100 * testFileCount)) * 100)).toFixed(0);
31-
console.log(`Coverage Percentage [${percentage}]`);
58+
const percentage = avergagePercentage.toFixed(0);
59+
console.log(`Coverage Percentage [${avergagePercentage}]`);
3260
core.setOutput("percentage", percentage);
3361

3462
} catch (error) {

0 commit comments

Comments
 (0)