From ea9e5897f96c0526eca9c70f04a286cccef50b4d Mon Sep 17 00:00:00 2001 From: Jeanine Soterwood Date: Wed, 22 May 2024 10:48:10 -0700 Subject: [PATCH] Add specs to test each filetype --- spec/coverage_reporter/parser_spec.cr | 92 ++++++++++++++++++- src/coverage_reporter/parsers/gcov_parser.cr | 3 +- src/coverage_reporter/parsers/lcov_parser.cr | 2 +- .../parsers/simplecov_parser.cr | 3 +- 4 files changed, 93 insertions(+), 7 deletions(-) diff --git a/spec/coverage_reporter/parser_spec.cr b/spec/coverage_reporter/parser_spec.cr index 88a1bcc..2c021b0 100644 --- a/spec/coverage_reporter/parser_spec.cr +++ b/spec/coverage_reporter/parser_spec.cr @@ -9,12 +9,94 @@ Spectator.describe CoverageReporter::Parser do describe "#parse" do context "for exact file" do - let(coverage_files) { ["spec/fixtures/lcov/test.lcov"] } + context "clover" do + let(coverage_files) { ["spec/fixtures/clover/clover-unleash.xml"] } - it "returns reports for one file" do - reports = subject.parse + it "returns reports for one file" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "cobertura" do + let(coverage_files) { ["spec/fixtures/cobertura/cobertura.xml"] } + + it "returns reports" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "jacoco" do + let(coverage_files) { ["spec/fixtures/jacoco/jacoco-report.xml"] } + + it "returns reports" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "golang" do + let(coverage_files) { ["spec/fixtures/golang/coverage.out"] } + + it "returns reports" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "python" do + let(coverage_files) { ["spec/fixtures/python/.coverage"] } + + it "returns reports" do + reports = subject.parse - expect(reports.size).to eq 2 + expect(reports.size).to be > 0 + end + end + + context "coveralls" do + let(coverage_files) { ["spec/fixtures/coveralls/coveralls.json"] } + + it "returns reports" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "lcov" do + let(coverage_files) { ["spec/fixtures/lcov/test.lcov"] } + + it "returns reports for one file" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "simplecov" do + let(coverage_files) { ["spec/fixtures/simplecov/with-only-lines.resultset.json"] } + + it "returns reports" do + reports = subject.parse + + expect(reports.size).to be > 0 + end + end + + context "gcov" do + let(coverage_files) { ["spec/fixtures/gcov/main.c.gcov"] } + + it "returns reports" do + reports = subject.parse + + expect(reports.size).to be > 0 + end end context "for non-existing file" do @@ -37,6 +119,7 @@ Spectator.describe CoverageReporter::Parser do end context "when coverage format forced (lcov)" do + let(coverage_files) { ["spec/fixtures/lcov/test.lcov"] } let(coverage_format) { "lcov" } it "returns report only for specified format" do @@ -97,6 +180,7 @@ Spectator.describe CoverageReporter::Parser do end context "for unknown coverage format" do + let(coverage_files) { ["spec/fixtures/lcov/test.lcov"] } let(coverage_format) { "unknown" } it "raises error" do diff --git a/src/coverage_reporter/parsers/gcov_parser.cr b/src/coverage_reporter/parsers/gcov_parser.cr index 9a9cc73..6cf563a 100644 --- a/src/coverage_reporter/parsers/gcov_parser.cr +++ b/src/coverage_reporter/parsers/gcov_parser.cr @@ -16,7 +16,8 @@ module CoverageReporter end def matches?(filename : String) : Bool - true + !filename.ends_with?(".resultset.json") && + !filename.ends_with?(".lcov") && !filename.ends_with?("lcov.info") end def parse(filename : String) : Array(FileReport) diff --git a/src/coverage_reporter/parsers/lcov_parser.cr b/src/coverage_reporter/parsers/lcov_parser.cr index 2693c96..bb2e325 100644 --- a/src/coverage_reporter/parsers/lcov_parser.cr +++ b/src/coverage_reporter/parsers/lcov_parser.cr @@ -23,7 +23,7 @@ module CoverageReporter end def matches?(filename : String) : Bool - true + !filename.ends_with?(".resultset.json") && !filename.ends_with?(".gcov") end def parse(filename : String) : Array(FileReport) diff --git a/src/coverage_reporter/parsers/simplecov_parser.cr b/src/coverage_reporter/parsers/simplecov_parser.cr index 7839abe..1e05c3c 100644 --- a/src/coverage_reporter/parsers/simplecov_parser.cr +++ b/src/coverage_reporter/parsers/simplecov_parser.cr @@ -31,7 +31,8 @@ module CoverageReporter end def matches?(filename : String) : Bool - true + !filename.ends_with?(".gcov") && + !filename.ends_with?(".lcov") && !filename.ends_with?("lcov.info") end def parse(filename : String) : Array(FileReport)