From b6fc117b174f6f907933b35a0905aeb9915f9d07 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 27 Jan 2025 17:50:34 -0600 Subject: [PATCH 1/7] Adds undercover gem to the gemfile --- Gemfile | 2 ++ Gemfile.lock | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/Gemfile b/Gemfile index 3eb9efa049..342f6ec61e 100644 --- a/Gemfile +++ b/Gemfile @@ -173,6 +173,8 @@ group :test do gem 'pdf-reader' gem 'rails-controller-testing' gem 'simplecov', require: false + gem 'simplecov-lcov', require: false + gem 'undercover', require: false gem 'vcr', require: false gem 'webmock', require: false # See spec/spec_helper.rb for instructions diff --git a/Gemfile.lock b/Gemfile.lock index 37547b0258..d391606055 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -364,6 +364,8 @@ GEM image_processing (1.12.2) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) + imagen (0.2.0) + parser (>= 2.5, != 2.5.1.1) immigrant (0.3.6) activerecord (>= 3.0) invisible_captcha (2.3.0) @@ -715,6 +717,7 @@ GEM rubyzip (2.3.2) rufus-scheduler (3.8.2) fugit (~> 1.1, >= 1.1.6) + rugged (1.7.2) sanitize (6.1.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) @@ -743,6 +746,7 @@ GEM simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) + simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) spreadsheet_architect (5.0.0) caxlsx (>= 3.3.0, < 4) @@ -804,6 +808,11 @@ GEM turbo-rails (>= 1.3.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) + undercover (0.6.3) + bigdecimal + imagen (>= 0.2.0) + rainbow (>= 2.1, < 4.0) + rugged (>= 0.27, < 1.8) unicode-display_width (2.5.0) uniform_notifier (1.16.0) uri (0.13.0) @@ -980,6 +989,7 @@ DEPENDENCIES sidekiq sidekiq-scheduler simplecov + simplecov-lcov spreadsheet_architect spring spring-commands-rspec @@ -992,6 +1002,7 @@ DEPENDENCIES timecop turbo-rails turbo_power + undercover valid_email2 validates_lengths_from_database vcr From 5b7675cd9b3d501c9634f18823b086e30b498afd Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 20 Jun 2025 10:27:32 +0100 Subject: [PATCH 2/7] Adds config file for undercover undercover setup patch --- .undercover | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .undercover diff --git a/.undercover b/.undercover new file mode 100644 index 0000000000..95a9fe08c9 --- /dev/null +++ b/.undercover @@ -0,0 +1,5 @@ +#!/bin/env ruby +# frozen_string_literal: true + +-l coverage/lcov/openfoodnetwork.lcov +-c master \ No newline at end of file From 4cb9d870b44cb0d2debfb42d3378f773b399959e Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 25 Jun 2025 13:51:09 +0100 Subject: [PATCH 3/7] Changes rake task to include merging of the lcov result files --- lib/tasks/simplecov.rake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/tasks/simplecov.rake b/lib/tasks/simplecov.rake index b0c896ecb7..d5bc344f06 100644 --- a/lib/tasks/simplecov.rake +++ b/lib/tasks/simplecov.rake @@ -5,6 +5,7 @@ namespace :simplecov do task :collate_results, # rubocop:disable Rails/RakeEnvironment doesn't need the full env [:path_to_results, :coverage_dir] do |_t, args| require "simplecov" + require "simplecov-lcov" path_to_results = args[:path_to_results].presence || "tmp/simplecov" output_path = args[:coverage_dir].presence || "coverage" @@ -13,5 +14,11 @@ namespace :simplecov do formatter(SimpleCov::Formatter::HTMLFormatter) coverage_dir(output_path) end + + SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true + SimpleCov.collate Dir[File.join(path_to_results, "**", ".resultset.json")], "rails" do + formatter(SimpleCov::Formatter::LcovFormatter) + coverage_dir(output_path) + end end end From e0efb34fe871d24fc4c0535a73397925904ef32e Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 27 Jan 2025 18:05:53 -0600 Subject: [PATCH 4/7] Adds undercover command to the build file build setup patch --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7084b0a03e..b447c5e5e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -408,3 +408,7 @@ jobs: retention-days: 7 if-no-files-found: ignore include-hidden-files: true + - name: Compare SimpleCov results with Undercover + run: | + git fetch --no-tags origin master:master + bundle exec undercover From 75e0a71e10caa4749a50a57f14ba033c40496915 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 27 Jun 2025 12:23:08 +0100 Subject: [PATCH 5/7] Adds a fake method with no test coverage to test Undercover gem --- lib/spree/core/fake_method.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/spree/core/fake_method.rb diff --git a/lib/spree/core/fake_method.rb b/lib/spree/core/fake_method.rb new file mode 100644 index 0000000000..09f3fa6634 --- /dev/null +++ b/lib/spree/core/fake_method.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Spree + module Core + class FakeMethod + # testing Undercover! + # it's a random method, with no test coverage + def square(number) + number * number + end + end + end +end From 4a1e32e790d8e7125e9f78efb97a69f971202529 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 27 Jun 2025 12:57:22 +1000 Subject: [PATCH 6/7] Spec fake method to show undercover working --- spec/lib/spree/core/fake_method_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 spec/lib/spree/core/fake_method_spec.rb diff --git a/spec/lib/spree/core/fake_method_spec.rb b/spec/lib/spree/core/fake_method_spec.rb new file mode 100644 index 0000000000..abddcd642d --- /dev/null +++ b/spec/lib/spree/core/fake_method_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'spec_helper' +require 'spree/core/fake_method' + +# Just checking that undercover recognises this. +RSpec.describe Spree::Core::FakeMethod do + it do + expect(subject.square(3)).to eq 9 + end +end From 1478990eac42af142673045081e53319444e2357 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 27 Jun 2025 12:29:32 +0100 Subject: [PATCH 7/7] Removes fake method and spec --- lib/spree/core/fake_method.rb | 13 ------------- spec/lib/spree/core/fake_method_spec.rb | 11 ----------- 2 files changed, 24 deletions(-) delete mode 100644 lib/spree/core/fake_method.rb delete mode 100644 spec/lib/spree/core/fake_method_spec.rb diff --git a/lib/spree/core/fake_method.rb b/lib/spree/core/fake_method.rb deleted file mode 100644 index 09f3fa6634..0000000000 --- a/lib/spree/core/fake_method.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module Spree - module Core - class FakeMethod - # testing Undercover! - # it's a random method, with no test coverage - def square(number) - number * number - end - end - end -end diff --git a/spec/lib/spree/core/fake_method_spec.rb b/spec/lib/spree/core/fake_method_spec.rb deleted file mode 100644 index abddcd642d..0000000000 --- a/spec/lib/spree/core/fake_method_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' -require 'spree/core/fake_method' - -# Just checking that undercover recognises this. -RSpec.describe Spree::Core::FakeMethod do - it do - expect(subject.square(3)).to eq 9 - end -end