Skip to content

Commit ee7b86b

Browse files
committed
comparing individual coverage files
1 parent 4ea0bfe commit ee7b86b

170 files changed

Lines changed: 510 additions & 323 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CodeCoverageCompare/CodeCoverageCompare/main.swift

Lines changed: 95 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,101 @@
99
import Foundation
1010
import CodeCoverageFramework
1111

12-
let coverage = "//Users/michael/Documents/git/CodeCoverageCompare/example/coverage.json"
12+
func loadCoverageFile(file: String) -> Project {
1313

14-
let url = URL(fileURLWithPath: coverage)
15-
let data = try Data(contentsOf: url)
16-
let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
17-
if let jsonResult = jsonResult as? Dictionary<String, AnyObject>, let person = jsonResult["removedTargets"] as? [Any] {
18-
print(person)
19-
}
14+
let url = URL(fileURLWithPath: file)
15+
let json = try! Data(contentsOf: url)
16+
17+
let decoder = JSONDecoder()
18+
return try! decoder.decode(Project.self, from: json)
19+
}
20+
21+
struct Row {
22+
var change: String {
23+
var change = ""
24+
if(develop > pr) {
25+
change = ""
26+
} else if(pr > develop) {
27+
change = ""
28+
}
29+
return change
30+
}
31+
let file: String
32+
let develop: Double
33+
let pr: Double
34+
35+
func toString() -> String {
36+
return "|\(change)|\(file)|\(develop)|\(pr)|"
37+
}
38+
}
39+
40+
extension Row: Hashable {
41+
static func == (lhs: Row, rhs: Row) -> Bool {
42+
return lhs.file == rhs.file
43+
}
44+
45+
func hash(into hasher: inout Hasher) {
46+
hasher.combine(file)
47+
}
48+
}
49+
50+
func getFilesChanged(before: Project, after: Project) -> Set<Row> {
51+
var rows = Set<Row>()
52+
for beforeFile in before.targets.first!.files {
53+
let filename = beforeFile.name
54+
let beforeCoverage = beforeFile.lineCoverage
55+
var afterCoverage = 0.0
56+
for afterFile in after.targets.first!.files {
57+
if afterFile.name == filename {
58+
afterCoverage = afterFile.lineCoverage
59+
break
60+
}
61+
}
62+
rows.insert(Row(file: filename, develop: beforeCoverage, pr: afterCoverage))
63+
}
64+
65+
for afterFile in after.targets.first!.files {
66+
let filename = afterFile.name
67+
var beforeCoverage = 0.0
68+
let afterCoverage = afterFile.lineCoverage
69+
for beforeFile in before.targets.first!.files {
70+
if beforeFile.name == filename {
71+
beforeCoverage = beforeFile.lineCoverage
72+
break
73+
}
74+
}
75+
// rows.insert(Row(file: filename, develop: beforeCoverage, pr: afterCoverage))
76+
}
77+
return rows
78+
}
79+
80+
func getRows(before: Project, after: Project) -> Set<Row> {
81+
return getFilesChanged(before: before, after: after)
82+
}
83+
84+
func printTable(before: Project, after: Project) {
85+
print("|Change|File|Develop|PR|")
86+
print("|------|----|-------|--|")
87+
for row in getRows(before: before, after: after) {
88+
print(row.toString())
89+
}
90+
}
91+
92+
let before = "//Users/michael/Documents/git/CodeCoverageCompare/example/before.json"
93+
let after = "//Users/michael/Documents/git/CodeCoverageCompare/example/after.json"
94+
95+
printTable(before: loadCoverageFile(file: before), after: loadCoverageFile(file: after))
96+
97+
func compare() throws {
98+
let coverage = "//Users/michael/Documents/git/CodeCoverageCompare/example/coverage.json"
99+
100+
let url = URL(fileURLWithPath: coverage)
101+
let data = try Data(contentsOf: url)
102+
let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
103+
if let jsonResult = jsonResult as? Dictionary<String, AnyObject>, let person = jsonResult["removedTargets"] as? [Any] {
104+
print(person)
105+
}
106+
}
20107

21108
//CodeCoverage.go(fileA: a, fileB: b)
109+

CodeCoverageFramework/CodeCoverageFramework.xcodeproj/project.pbxproj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
4C61E9CF226B91B200F95EA9 /* CodeCoverageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9CE226B91B200F95EA9 /* CodeCoverageTests.swift */; };
2020
4C61E9D1226BEDE400F95EA9 /* CoveredLineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9D0226BEDE400F95EA9 /* CoveredLineTests.swift */; };
2121
4C61E9E82274870E00F95EA9 /* CoveredResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9E72274870E00F95EA9 /* CoveredResult.swift */; };
22-
4CA6CC32237878C50010ACC9 /* Coverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CC31237878C50010ACC9 /* Coverage.swift */; };
22+
4CA6CC32237878C50010ACC9 /* CoverageCompare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CC31237878C50010ACC9 /* CoverageCompare.swift */; };
23+
4CA6CD4D237A043D0010ACC9 /* Coverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CD4C237A043D0010ACC9 /* Coverage.swift */; };
2324
/* End PBXBuildFile section */
2425

2526
/* Begin PBXContainerItemProxy section */
@@ -49,7 +50,8 @@
4950
4C61E9CE226B91B200F95EA9 /* CodeCoverageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeCoverageTests.swift; sourceTree = "<group>"; };
5051
4C61E9D0226BEDE400F95EA9 /* CoveredLineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredLineTests.swift; sourceTree = "<group>"; };
5152
4C61E9E72274870E00F95EA9 /* CoveredResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredResult.swift; sourceTree = "<group>"; };
52-
4CA6CC31237878C50010ACC9 /* Coverage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coverage.swift; sourceTree = "<group>"; };
53+
4CA6CC31237878C50010ACC9 /* CoverageCompare.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverageCompare.swift; sourceTree = "<group>"; };
54+
4CA6CD4C237A043D0010ACC9 /* Coverage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coverage.swift; sourceTree = "<group>"; };
5355
/* End PBXFileReference section */
5456

5557
/* Begin PBXFrameworksBuildPhase section */
@@ -100,7 +102,8 @@
100102
4C61E9C3226B87CD00F95EA9 /* CoveredProject.swift */,
101103
4C61E9E72274870E00F95EA9 /* CoveredResult.swift */,
102104
4C61E9C5226B87EC00F95EA9 /* Parser.swift */,
103-
4CA6CC31237878C50010ACC9 /* Coverage.swift */,
105+
4CA6CC31237878C50010ACC9 /* CoverageCompare.swift */,
106+
4CA6CD4C237A043D0010ACC9 /* Coverage.swift */,
104107
);
105108
path = CodeCoverageFramework;
106109
sourceTree = "<group>";
@@ -232,7 +235,8 @@
232235
4C61E9C0226B876800F95EA9 /* CoveredLine.swift in Sources */,
233236
4C61E9C4226B87CD00F95EA9 /* CoveredProject.swift in Sources */,
234237
4C61E9C8226B881C00F95EA9 /* CodeCoverage.swift in Sources */,
235-
4CA6CC32237878C50010ACC9 /* Coverage.swift in Sources */,
238+
4CA6CC32237878C50010ACC9 /* CoverageCompare.swift in Sources */,
239+
4CA6CD4D237A043D0010ACC9 /* Coverage.swift in Sources */,
236240
4C61E9C2226B87BA00F95EA9 /* CoveredClass.swift in Sources */,
237241
4C61E9E82274870E00F95EA9 /* CoveredResult.swift in Sources */,
238242
);

0 commit comments

Comments
 (0)