Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: try to find sources in parent folders of LCOV coverage file #57

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions spec/coverage_reporter/parsers/lcov_parser_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,35 @@ Spectator.describe CoverageReporter::LcovParser do
})
end
end

context "when referenced files from the same folder" do
let(filename) { "spec/fixtures/lcov/test-current-folder.lcov" }

it "parses correctly" do
reports = subject.parse(filename)

expect(reports.size).to eq 1
expect(reports[0].to_h).to eq({
:name => "spec/fixtures/lcov/test.js",
:coverage => coverage,
:source_digest => "6e7aea5aa7198489561a44359dc7e1a4",
})
end
end

context "when referenced files from the parent folder" do
let(filename) { "spec/fixtures/lcov/coverage/test.lcov" }

it "parses correctly" do
reports = subject.parse(filename)

expect(reports.size).to eq 1
expect(reports[0].to_h).to eq({
:name => "spec/fixtures/lcov/test.js",
:coverage => coverage,
:source_digest => "6e7aea5aa7198489561a44359dc7e1a4",
})
end
end
end
end
123 changes: 123 additions & 0 deletions spec/fixtures/lcov/coverage/test.lcov
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
SF:dist/<define:DATA>
FNF:0
FNH:0
DA:1,1
LF:1
LH:1
BRF:0
BRH:0
end_of_record
SF:spec/fixtures/lcov/test.js
DA:1,1
DA:2,1
DA:3,1
DA:5,1
DA:6,66
DA:7,66
DA:10,1
DA:11,323
DA:12,63
DA:13,63
DA:14,63
DA:15,60
DA:17,3
DA:19,63
DA:20,32
DA:22,63
DA:23,63
DA:24,63
DA:25,3
DA:27,63
DA:28,60
DA:30,3
DA:32,63
DA:33,27
DA:34,27
DA:35,27
DA:38,323
DA:41,1
DA:42,5
DA:43,5
DA:45,2
DA:48,3
DA:49,3
DA:50,1
DA:51,1
DA:52,1
DA:53,1
DA:55,0
DA:58,2
DA:59,2
DA:60,2
DA:61,0
DA:63,2
DA:66,2
DA:67,2
DA:72,1
DA:73,1
DA:74,1
DA:75,1
DA:76,1
DA:77,1
DA:79,1
DA:80,1
DA:82,1
DA:83,87
DA:84,87
DA:85,6
DA:86,6
DA:87,6
DA:88,6
DA:89,9
DA:90,6
DA:91,6
DA:93,81
DA:97,1
DA:98,1
DA:101,1
DA:102,1
DA:105,1
DA:107,2
DA:108,2
DA:109,2
DA:110,1
DA:112,2
DA:115,1
DA:116,3
DA:117,1
DA:118,1
DA:121,2
DA:122,2
DA:123,2
DA:125,1
DA:126,1
DA:128,2
DA:132,1
DA:133,1
DA:136,1
DA:137,50
DA:138,50
DA:139,50
DA:140,50
DA:141,20
DA:143,50
DA:144,50
DA:145,2
DA:147,50
DA:148,50
DA:149,50
DA:150,31
DA:152,50
DA:153,24
DA:155,50
DA:210,40
DA:212,1
DA:213,8
DA:214,6
DA:216,8
DA:217,186
DA:218,21
DA:219,21
DA:220,21
DA:222,165
end_of_record
123 changes: 123 additions & 0 deletions spec/fixtures/lcov/test-current-folder.lcov
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
SF:dist/<define:DATA>
FNF:0
FNH:0
DA:1,1
LF:1
LH:1
BRF:0
BRH:0
end_of_record
SF:test.js
DA:1,1
DA:2,1
DA:3,1
DA:5,1
DA:6,66
DA:7,66
DA:10,1
DA:11,323
DA:12,63
DA:13,63
DA:14,63
DA:15,60
DA:17,3
DA:19,63
DA:20,32
DA:22,63
DA:23,63
DA:24,63
DA:25,3
DA:27,63
DA:28,60
DA:30,3
DA:32,63
DA:33,27
DA:34,27
DA:35,27
DA:38,323
DA:41,1
DA:42,5
DA:43,5
DA:45,2
DA:48,3
DA:49,3
DA:50,1
DA:51,1
DA:52,1
DA:53,1
DA:55,0
DA:58,2
DA:59,2
DA:60,2
DA:61,0
DA:63,2
DA:66,2
DA:67,2
DA:72,1
DA:73,1
DA:74,1
DA:75,1
DA:76,1
DA:77,1
DA:79,1
DA:80,1
DA:82,1
DA:83,87
DA:84,87
DA:85,6
DA:86,6
DA:87,6
DA:88,6
DA:89,9
DA:90,6
DA:91,6
DA:93,81
DA:97,1
DA:98,1
DA:101,1
DA:102,1
DA:105,1
DA:107,2
DA:108,2
DA:109,2
DA:110,1
DA:112,2
DA:115,1
DA:116,3
DA:117,1
DA:118,1
DA:121,2
DA:122,2
DA:123,2
DA:125,1
DA:126,1
DA:128,2
DA:132,1
DA:133,1
DA:136,1
DA:137,50
DA:138,50
DA:139,50
DA:140,50
DA:141,20
DA:143,50
DA:144,50
DA:145,2
DA:147,50
DA:148,50
DA:149,50
DA:150,31
DA:152,50
DA:153,24
DA:155,50
DA:210,40
DA:212,1
DA:213,8
DA:214,6
DA:216,8
DA:217,186
DA:218,21
DA:219,21
DA:220,21
DA:222,165
end_of_record
7 changes: 5 additions & 2 deletions src/coverage_reporter/parsers/lcov_parser.cr
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,12 @@ module CoverageReporter

def parse(filename : String) : Array(FileReport)
lcov_info(filename).compact_map do |name, info|
next unless File.exists?(name)
next report(name, info) if File.exists?(name)

report(name, info)
Path[filename].parents.each do |parent|
lcov_related = parent / name
break report(lcov_related.to_s, info) if File.exists?(lcov_related)
end
end
end

Expand Down