coverband 5.2.3 → 5.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +6 -1
  3. data/Gemfile +2 -10
  4. data/{Gemfile.rails4 → Gemfile.rails7} +2 -1
  5. data/README.md +10 -9
  6. data/changes.md +12 -0
  7. data/coverband.gemspec +3 -3
  8. data/diagram.svg +1 -1
  9. data/lib/coverband/adapters/hash_redis_store.rb +1 -1
  10. data/lib/coverband/adapters/redis_store.rb +0 -2
  11. data/lib/coverband/collectors/coverage.rb +7 -1
  12. data/lib/coverband/collectors/route_tracker.rb +172 -0
  13. data/lib/coverband/configuration.rb +4 -1
  14. data/lib/coverband/integrations/background.rb +1 -0
  15. data/lib/coverband/reporters/web.rb +41 -4
  16. data/lib/coverband/utils/configuration_template.rb +52 -0
  17. data/lib/coverband/utils/html_formatter.rb +8 -0
  18. data/lib/coverband/utils/rails6_ext.rb +58 -0
  19. data/lib/coverband/utils/railtie.rb +20 -0
  20. data/lib/coverband/utils/tasks.rb +8 -0
  21. data/lib/coverband/version.rb +1 -1
  22. data/lib/coverband.rb +1 -0
  23. data/test/benchmarks/benchmark.rake +0 -1
  24. data/test/coverband/adapters/redis_store_test.rb +1 -1
  25. data/test/coverband/collectors/coverage_test.rb +20 -0
  26. data/test/coverband/collectors/route_tracker_test.rb +167 -0
  27. data/test/coverband/collectors/view_tracker_test.rb +1 -1
  28. data/test/coverband/reporters/web_test.rb +1 -1
  29. data/test/forked/rails_full_stack_views_test.rb +5 -0
  30. data/test/forked/rails_route_tracker_stack_test.rb +45 -0
  31. data/test/forked/rails_view_tracker_stack_test.rb +1 -1
  32. data/test/rails5_dummy/config/coverband.rb +1 -2
  33. data/test/rails7_dummy/Rakefile +6 -0
  34. data/test/rails7_dummy/app/controllers/dummy_controller.rb +5 -0
  35. data/test/rails7_dummy/app/controllers/dummy_view_controller.rb +16 -0
  36. data/test/rails7_dummy/app/views/dummy_view/show.html.erb +5 -0
  37. data/test/rails7_dummy/app/views/dummy_view/show_haml.html.haml +4 -0
  38. data/test/rails7_dummy/app/views/dummy_view/show_slim.html.slim +4 -0
  39. data/test/rails7_dummy/config/application.rb +15 -0
  40. data/test/rails7_dummy/config/boot.rb +3 -0
  41. data/test/rails7_dummy/config/coverband.rb +3 -0
  42. data/test/rails7_dummy/config/coverband_missing_redis.rb +3 -0
  43. data/test/rails7_dummy/config/environment.rb +5 -0
  44. data/test/rails7_dummy/config/routes.rb +7 -0
  45. data/test/rails7_dummy/config/secrets.yml +3 -0
  46. data/test/rails7_dummy/config.ru +4 -0
  47. data/test/rails7_dummy/tmp/.keep +0 -0
  48. data/test/test_helper.rb +14 -5
  49. data/views/nav.erb +7 -2
  50. data/views/route_tracker.erb +49 -0
  51. data/views/view_tracker.erb +1 -1
  52. metadata +42 -5
  53. data/Gemfile.rails6 +0 -9
