coverband 4.2.3 → 4.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -6
  3. data/.travis.yml +6 -0
  4. data/README.md +40 -20
  5. data/changes.md +16 -9
  6. data/coverband.gemspec +1 -0
  7. data/lib/coverband/adapters/base.rb +1 -1
  8. data/lib/coverband/adapters/hash_redis_store.rb +49 -42
  9. data/lib/coverband/adapters/redis_store.rb +4 -2
  10. data/lib/coverband/collectors/coverage.rb +1 -1
  11. data/lib/coverband/collectors/view_tracker.rb +14 -5
  12. data/lib/coverband/configuration.rb +18 -5
  13. data/lib/coverband/integrations/background.rb +3 -0
  14. data/lib/coverband/reporters/html_report.rb +10 -0
  15. data/lib/coverband/reporters/web.rb +16 -0
  16. data/lib/coverband/utils/html_formatter.rb +8 -0
  17. data/lib/coverband/utils/railtie.rb +16 -9
  18. data/lib/coverband/utils/s3_report.rb +0 -1
  19. data/lib/coverband/version.rb +1 -1
  20. data/lib/coverband.rb +12 -7
  21. data/lua/install.sh +15 -0
  22. data/lua/lib/persist-coverage.lua +28 -0
  23. data/lua/test/bootstrap.lua +5 -0
  24. data/lua/test/harness.lua +19 -0
  25. data/lua/test/redis-call.lua +55 -0
  26. data/lua/test/test-persist-coverage.lua +132 -0
  27. data/test/coverband/adapters/hash_redis_store_test.rb +4 -3
  28. data/test/coverband/adapters/redis_store_test.rb +10 -5
  29. data/test/coverband/collectors/coverage_test.rb +10 -4
  30. data/test/coverband/collectors/view_tracker_test.rb +38 -18
  31. data/test/coverband/configuration_test.rb +10 -10
  32. data/test/coverband/integrations/background_test.rb +10 -0
  33. data/test/coverband/integrations/resque_worker_test.rb +0 -1
  34. data/test/coverband/reporters/base_test.rb +6 -5
  35. data/test/coverband/reporters/console_test.rb +2 -5
  36. data/test/coverband/reporters/html_test.rb +1 -3
  37. data/test/coverband/utils/html_formatter_test.rb +1 -3
  38. data/test/forked/rails_rake_full_stack_test.rb +10 -0
  39. data/test/integration/full_stack_test.rb +1 -3
  40. data/test/rails4_dummy/config/coverband.rb +3 -13
  41. data/test/rails4_dummy/config/coverband_missing_redis.rb +3 -0
  42. data/test/rails5_dummy/config/coverband.rb +4 -2
  43. data/test/rails5_dummy/config/coverband_missing_redis.rb +15 -0
  44. data/test/test_helper.rb +8 -4
  45. data/views/data.erb +1 -0
  46. data/views/nav.erb +1 -0
  47. data/views/view_tracker.erb +5 -2
  48. metadata +27 -2
@@ -3,6 +3,10 @@
3
3
  require File.expand_path('../../test_helper', File.dirname(__FILE__))
4
4
 
5
5
  class ReportsBaseTest < Minitest::Test
6
+ def setup
7
+ super
8
+ end
9
+
6
10
  test '#merge_arrays basic merge preserves order and counts' do
7
11
  first = [0, 0, 1, 0, 1]
8
12
  second = [nil, 0, 1, 0, 0]
@@ -28,14 +32,9 @@ class ReportsBaseTest < Minitest::Test
28
32
  end
29
33
 
30
34
  test "#get_current_scov_data_imp doesn't ignore folders with default ignore keys" do
31
- @redis = Redis.new
32
- store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
33
- store.clear!
34
-
35
35
  Coverband.configure do |config|
36
36
  config.reporter = 'std_out'
37
37
  config.root = '/full/remote_app/path'
38
- config.store = store
39
38
  end
40
39
 
41
40
  key = '/a_path/that_has_erb_in/thepath.rb'
@@ -55,6 +54,7 @@ class ReportsBaseTest < Minitest::Test
55
54
  # rubocop:disable all
56
55
  ###
