From 9f810987b53886314c7985a8d0830a2745c43cfc Mon Sep 17 00:00:00 2001 From: fatkodima Date: Fri, 18 Oct 2024 16:56:08 +0300 Subject: [PATCH] Fix unused views report --- lib/coverband.rb | 2 +- lib/coverband/collectors/view_tracker.rb | 5 ++++- lib/coverband/configuration.rb | 2 +- test/coverband/collectors/view_tracker_test.rb | 8 ++++---- test/coverband/configuration_test.rb | 7 ++++--- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/coverband.rb b/lib/coverband.rb index f544986c..da773dde 100644 --- a/lib/coverband.rb +++ b/lib/coverband.rb @@ -5,7 +5,6 @@ require "redis" require "coverband/version" require "coverband/at_exit" -require "coverband/configuration" require "coverband/utils/relative_file_converter" require "coverband/utils/absolute_file_converter" require "coverband/adapters/base" @@ -27,6 +26,7 @@ require "coverband/integrations/background" require "coverband/integrations/background_middleware" require "coverband/integrations/rack_server_check" +require "coverband/configuration" Coverband::Adapters::RedisStore = Coverband::Adapters::HashRedisStore if ENV["COVERBAND_HASH_REDIS_STORE"] diff --git a/lib/coverband/collectors/view_tracker.rb b/lib/coverband/collectors/view_tracker.rb index 6e33ada0..4ad60dc7 100644 --- a/lib/coverband/collectors/view_tracker.rb +++ b/lib/coverband/collectors/view_tracker.rb @@ -17,6 +17,7 @@ class ViewTracker < AbstractTracker REPORT_ROUTE = "views_tracker" TITLE = "Views" + VIEWS_PATTERNS = %w[.erb$ .haml$ .slim$] def initialize(options = {}) @project_directory = File.expand_path(Coverband.configuration.root) @@ -24,6 +25,8 @@ def initialize(options = {}) @roots = @roots.split(",") if @roots.is_a?(String) super + + @ignore_patterns -= VIEWS_PATTERNS.map { |ignore_str| Regexp.new(ignore_str) } end def railtie! @@ -84,7 +87,7 @@ def unused_keys(used_views = nil) recently_used_views = used_keys.keys unused_views = all_keys - recently_used_views # since layouts don't include format we count them used if they match with ANY formats - unused_views.reject { |view| view.include?("/layouts/") && recently_used_views.any? { |used_view| view.include?(used_view) } } + unused_views = unused_views.reject { |view| view.include?("/layouts/") && recently_used_views.any? { |used_view| view.include?(used_view) } } unused_views.reject { |view| @ignore_patterns.any? { |pattern| view.match?(pattern) } } end diff --git a/lib/coverband/configuration.rb b/lib/coverband/configuration.rb index 99e11a29..7c01591c 100644 --- a/lib/coverband/configuration.rb +++ b/lib/coverband/configuration.rb @@ -48,7 +48,7 @@ class Configuration # Heroku when building assets runs code from a dynamic directory # /tmp was added to avoid coverage from /tmp/build directories during # heroku asset compilation - IGNORE_DEFAULTS = %w[vendor/ .erb$ .slim$ /tmp internal:prelude db/schema.rb] + IGNORE_DEFAULTS = %w[vendor/ /tmp internal:prelude db/schema.rb] + Collectors::ViewTracker::VIEWS_PATTERNS # Add in missing files which were never loaded # we need to know what all paths to check for unloaded files diff --git a/test/coverband/collectors/view_tracker_test.rb b/test/coverband/collectors/view_tracker_test.rb index 061a3cba..fbe61962 100644 --- a/test/coverband/collectors/view_tracker_test.rb +++ b/test/coverband/collectors/view_tracker_test.rb @@ -88,22 +88,22 @@ def setup Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true) store = fake_store file_path = "#{File.expand_path(Coverband.configuration.root)}/file" - target = [file_path, "not_used"] + target = [file_path, "not_used.html.erb"] tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: "dir", target: target) tracker.track_key(identifier: file_path) tracker.save_report - assert_equal ["not_used"], tracker.unused_keys + assert_equal ["not_used.html.erb"], tracker.unused_keys end test "report hides partials marked in ignore config" do Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true) store = fake_store file_path = "#{File.expand_path(Coverband.configuration.root)}/app/views/anything/ignore_me.html.erb" - target = [file_path, "not_used"] + target = [file_path, "not_used.html.erb"] tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: "dir", target: target) tracker.track_key(identifier: file_path) tracker.save_report - assert_equal ["not_used"], tracker.unused_keys + assert_equal ["not_used.html.erb"], tracker.unused_keys assert_equal [], tracker.used_keys.keys end diff --git a/test/coverband/configuration_test.rb b/test/coverband/configuration_test.rb index 0259e663..ec2bd9a2 100644 --- a/test/coverband/configuration_test.rb +++ b/test/coverband/configuration_test.rb @@ -18,7 +18,7 @@ def setup test "ignore works with equal" do Coverband::Collectors::Coverage.instance.reset_instance - expected = ["vendor/", ".erb$", ".slim$", "/tmp", "internal:prelude", "db/schema.rb", "config/environments"].map { |str| Regexp.new(str) } + expected = ["vendor/", "/tmp", "internal:prelude", "db/schema.rb", ".erb$", ".haml$", ".slim$", "config/environments"].map { |str| Regexp.new(str) } assert_equal expected, Coverband.configuration.ignore end @@ -28,11 +28,12 @@ def setup end Coverband::Collectors::Coverage.instance.reset_instance expected = ["vendor/", - ".erb$", - ".slim$", "/tmp", "internal:prelude", "db/schema.rb", + ".erb$", + ".haml$", + ".slim$", "config/environments", "config/initializers"].map { |str| Regexp.new(str) } assert_equal expected, Coverband.configuration.ignore