@@ -0,0 +1,167 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("../../test_helper", File.dirname(__FILE__))
4
+ require "ostruct"
5
+
6
+ class RouterTrackerTest < Minitest::Test
7
+ # NOTE: using struct vs open struct as open struct has a special keyword method that overshadows the method value on Ruby 2.x
8
+ Payload = Struct.new(:path, :method)
9
+
10
+ def tracker_key
11
+ Coverband::Collectors::RouteTracker.expects(:supported_version?).at_least_once.returns(true)
12
+ Coverband::Collectors::RouteTracker.new.send(:tracker_key)
13
+ end
14
+
15
+ def setup
16
+ super
17
+ fake_store.raw_store.del(tracker_key)
18
+ end
19
+
20
+ test "init correctly" do
21
+ Coverband::Collectors::RouteTracker.expects(:supported_version?).returns(true)
22
+ tracker = Coverband::Collectors::RouteTracker.new(store: fake_store, roots: "dir")
23
+ assert_equal nil, tracker.target.first
24
+ assert !tracker.store.nil?
25
+ assert_equal [], tracker.target
26
+ assert_equal [], tracker.logged_routes
27
+ end
28
+
29
+ test "track redirect routes" do
30
+ store = fake_store
31
+ route_hash = {controller: nil, action: nil, url_path: "path", verb: "GET"}
32
+ store.raw_store.expects(:hset).with(tracker_key, route_hash.to_s, anything)
33
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
34
+
35
+ payload = {
36
+ request: Payload.new("path", "GET")
37
+ }
38
+ tracker.track_routes("name", "start", "finish", "id", payload)
39
+ tracker.report_routes_tracked
40
+ assert_equal [route_hash], tracker.logged_routes
41
+ end
42
+
43
+ test "track controller routes" do
44
+ store = fake_store
45
+ route_hash = {controller: "some/controller", action: "index", url_path: nil, verb: "GET"}
46
+ store.raw_store.expects(:hset).with(tracker_key, route_hash.to_s, anything)
47
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
48
+ payload = {
49
+ params: {"controller" => "some/controller"},
50
+ controller: "SomeController",
51
+ action: "index",
52
+ path: "path",
53
+ method: "GET"
54
+ }
55
+ tracker.track_routes("name", "start", "finish", "id", payload)
56
+ tracker.report_routes_tracked
57
+ assert_equal [route_hash], tracker.logged_routes
58
+ end
59
+
60
+ test "report used routes" do
61
+ store = fake_store
62
+ route_hash = {controller: "some/controller", action: "index", url_path: nil, verb: "GET"}
63
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
64
+ payload = {
65
+ params: {"controller" => "some/controller"},
66
+ controller: "SomeController",
67
+ action: "index",
68
+ path: "path",
69
+ method: "GET"
70
+ }
71
+ tracker.track_routes("name", "start", "finish", "id", payload)
72
+ tracker.report_routes_tracked
73
+ assert_equal [route_hash.to_s], tracker.used_routes.keys
74
+ end
75
+
76
+ test "report unused routes" do
77
+ store = fake_store
78
+ app_routes = [
79
+ {
80
+ controller: "some/controller",
81
+ action: "show",
82
+ url_path: "some/controller/show",
83
+ verb: "GET"
84
+ },
85
+ {
86
+ controller: "some/controller",
87
+ action: "index",
88
+ url_path: "some/controller/show",
89
+ verb: "GET"
90
+ }
91
+ ]
92
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir", target: app_routes)
93
+ payload = {
94
+ params: {"controller" => "some/controller"},
95
+ controller: "SomeController",
96
+ action: "index",
97
+ path: "path",
98
+ method: "GET"
99
+ }
100
+ tracker.track_routes("name", "start", "finish", "id", payload)
101
+ tracker.report_routes_tracked
102
+ assert_equal [app_routes.first], tracker.unused_routes
103
+ end
104
+
105
+ test "report unused routes pulls out parameterized routes" do
106
+ store = fake_store
107
+ app_routes = [
108
+ {
109
+ controller: "some/controller",
110
+ action: "show",
111
+ url_path: "some/controller/:user_id",
112
+ verb: "GET"
113
+ }
114
+ ]
115
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir", target: app_routes)
116
+ payload = {
117
+ params: {"controller" => "some/controller"},
118
+ controller: "SomeController",
119
+ action: "show",
120
+ path: "some/controller/123",
121
+ method: "GET"
122
+ }
123
+ tracker.track_routes("name", "start", "finish", "id", payload)
124
+ tracker.report_routes_tracked
125
+ assert_equal [], tracker.unused_routes
126
+ end
127
+
128
+ test "reset store" do
129
+ store = fake_store
130
+ payload = {
131
+ params: {"controller" => "some/controller"},
132
+ controller: "SomeController",
133
+ action: "index",
134
+ path: "path",
135
+ method: "GET"
136
+ }
137
+ store.raw_store.expects(:del).with(tracker_key)
138
+ store.raw_store.expects(:del).with("route_tracker_time")
139
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
140
+ tracker.track_routes("name", "start", "finish", "id", payload)
141
+ tracker.reset_recordings
142
+ end
143
+
144
+ test "clear_file" do
145
+ store = fake_store
146
+ route_hash = {controller: "some/controller", action: "index", url_path: nil, verb: "GET"}
147
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
148
+ payload = {
149
+ params: {"controller" => "some/controller"},
150
+ controller: "SomeController",
151
+ action: "index",
152
+ path: "path",
153
+ method: "GET"
154
+ }
155
+ tracker.track_routes("name", "start", "finish", "id", payload)
156
+ tracker.report_routes_tracked
157
+ assert_equal [route_hash.to_s], tracker.used_routes.keys
158
+ tracker.clear_route!(route_hash.to_s)
159
+ assert_equal [], tracker.store.raw_store.hgetall(tracker_key).keys
160
+ end
161
+
162
+ protected
163
+
164
+ def fake_store
165
+ @fake_store ||= Coverband::Adapters::RedisStore.new(Coverband::Test.redis, redis_namespace: "coverband_test")
166
+ end
167
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require File.expand_path("../../test_helper", File.dirname(__FILE__))
4
4
 