57
56
  test '#get_current_scov_data_imp merges multiples of file data' do
57
+ skip "@danmayer to take a closer look at this one"
58
58
  coverage = {'/base/66/app/controllers/dashboard_controller.rb' =>
59
59
  {"first_updated_at"=>1549610119,
60
60
  "last_updated_at"=>1549610200,
@@ -88,4 +88,5 @@ class ReportsBaseTest < Minitest::Test
88
88
  "data"=>[38, 38, 38, nil, 38, 38, nil, nil, 38, nil, 38, 80, 80, nil, 80, 80, 80, 80, 80, 80, 80, nil, nil, 38, nil, 38, 80, 55, 0, 0, 0, 0, nil, nil, nil, nil, 0, 0, nil, nil, 38, 80, 80, 80, nil, nil, nil, nil, nil, 38, 80, nil, nil, 38, 80, nil, nil]}
89
89
  assert_equal expected, Coverband::Reporters::Base.send(:get_current_scov_data_imp, store, roots)[:merged][key]
90
90
  end
91
+
91
92
  end
@@ -7,15 +7,12 @@ class HTMLReportTest < Minitest::Test
7
7
 
8
8
  def setup
9
9
  super
10
- @redis = Redis.new
11
- @store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
12
- @store.clear!
10
+ @store = Coverband.configuration.store
13
11
  end
14
12
 
15
13
  test 'report data' do
16
14
  Coverband.configure do |config|
17
- config.reporter = 'std_out'
18
- config.store = @store
15
+ config.reporter = 'std_out'
19
16
  end
20
17
  Coverband.configuration.logger.stubs('info')
21
18
  mock_file_hash
@@ -5,9 +5,7 @@ require File.expand_path('../../test_helper', File.dirname(__FILE__))
5
5
  class ReportHTMLTest < Minitest::Test
6
6
  def setup
7
7
  super
8
- @redis = Redis.new
9
- @store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
10
- @store.clear!
8
+ @store = Coverband.configuration.store
11
9
  Coverband.configure do |config|
12
10
  config.store = @store
13
11
  config.root = fixtures_root
@@ -5,9 +5,7 @@ require File.expand_path('../../test_helper', File.dirname(__FILE__))
5
5
  class HTMLFormatterTest < Minitest::Test
6
6
  def setup
7
7
  super
8
- @redis = Redis.new
9
- @store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
10
- @store.clear!
8
+ @store = Coverband::Adapters::RedisStore.new(Coverband::Test.redis, redis_namespace: 'coverband_test')
11
9
  end
12
10
 
13
11
  test 'generate dynamic content hosted html report' do
@@ -45,4 +45,14 @@ class RailsRakeFullStackTest < Minitest::Test
45
45
  assert_equal empty_hash, coverage_report[:eager_loading]
46
46
  assert_equal empty_hash, coverage_report[:merged]
47
47
  end
48
+
49
+ test "doesn't exit non-zero with error on missing redis" do
50
+ output = `COVERBAND_CONFIG=./test/rails#{Rails::VERSION::MAJOR}_dummy/config/coverband_missing_redis.rb bundle exec rake -f test/rails#{Rails::VERSION::MAJOR}_dummy/Rakefile -T`
51
+ assert_equal 0, $?.to_i
52
+ if ENV['COVERBAND_HASH_REDIS_STORE']
53
+ assert output.match(/Redis is not available/)
54
+ else
55
+ assert output.match(/coverage failed to store/)
56
+ end
57
+ end
48
58
  end
@@ -11,12 +11,10 @@ class FullStackTest < Minitest::Test
11
11
  super
12
12
  Coverband::Collectors::Coverage.instance.reset_instance
13
13
  Coverband.configure do |config|
14
- config.store = Coverband::Adapters::RedisStore.new(Redis.new, redis_namespace: 'coverband_test')
15
14
  config.s3_bucket = nil
16
- config.background_reporting_enabled = true
15
+ config.background_reporting_enabled = false
17
16
  config.track_gems = true
18
17
  end
19
- Coverband.configuration.store.clear!
20
18
  Coverband.start
21
19
  Coverband::Collectors::Coverage.instance.eager_loading!
22
20
  @rack_file = require_unique_file 'fake_app/basic_rack.rb'
@@ -1,13 +1,3 @@
1
- Coverband.configure do |config|
2
- config.root = Dir.pwd
3
- config.store = Coverband::Adapters::RedisStore.new(Redis.new(url: ENV['REDIS_URL']), redis_namespace: 'coverband_test') if defined? Redis
4
- config.ignore = %w[vendor .erb$ .slim$]
5
- config.root_paths = []
6
- config.logger = Rails.logger
7
- config.verbose = true
8
- config.background_reporting_enabled = true
9
- config.track_gems = true
10
- config.gem_details = true
11
- config.use_oneshot_lines_coverage = true if ENV['ONESHOT']
12
- config.simulate_oneshot_lines_coverage = true if ENV['SIMULATE_ONESHOT']
13
- end
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'
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Coverband.configure do |config|
2
4
  config.root = Dir.pwd
3
- config.store = Coverband::Adapters::RedisStore.new(Redis.new(url: ENV['REDIS_URL']), redis_namespace: 'coverband_test') if defined? Redis
4
- config.ignore = %w[vendor .erb$ .slim$]
5
+ config.store = Coverband::Adapters::RedisStore.new(Redis.new(db: 2, url: ENV['REDIS_URL']), redis_namespace: 'coverband_test') if defined? Redis
6
+ config.ignore = %w[.erb$ .slim$]
5
7
  config.root_paths = []
6
8
  config.logger = Rails.logger
7
9
  config.verbose = true
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ Coverband.configure do |config|
4
+ config.root = Dir.pwd
5
+ config.store = Coverband::Adapters::RedisStore.new(Redis.new(db: 2, url: 'redis://127.0.0.1:123'), redis_namespace: 'coverband_test') if defined? Redis
6
+ config.ignore = %w[vendor .erb$ .slim$]
7
+ config.root_paths = []
8
+ config.logger = Rails.logger
9
+ config.verbose = true
10
+ config.background_reporting_enabled = true
11
+ config.track_gems = true
12
+ config.gem_details = true
13
+ config.use_oneshot_lines_coverage = true if ENV['ONESHOT']
14
+ config.simulate_oneshot_lines_coverage = true if ENV['SIMULATE_ONESHOT']
15
+ end
data/test/test_helper.rb CHANGED
@@ -30,20 +30,24 @@ end
30
30
 
31
31
  module Coverband
32
32
  module Test
33
+ TEST_DB = 2
34
+
35
+ def self.redis
36
+ @redis ||= Redis.new(db: TEST_DB)
37
+ end
38
+
33
39
  def self.reset
34
40
  Coverband.configuration.redis_namespace = 'coverband_test'
35
41
  Coverband.configuration.store.instance_variable_set(:@redis_namespace, 'coverband_test')
36
42
  Coverband.configuration.store.class.class_variable_set(:@@path_cache, {})
37
- %i[eager_loading runtime].each do |type|
38
- Coverband.configuration.store.type = type
39
- Coverband.configuration.store.clear!
40
- end
41
43
  Coverband.configuration.reset
42
44
  Coverband::Collectors::Coverage.instance.reset_instance
43
45
  Coverband::Utils::RelativeFileConverter.reset
44
46
  Coverband::Utils::AbsoluteFileConverter.reset
45
47
  Coverband.configuration.redis_namespace = 'coverband_test'
46
48
  Coverband::Background.stop
49
+ Coverband.configuration.store.instance_variable_set(:@redis, redis)
50
+ redis.flushdb
47
51
  end
48
52
 
49
53
  def setup
data/views/data.erb ADDED
@@ -0,0 +1 @@
1
+ <%= result.source_files.to_json %>
data/views/nav.erb CHANGED
@@ -7,6 +7,7 @@
7
7
  <% end %>
8
8
  <% if Coverband.configuration.web_debug %>
9
9
  <a href='<%= base_path %>debug_data'>Debug Data</a> &nbsp;
10
+ <a href='<%= base_path %>enriched_debug_data'>Coverage Data</a> &nbsp;
10
11
  <% end %>
11
12
  </div>
12
13
  <% if notice.to_s.length > 0 %>
@@ -14,11 +14,14 @@
14
14
  <%= display_nav(show_coverage_link: true) %>
15
15
  <div id="content">
16
16
  <% tracker = Coverband::Collectors::ViewTracker.new(store: Coverband.configuration.store) %>
17
- <h3>
17
+ <h4>
18
18
  <% if Coverband.configuration.web_enable_clear %>
19
19
  <%= button("#{base_path}clear_view_tracking", 'reset view tracker', delete: true) %>
20
20
  <% end %>
21
- </h3>
21
+ <% if Coverband.configuration.web_debug %>
22
+ <a href='<%= "#{base_path}view_tracker_data" %>'>view tracker data</a>
23
+ <% end %>
24
+ </h4>
22
25
  <h2>Unused Views: (<%= tracker.unused_views.length %>)</h2>
23
26
  <p>These views have not been rendered since recording started at <%= tracker.tracking_since %></p>
24
27
  <ul>
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: 4.2.3
4
+ version: 4.2.4
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: 2019-09-28 00:00:00.000000000 Z
12
+ date: 2019-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk-s3
@@ -193,6 +193,20 @@ dependencies:
193
193
  - - ">="
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: rubocop-performance
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
196
210
  - !ruby/object:Gem::Dependency
197
211
  name: coveralls
198
212
  requirement: !ruby/object:Gem::Requirement
@@ -304,6 +318,12 @@ files:
304
318
  - lib/coverband/utils/source_file.rb
305
319
  - lib/coverband/utils/tasks.rb
306
320
  - lib/coverband/version.rb
321
+ - lua/install.sh
322
+ - lua/lib/persist-coverage.lua
323
+ - lua/test/bootstrap.lua
324
+ - lua/test/harness.lua
325
+ - lua/test/redis-call.lua
326
+ - lua/test/test-persist-coverage.lua
307
327
  - public/application.css
308
328
  - public/application.js
309
329
  - public/colorbox/border.png
@@ -388,6 +408,7 @@ files:
388
408
  - test/rails4_dummy/config/application.rb
389
409
  - test/rails4_dummy/config/boot.rb
390
410
  - test/rails4_dummy/config/coverband.rb
411
+ - test/rails4_dummy/config/coverband_missing_redis.rb
391
412
  - test/rails4_dummy/config/environment.rb
392
413
  - test/rails4_dummy/config/routes.rb
393
414
  - test/rails4_dummy/config/secrets.yml
@@ -397,12 +418,14 @@ files:
397
418
  - test/rails5_dummy/config.ru
398
419
  - test/rails5_dummy/config/application.rb
399
420
  - test/rails5_dummy/config/coverband.rb
421
+ - test/rails5_dummy/config/coverband_missing_redis.rb
400
422
  - test/rails5_dummy/config/environment.rb
401
423
  - test/rails5_dummy/config/routes.rb
402
424
  - test/rails5_dummy/tmp/.keep
403
425
  - test/rails_test_helper.rb
404
426
  - test/test_helper.rb
405
427
  - test/unique_files.rb
428
+ - views/data.erb
406
429
  - views/file_list.erb
407
430
  - views/gem_list.erb
408
431
  - views/layout.erb
@@ -493,6 +516,7 @@ test_files:
493
516
  - test/rails4_dummy/config/application.rb
494
517
  - test/rails4_dummy/config/boot.rb
495
518
  - test/rails4_dummy/config/coverband.rb
519
+ - test/rails4_dummy/config/coverband_missing_redis.rb
496
520
  - test/rails4_dummy/config/environment.rb
497
521
  - test/rails4_dummy/config/routes.rb
498
522
  - test/rails4_dummy/config/secrets.yml
@@ -502,6 +526,7 @@ test_files:
502
526
  - test/rails5_dummy/config.ru
503
527
  - test/rails5_dummy/config/application.rb
504
528
  - test/rails5_dummy/config/coverband.rb
529
+ - test/rails5_dummy/config/coverband_missing_redis.rb
505
530
  - test/rails5_dummy/config/environment.rb
506
531
  - test/rails5_dummy/config/routes.rb
507
532
  - test/rails5_dummy/tmp/.keep