5
- class ReporterTest < Minitest::Test
5
+ class ViewTrackerTest < Minitest::Test
6
6
  def tracker_key
7
7
  "render_tracker_2"
8
8
  end
@@ -39,7 +39,7 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.2.0")
39
39
 
40
40
  test "clears coverband" do
41
41
  post "/clear"
42
- assert_equal 301, last_response.status
42
+ assert_equal 302, last_response.status
43
43
  end
44
44
  end
45
45
  end
@@ -23,6 +23,7 @@ class RailsFullStackTest < Minitest::Test
23
23
  assert_content("I am no dummy view tracker text")
24
24
  Coverband.report_coverage
25
25
  Coverband.configuration.view_tracker&.report_views_tracked
26
+ Coverband.configuration.route_tracker&.report_routes_tracked
26
27
  visit "/coverage/view_tracker"
27
28
  assert_content("Used Views: (1)")
28
29
  assert_content("Unused Views: (2)")
@@ -30,6 +31,10 @@ class RailsFullStackTest < Minitest::Test
30
31
  assert_selector("li.unused-views", text: "dummy_view/show_haml.html.haml")
31
32
  assert_selector("li.unused-views", text: "dummy_view/show_slim.html.slim")
32
33
 
34
+ visit "/coverage/route_tracker"
35
+ assert_content("Used Routes: (1)")
36
+ assert_content("Unused Routes: (5)")
37
+
33
38
  visit "/dummy_view/show_haml"
34
39
  assert_content("I am haml text")
35
40
  Coverband.report_coverage
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("../rails_test_helper", File.dirname(__FILE__))
4
+
5
+ class RailsRoutesWithoutConfigStackTest < Minitest::Test
6
+ def setup
7
+ super
8
+ setup_server
9
+ end
10
+
11
+ def teardown
12
+ super
13
+ shutdown_server
14
+ end
15
+
16
+ test "check route tracker" do
17
+ output = `sleep 7 && curl http://localhost:9999/dummy_view/show`
18
+ assert output.match(/rendered view/)
19
+ assert output.match(/I am no dummy view tracker text/)
20
+ output = `sleep 2 && curl http://localhost:9999/coverage/route_tracker`
21
+ assert output.match(/Used Routes: \(1\)/)
22
+ assert output.match(/dummy_view\/show/)
23
+ assert output.match(/GET/)
24
+ end
25
+
26
+ private
27
+
28
+ # NOTE: We aren't leveraging Capybara because it loads all of our other test helpers and such,
29
+ # which in turn Configures coverband making it impossible to test the configuration error
30
+ def setup_server
31
+ ENV["RAILS_ENV"] = "test"
32
+ require "rails"
33
+ fork do
34
+ exec "cd test/rails#{Rails::VERSION::MAJOR}_dummy && COVERBAND_TEST=test bundle exec rackup config.ru -p 9999 --pid /tmp/testrack.pid"
35
+ end
36
+ end
37
+
38
+ def shutdown_server
39
+ if File.exist?("/tmp/testrack.pid")
40
+ pid = `cat /tmp/testrack.pid`&.strip&.to_i
41
+ Process.kill("HUP", pid)
42
+ sleep 1
43
+ end
44
+ end
45
+ end
@@ -17,7 +17,7 @@ class RailsWithoutConfigStackTest < Minitest::Test
17
17
  output = `sleep 7 && curl http://localhost:9999/dummy_view/show`
18
18
  assert output.match(/rendered view/)
19
19
  assert output.match(/I am no dummy view tracker text/)
20
- output = `sleep 1 && curl http://localhost:9999/coverage/view_tracker`
20
+ output = `sleep 2 && curl http://localhost:9999/coverage/view_tracker`
21
21
  assert output.match(/Used Views: \(1\)/)
22
22
  assert output.match(/dummy_view\/show/)
23
23
  end
@@ -10,8 +10,7 @@ Coverband.configure do |config|
10
10
  config.logger = Rails.logger
11
11
  config.verbose = true
12
12
  config.background_reporting_enabled = true
13
- config.track_gems = true
14
- config.gem_details = true
13
+ config.track_routes = true
15
14
  config.use_oneshot_lines_coverage = true if ENV["ONESHOT"]
16
15
  config.simulate_oneshot_lines_coverage = true if ENV["SIMULATE_ONESHOT"]
17
16
  end
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative "config/application"
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,5 @@
1
+ class DummyController < ActionController::Base
2
+ def show
3
+ render plain: "I am no dummy"
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ class DummyViewController < ActionController::Base
2
+ def show
3
+ @text = "I am no dummy view tracker text"
4
+ render layout: false
5
+ end
6
+
7
+ def show_haml
8
+ @text = "I am haml text"
9
+ render layout: false
10
+ end
11
+
12
+ def show_slim
13
+ @text = "I am slim text"
14
+ render layout: false
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ rendered view
2
+
3
+ <div>
4
+ <%= @text %>
5
+ </div>
@@ -0,0 +1,4 @@
1
+ rendered haml view
2
+
3
+ #foo
4
+ = @text
@@ -0,0 +1,4 @@
1
+ rendered slim view
2
+
3
+ #content
4
+ = @text
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("boot", __dir__)
4
+
5
+ require "rails"
6
+ require "action_controller/railtie"
7
+ require "coverband"
8
+ Bundler.require(*Rails.groups)
9
+
10
+ module Rails6Dummy
11
+ class Application < Rails::Application
12
+ config.eager_load = true
13
+ config.consider_all_requests_local = true
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
2
+
3
+ require "bundler/setup" # Set up gems listed in the Gemfile.
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../rails5_dummy/config/coverband"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../rails5_dummy/config/coverband_missing_redis"
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require File.expand_path("../application", __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
@@ -0,0 +1,7 @@
1
+ Rails.application.routes.draw do
2
+ get "dummy/show"
3
+ get "dummy_view/show", to: "dummy_view#show"
4
+ get "dummy_view/show_haml", to: "dummy_view#show_haml"
5
+ get "dummy_view/show_slim", to: "dummy_view#show_slim"
6
+ mount Coverband::Reporters::Web.new, at: "/coverage"
7
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ secret_key_base: 8080f2894307a3dcf72127c0a279a729c58c7c10c11a15de761c8e16017e0e478647d1a7ac11bf143730cac7b6901fa000428c6b4873d9298250f8ca4657b5c6
3
+
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path("../config/environment", __FILE__)
4
+ run Rails.application
File without changes
data/test/test_helper.rb CHANGED
@@ -1,11 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bigdecimal"
4
+
3
5
  original_verbosity = $VERBOSE
4
6
  $VERBOSE = nil
7
+
8
+ if ENV["SKIP_SIMPLECOV"] || BigDecimal(RUBY_VERSION[0, 3]) >= BigDecimal("3.1")
9
+ $SKIP_SIMPLECOV = true
10
+ end
11
+
5
12
  require "rubygems"
6
- require "pry-byebug" unless ENV["CI"]
7
- require "simplecov"
8
- require "coveralls"
13
+
14
+ unless $SKIP_SIMPLECOV
15
+ require "simplecov"
16
+ require "coveralls"
17
+ end
18
+
9
19
  require "minitest/autorun"
10
20
  require "minitest/stub_const"
11
21
  require "mocha/minitest"
@@ -25,11 +35,10 @@ require "coverband/utils/results"
25
35
  require "coverband/reporters/html_report"
26
36
  require "webmock/minitest"
27
37
 
28
- # require 'pry-byebug' unless ENV['CI'] # Ruby 2.3 on CI crashes on pry & JRuby doesn't support it
29
38
  require_relative "unique_files"
30
39
  $VERBOSE = original_verbosity
31
40
 
32
- unless ENV["ONESHOT"] || ENV["SIMULATE_ONESHOT"]
41
+ unless ENV["ONESHOT"] || ENV["SIMULATE_ONESHOT"] || $SKIP_SIMPLECOV
33
42
  SimpleCov.formatter = Coveralls::SimpleCov::Formatter
34
43
  SimpleCov.start do
35
44
  add_filter "test/forked"
data/views/nav.erb CHANGED
@@ -25,12 +25,17 @@
25
25
  </ul>
26
26
 
27
27
  <ul class="extra_tabs">
28
- <% if nav_options[:show_coverage_link] %>
28
+ <% if nav_options[:active_link] %>
29
29
  <li><a href='<%= base_path %>'>Coverage</a></li>
30
30
  <% end %>
31
31
  <% if Coverband.configuration.track_views %>
32
- <li class='<%= nav_options[:show_coverage_link] ? 'active' : '' %>'>
32
+ <li class='<%= nav_options[:active_link] == 'view_tracker' ? 'active' : '' %>'>
33
33
  <a href='<%= base_path %>view_tracker'>Views Tracker</a>
34
34
  </li>
35
35
  <% end %>
36
+ <% if Coverband.configuration.track_routes %>
37
+ <li class='<%= nav_options[:active_link] == 'route_tracker' ? 'active' : '' %>'>
38
+ <a href='<%= base_path %>route_tracker'>Route Tracker</a>
39
+ </li>
40
+ <% end %>
36
41
  </ul>
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Coverband Info: <%= Coverband::VERSION %></title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='<%= assets_path('dependencies.js') %>' type='text/javascript'></script>
7
+ <script src='<%= assets_path('application.js') %>' type='text/javascript'></script>
8
+ <link href='<%= assets_path('application.css') %>' media='screen, projection, print' rel='stylesheet' type='text/css'>
9
+ <link rel="icon" type="image/png" href="<%= assets_path('favicon.png') %>" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="wrapper" style="">
14
+ <%= display_nav(active_link: 'route_tracker') %>
15
+ <div id="content">
16
+ <% tracker = Coverband::Collectors::RouteTracker.new(store: Coverband.configuration.store) %>
17
+ <h4>
18
+ <% if Coverband.configuration.web_enable_clear %>
19
+ <%= button("#{base_path}clear_route_tracking", 'reset route tracker', delete: true) %>
20
+ <% end %>
21
+ </h4>
22
+ <h2>Unused Routes: (<%= tracker.unused_routes.length %>)</h2>
23
+ <p>These routes have not been rendered since recording started at <%= tracker.tracking_since %></p>
24
+ <ul>
25
+ <% tracker.unused_routes.each do |route| %>
26
+ <li class="unused-routes"><%= route %></li>
27
+ <% end %>
28
+ </ul>
29
+
30
+ <h2>Used Routes: (<%= tracker.used_routes.length %>)</h2>
31
+ <p>These routes have been rendered at least once</p>
32
+ <ul>
33
+ <% tracker.used_routes.each_pair do |route, time_at| %>
34
+ <li class="used-routes">
35
+ <%= route %>
36
+ <span class="last_seen_at">last activity recorded <%= Time.at(time_at.to_i)%></span>
37
+ <% if Coverband.configuration.web_enable_clear %>
38
+ <%= button("#{base_path}clear_route_tracking_route?route=#{route}", 'reset tracked route', delete: true) %>
39
+ <% end %>
40
+ </li>
41
+ <% end %>
42
+ </ul>
43
+ </div>
44
+ <div id="footer">
45
+ Generated by <a href="http://github.com/danmayer/coverband">Coverband</a> v<%= Coverband::VERSION %>
46
+ </div>
47
+ </div>
48
+ </body>
49
+ </html>
@@ -11,7 +11,7 @@
11
11
 
12
12
  <body>
13
13
  <div id="wrapper" style="">
14
- <%= display_nav(show_coverage_link: true) %>
14
+ <%= display_nav(active_link: 'view_tracker') %>
15
15
  <div id="content">
16
16
  <% tracker = Coverband::Collectors::ViewTracker.new(store: Coverband.configuration.store) %>
17
17
  <h4>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coverband
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.3
4
+ version: 5.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Mayer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-04-05 00:00:00.000000000 Z
12
+ date: 2022-12-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: benchmark-ips
@@ -280,8 +280,7 @@ files:
280
280
  - CODE_OF_CONDUCT.md
281
281
  - CONTRIBUTING.md
282
282
  - Gemfile
283
- - Gemfile.rails4
284
- - Gemfile.rails6
283
+ - Gemfile.rails7
285
284
  - LICENSE
286
285
  - LICENSE.txt
287
286
  - README.md
@@ -302,6 +301,7 @@ files:
302
301
  - lib/coverband/at_exit.rb
303
302
  - lib/coverband/collectors/coverage.rb
304
303
  - lib/coverband/collectors/delta.rb
304
+ - lib/coverband/collectors/route_tracker.rb
305
305
  - lib/coverband/collectors/view_tracker.rb
306
306
  - lib/coverband/collectors/view_tracker_service.rb
307
307
  - lib/coverband/configuration.rb
@@ -315,6 +315,7 @@ files:
315
315
  - lib/coverband/reporters/html_report.rb
316
316
  - lib/coverband/reporters/web.rb
317
317
  - lib/coverband/utils/absolute_file_converter.rb
318
+ - lib/coverband/utils/configuration_template.rb
318
319
  - lib/coverband/utils/dead_methods.rb
319
320
  - lib/coverband/utils/file_hasher.rb
320
321
  - lib/coverband/utils/file_list.rb
@@ -322,6 +323,7 @@ files:
322
323
  - lib/coverband/utils/jruby_ext.rb
323
324
  - lib/coverband/utils/lines_classifier.rb
324
325
  - lib/coverband/utils/method_definition_scanner.rb
326
+ - lib/coverband/utils/rails6_ext.rb
325
327
  - lib/coverband/utils/railtie.rb
326
328
  - lib/coverband/utils/relative_file_converter.rb
327
329
  - lib/coverband/utils/result.rb
@@ -378,6 +380,7 @@ files:
378
380
  - test/coverband/at_exit_test.rb
379
381
  - test/coverband/collectors/coverage_test.rb
380
382
  - test/coverband/collectors/delta_test.rb
383
+ - test/coverband/collectors/route_tracker_test.rb
381
384
  - test/coverband/collectors/view_tracker_test.rb
382
385
  - test/coverband/configuration_test.rb
383
386
  - test/coverband/coverband_test.rb
@@ -417,6 +420,7 @@ files:
417
420
  - test/forked/rails_full_stack_test.rb
418
421
  - test/forked/rails_full_stack_views_test.rb
419
422
  - test/forked/rails_rake_full_stack_test.rb
423
+ - test/forked/rails_route_tracker_stack_test.rb
420
424
  - test/forked/rails_view_tracker_stack_test.rb
421
425
  - test/integration/full_stack_deferred_eager_test.rb
422
426
  - test/integration/full_stack_test.rb
@@ -464,6 +468,21 @@ files:
464
468
  - test/rails6_dummy/config/routes.rb
465
469
  - test/rails6_dummy/config/secrets.yml
466
470
  - test/rails6_dummy/tmp/.keep
471
+ - test/rails7_dummy/Rakefile
472
+ - test/rails7_dummy/app/controllers/dummy_controller.rb
473
+ - test/rails7_dummy/app/controllers/dummy_view_controller.rb
474
+ - test/rails7_dummy/app/views/dummy_view/show.html.erb
475
+ - test/rails7_dummy/app/views/dummy_view/show_haml.html.haml
476
+ - test/rails7_dummy/app/views/dummy_view/show_slim.html.slim
477
+ - test/rails7_dummy/config.ru
478
+ - test/rails7_dummy/config/application.rb
479
+ - test/rails7_dummy/config/boot.rb
480
+ - test/rails7_dummy/config/coverband.rb
481
+ - test/rails7_dummy/config/coverband_missing_redis.rb
482
+ - test/rails7_dummy/config/environment.rb
483
+ - test/rails7_dummy/config/routes.rb
484
+ - test/rails7_dummy/config/secrets.yml
485
+ - test/rails7_dummy/tmp/.keep
467
486
  - test/rails_test_helper.rb
468
487
  - test/test_helper.rb
469
488
  - test/unique_files.rb
@@ -471,6 +490,7 @@ files:
471
490
  - views/file_list.erb
472
491
  - views/layout.erb
473
492
  - views/nav.erb
493
+ - views/route_tracker.erb
474
494
  - views/settings.erb
475
495
  - views/source_file.erb
476
496
  - views/source_file_loader.erb
@@ -499,7 +519,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
499
519
  - !ruby/object:Gem::Version
500
520
  version: '0'
501
521
  requirements: []
502
- rubygems_version: 3.0.3
522
+ rubygems_version: 3.2.32
503
523
  signing_key:
504
524
  specification_version: 4
505
525
  summary: Rack middleware to measure production code usage (LOC runtime usage)
@@ -520,6 +540,7 @@ test_files:
520
540
  - test/coverband/at_exit_test.rb
521
541
  - test/coverband/collectors/coverage_test.rb
522
542
  - test/coverband/collectors/delta_test.rb
543
+ - test/coverband/collectors/route_tracker_test.rb
523
544
  - test/coverband/collectors/view_tracker_test.rb
524
545
  - test/coverband/configuration_test.rb
525
546
  - test/coverband/coverband_test.rb
@@ -559,6 +580,7 @@ test_files:
559
580
  - test/forked/rails_full_stack_test.rb
560
581
  - test/forked/rails_full_stack_views_test.rb
561
582
  - test/forked/rails_rake_full_stack_test.rb
583
+ - test/forked/rails_route_tracker_stack_test.rb
562
584
  - test/forked/rails_view_tracker_stack_test.rb
563
585
  - test/integration/full_stack_deferred_eager_test.rb
564
586
  - test/integration/full_stack_test.rb
@@ -606,6 +628,21 @@ test_files:
606
628
  - test/rails6_dummy/config/routes.rb
607
629
  - test/rails6_dummy/config/secrets.yml
608
630
  - test/rails6_dummy/tmp/.keep
631
+ - test/rails7_dummy/Rakefile
632
+ - test/rails7_dummy/app/controllers/dummy_controller.rb
633
+ - test/rails7_dummy/app/controllers/dummy_view_controller.rb
634
+ - test/rails7_dummy/app/views/dummy_view/show.html.erb
635
+ - test/rails7_dummy/app/views/dummy_view/show_haml.html.haml
636
+ - test/rails7_dummy/app/views/dummy_view/show_slim.html.slim
637
+ - test/rails7_dummy/config.ru
638
+ - test/rails7_dummy/config/application.rb
639
+ - test/rails7_dummy/config/boot.rb
640
+ - test/rails7_dummy/config/coverband.rb
641
+ - test/rails7_dummy/config/coverband_missing_redis.rb
642
+ - test/rails7_dummy/config/environment.rb
643
+ - test/rails7_dummy/config/routes.rb
644
+ - test/rails7_dummy/config/secrets.yml
645
+ - test/rails7_dummy/tmp/.keep
609
646
  - test/rails_test_helper.rb
610
647
  - test/test_helper.rb
611
648
  - test/unique_files.rb
data/Gemfile.rails6 DELETED
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in coverband.gemspec
6
- gemspec
7
- gem 'rails', '~>6'
8
- gem "haml"
9
- gem "slim"