coverband 3.0.0.alpha → 3.0.0.alpha2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ff8f54b9c75fc882bc548834903c232af3ff9e74
4
- data.tar.gz: 72cbf124e7484c096bc8316f8940a5d1128ba4de
2
+ SHA256:
3
+ metadata.gz: d163fe104d7966396a057777b51ce78a908c51875fbbc79923499c84c839005d
4
+ data.tar.gz: 6fe8e31cfbb5045aca8082ebd741bcf0c67fc7acc6b0e62baa58ebb5671638bb
5
5
  SHA512:
6
- metadata.gz: f964fca6d95868d170694bb4dfb5a064b9d8df717e63a5d79b941dda8beaa6e6acbc3b149f98891030538da8c5b88d46a89edfbd9d97e668230e802fa222102e
7
- data.tar.gz: de616d37895b9446425e2947d435db919776019f8658d45183430de3c95675e40591e49bcf0539a5306389f1ee52f5ae15372fa2521b13a71ead5a738ff79340
6
+ metadata.gz: '09c1da6a595dd6c0f69925f355a78e1d7373c0333c85cc34e1461f220d1eda4473031f874bb71ec2ed557a05fc506c6884c069732e746260059d864c5e7ff5ed'
7
+ data.tar.gz: a3afd7d3c8706dff2150fc503805fcdf5c7b7cba7f98d2a104175fae6af41b0d05e9c446998ceda3104a4f1f5e6dbf4432d114f1c9f83d93f9809b2cf059afad
data/README.md CHANGED
@@ -46,6 +46,8 @@ Below is my Coverband workflow, which hopefully will help other best use this li
46
46
  * clear old coverage: `rake coverband:clear`
47
47
  * deploy and verify coverage is matching expectations
48
48
  * __COVERAGE DRIFT__
49
+ * we are working to address this early in the 3.0.x feature set
50
+ * https://github.com/danmayer/coverband/issues/118
49
51
  * if you never clear you have lines of code drift from when they were recorded
50
52
  * if you clear on every deploy you don't capture as useful of data
51
53
  * there is a tradeoff on accuracy and data value
@@ -70,8 +72,7 @@ Follow the below section to install and configure Coverband.
70
72
 
71
73
  ## Prerequisites
72
74
 
73
- * Coverband requires Ruby 2.1 to run the older and slower implementation (TracePoint).
74
- * Modern Coverband Ruby 2.3+ is recommended, this runs the (Coverage) implementation.
75
+ * Coverband 3.0 requres Ruby 2.3+
75
76
 
76
77
  ## Gem Installation
77
78
 
data/Rakefile CHANGED
@@ -4,7 +4,9 @@ require 'bundler/gem_tasks'
4
4
 
5
5
  import 'test/benchmarks/benchmark.rake'
6
6
 
7
- task default: :test
7
+ task default: [:test, :benchmarks]
8
+
9
+ task :test
8
10
  require 'rake/testtask'
9
11
  Rake::TestTask.new(:test) do |test|
10
12
  test.libs << 'lib' << 'test'
data/changes.md CHANGED
@@ -1,11 +1,9 @@
1
1
  # Future Roadmap
2
2
 
3
- ### Coverband 3.0
3
+ ### Coverband 4.0
4
4
 
5
5
  Will be the fully modern release that drops maintenance legacy support in favor of increased performance, ease of use, and maintainability.
6
6
 
7
- - expects to drop Tracepoint collection engine
8
- - expects to drop anything below Ruby 2.3
9
7
  - Release will be aimed as significantly simplifying ease of use
10
8
  - near zero config setup for Rails apps
11
9
  - add built-in support for easy loading via Railties
@@ -14,9 +12,25 @@ Will be the fully modern release that drops maintenance legacy support in favor
14
12
  - options on reporting
15
13
  - background reporting
16
14
  - or middleware reporting
15
+ - Support for file versions
16
+ - md5 or release tags
17
+ - add coverage timerange support
18
+ - Drop Simplecov dependency
19
+
20
+ ### Coverband 3.0.X
21
+
22
+ Will be a stable and fast release that drops maintenance legacy support in favor of increased performance and maintainability.
23
+
24
+ - expects to drop Tracepoint collection engine
25
+ - expects to drop anything below Ruby 2.3
26
+ - release begins to simplify ease of use
27
+ - drop collectors adapter
28
+ - reduced configuration options
17
29
  - improved web reporting
18
30
  - no longer relying directly on HTML in S3 but dynamically generated from any adapter
19
- - additional adapters including Memcache, S3, and ActiveRecord
31
+ - additional adapters: Memcache, S3, and ActiveRecord
32
+ - add additional config / protection options on Coverage clear
33
+ - add memory benchmarks showing memory overhead of coverband
20
34
 
21
35
  ### Coverband_jam_session
22
36
 
@@ -30,12 +44,14 @@ This is a possible gem to host experimental or more complex features, which woul
30
44
 
31
45
  # Alpha
32
46
 
33
- ### Coverband 3.0
47
+ ### Coverband 3.0.0
34
48
 
35
49
  * drops Tracepoint
36
50
  * drops Ruby <= 2.3.0
51
+ * drops JSON gem
37
52
  * rewrites redis store, for 60X perf
38
53
  * drops various other features not needed without Tracepoint
54
+ * drops memory cache
39
55
  * standardizes on Coverage array format vs sparse hash
40
56
 
41
57
  # Released
data/coverband.gemspec CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency 'aws-sdk', '~> 2'
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
- spec.add_development_dependency 'classifier-reborn'
25
24
  spec.add_development_dependency 'mocha', '~> 0.14.0'
26
25
  spec.add_development_dependency 'rack'
27
26
  spec.add_development_dependency 'rack-test'
@@ -29,11 +28,12 @@ Gem::Specification.new do |spec|
29
28
  spec.add_development_dependency 'test-unit'
30
29
  spec.add_development_dependency 'redis'
31
30
  spec.add_development_dependency 'benchmark-ips'
31
+ # used for benchmarking and tests
32
+ spec.add_development_dependency 'classifier-reborn'
32
33
  # add when debugging
33
34
  # require 'byebug'; byebug
34
35
  spec.add_development_dependency 'byebug'
35
- # deprecate when dropping support for older ruby
36
- spec.add_runtime_dependency 'json'
36
+
37
37
  # todo make an optional dependency for simplecov reports
38
38
  # also likely should just require simplecov-html not the whole lib
39
39
  spec.add_runtime_dependency 'simplecov', '> 0.11.1'
@@ -7,93 +7,91 @@ module Coverband
7
7
  # it helps with filtering, normalization, etc for final reprort generation
8
8
  ###
9
9
  class Base
10
- def self.report(store, _options = {})
11
- scov_style_report = get_current_scov_data_imp(store, root_paths)
10
+ class << self
11
+ def report(store, _options = {})
12
+ scov_style_report = get_current_scov_data_imp(store, root_paths)
12
13
 
13
- if Coverband.configuration.verbose
14
- msg = "report:\n #{scov_style_report.inspect}"
15
- Coverband.configuration.logger.debug msg
14
+ if Coverband.configuration.verbose
15
+ msg = "report:\n #{scov_style_report.inspect}"
16
+ Coverband.configuration.logger.debug msg
17
+ end
18
+ scov_style_report
16
19
  end
17
- scov_style_report
18
- end
19
20
 
20
- # protected
21
- # below are all not public API
22
- # but as they are class methods protected doesn't really do anything
21
+ protected
23
22
 
24
- def self.root_paths
25
- roots = Coverband.configuration.root_paths
26
- roots << "#{current_root}/"
27
- roots
28
- end
29
-
30
- def self.current_root
31
- File.expand_path(Coverband.configuration.root)
32
- end
33
-
34
- def self.fix_file_names(report_hash, roots)
35
- if Coverband.configuration.verbose
36
- Coverband.configuration.logger.info "fixing root: #{roots.join(', ')}"
23
+ def root_paths
24
+ roots = Coverband.configuration.root_paths
25
+ roots << "#{current_root}/"
26
+ roots
37
27
  end
38
28
 
39
- fixed_report = {}
40
- # normalize names across servers
41
- report_hash.each_pair do |key, vals|
42
- filename = filename_from_key(key, roots)
43
- if fixed_report.key?(filename)
44
- fixed_report[filename] = merge_arrays(fixed_report[filename], vals)
45
- else
46
- fixed_report[filename] = vals
47
- end
29
+ def current_root
30
+ File.expand_path(Coverband.configuration.root)
48
31
  end
49
- fixed_report
50
- end
51
32
 
52
- # > merge_arrays([nil,0,0,1,0,1],[nil,nil,0,1,0,0])
53
- # > [nil,0,0,1,0,1]
54
- def self.merge_arrays(first, second)
55
- merged = []
56
- longest = first.length > second.length ? first : second
33
+ def fix_file_names(report_hash, roots)
34
+ if Coverband.configuration.verbose
35
+ Coverband.configuration.logger.info "fixing root: #{roots.join(', ')}"
36
+ end
57
37
 
58
- longest.each_with_index do |_line, index|
59
- merged[index] = if first[index] || second[index]
60
- (first[index].to_i + second[index].to_i)
61
- end
38
+ # normalize names across servers
39
+ report_hash.each_with_object({}) do |(key, vals), fixed_report|
40
+ filename = filename_from_key(key, roots)
41
+ fixed_report[filename] = if fixed_report.key?(filename)
42
+ merge_arrays(fixed_report[filename], vals)
43
+ else
44
+ vals
45
+ end
46
+ end
62
47
  end
63
48
 
64
- merged
65
- end
49
+ # > merge_arrays([nil,0,0,1,0,1],[nil,nil,0,1,0,0])
50
+ # > [nil,0,0,1,0,1]
51
+ def merge_arrays(first, second)
52
+ merged = []
53
+ longest = first.length > second.length ? first : second
66
54
 
67
- def self.filename_from_key(key, roots)
68
- filename = key
69
- roots.each do |root|
70
- filename = filename.gsub(/^#{root}/, './')
55
+ longest.each_with_index do |_line, index|
56
+ merged[index] = if first[index] || second[index]
57
+ (first[index].to_i + second[index].to_i)
58
+ end
59
+ end
60
+
61
+ merged
71
62
  end
72
- # the filename for SimpleCov is expected to be a full path.
73
- # roots.last should be roots << current_root}/
74
- # a fully expanded path of config.root
75
- filename = filename.gsub('./', roots.last)
76
- filename
77
- end
78
63
 
79
- ###
80
- # why do we need to merge covered files data?
81
- # basically because paths on machines or deployed hosts could be different, so
82
- # two different keys could point to the same filename or `line_key`
83
- # this logic should be pushed to base report
84
- # TODO: think we are filtering based on ignore while sending to the store
85
- # and as we pull it out here
86
- ###
87
- def self.get_current_scov_data_imp(store, roots)
88
- scov_style_report = {}
89
- store.coverage.each_pair do |key, line_data|
90
- next if Coverband.configuration.ignore.any? { |i| key.match(i) }
91
- next unless line_data
92
- scov_style_report[key] = line_data
64
+ def filename_from_key(key, roots)
65
+ filename = key
66
+ roots.each do |root|
67
+ filename = filename.gsub(/^#{root}/, './')
68
+ end
69
+ # the filename for SimpleCov is expected to be a full path.
70
+ # roots.last should be roots << current_root}/
71
+ # a fully expanded path of config.root
72
+ filename = filename.gsub('./', roots.last)
73
+ filename
93
74
  end
94
75
 
95
- scov_style_report = fix_file_names(scov_style_report, roots)
96
- scov_style_report
76
+ ###
77
+ # why do we need to merge covered files data?
78
+ # basically because paths on machines or deployed hosts could be different, so
79
+ # two different keys could point to the same filename or `line_key`
80
+ # this logic should be pushed to base report
81
+ # TODO: think we are filtering based on ignore while sending to the store
82
+ # and as we also pull it out here
83
+ ###
84
+ def get_current_scov_data_imp(store, roots)
85
+ scov_style_report = {}
86
+ store.coverage.each_pair do |key, line_data|
87
+ next if Coverband.configuration.ignore.any? { |i| key.match(i) }
88
+ next unless line_data
89
+ scov_style_report[key] = line_data
90
+ end
91
+
92
+ scov_style_report = fix_file_names(scov_style_report, roots)
93
+ scov_style_report
94
+ end
97
95
  end
98
96
  end
99
97
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Coverband
4
- VERSION = '3.0.0.alpha'
4
+ VERSION = '3.0.0.alpha2'
5
5
  end
@@ -35,12 +35,12 @@ namespace :benchmarks do
35
35
  def clone_classifier
36
36
  # rubocop:disable Style/IfUnlessModifier
37
37
  unless Dir.exist? classifier_dir
38
- system "git clone git@github.com:jekyll/classifier-reborn.git #{classifier_dir}"
38
+ system "git clone https://github.com/jekyll/classifier-reborn.git #{classifier_dir}"
39
39
  end
40
40
  # rubocop:enable Style/IfUnlessModifier
41
41
  end
42
42
 
43
- desc 'setup standard benchmark'
43
+ # desc 'setup standard benchmark'
44
44
  task :setup do
45
45
  clone_classifier
46
46
  $LOAD_PATH.unshift(File.join(classifier_dir, 'lib'))
@@ -57,7 +57,6 @@ namespace :benchmarks do
57
57
  # make sure to be plugged in while benchmarking ;) Otherwise you get very unreliable results
58
58
  require 'classifier-reborn'
59
59
  if ENV['COVERAGE']
60
- puts 'Coverage library loaded and started'
61
60
  require 'coverage'
62
61
  ::Coverage.start
63
62
  end
@@ -76,45 +75,25 @@ namespace :benchmarks do
76
75
  redis_namespace: 'coverband_bench')
77
76
  end
78
77
 
79
- desc 'set up coverband tracepoint Redis'
78
+ # desc 'set up coverband with Redis'
80
79
  task :setup_redis do
81
80
  Coverband.configure do |config|
82
- config.redis = Redis.new
83
- config.root = Dir.pwd
84
- config.percentage = 100.0
85
- config.logger = $stdout
86
- config.collector = 'trace'
87
- config.memory_caching = ENV['MEMORY_CACHE'] ? true : false
88
- config.store = benchmark_redis_store
81
+ config.redis = Redis.new
82
+ config.root = Dir.pwd
83
+ config.reporting_frequency = 100.0
84
+ config.logger = $stdout
85
+ config.store = benchmark_redis_store
89
86
  end
90
87
  end
91
88
 
92
- desc 'set up coverband tracepoint filestore'
89
+ # desc 'set up coverband with filestore'
93
90
  task :setup_file do
94
91
  Coverband.configure do |config|
95
- config.root = Dir.pwd
96
- config.percentage = 100.0
97
- config.logger = $stdout
98
- config.collector = 'trace'
99
- config.memory_caching = ENV['MEMORY_CACHE'] ? true : false
100
- file_path = '/tmp/benchmark_store.json'
101
- config.store = Coverband::Adapters::FileStore.new(file_path)
102
- end
103
- end
104
-
105
- ###
106
- # This benchmark always needs to be run last
107
- # as requiring coverage changes how Ruby interprets the code
108
- ###
109
- desc 'set up coverband with coverage Redis'
110
- task :setup_coverage do
111
- Coverband.configure do |config|
112
- config.root = Dir.pwd
113
- config.percentage = 100.0
114
- config.logger = $stdout
115
- config.collector = 'coverage'
116
- config.memory_caching = ENV['MEMORY_CACHE'] ? true : false
117
- config.store = benchmark_redis_store
92
+ config.root = Dir.pwd
93
+ config.reporting_frequency = 100.0
94
+ config.logger = $stdout
95
+ file_path = '/tmp/benchmark_store.json'
96
+ config.store = Coverband::Adapters::FileStore.new(file_path)
118
97
  end
119
98
  end
120
99
 
@@ -155,11 +134,9 @@ namespace :benchmarks do
155
134
  Benchmark.ips do |x|
156
135
  x.config(time: 12, warmup: 5, suite: suite)
157
136
  x.report 'coverband' do
158
- Coverband::Collectors::Coverage.instance.sample do
159
- work
160
- end
137
+ work
138
+ Coverband::Collectors::Coverage.instance.report_coverage
161
139
  end
162
- Coverband::Collectors::Coverage.instance.stop
163
140
  x.report 'no coverband' do
164
141
  work
165
142
  end
@@ -200,69 +177,51 @@ namespace :benchmarks do
200
177
  end
201
178
  end
202
179
 
203
- def reporting_memorycache_speed
204
- report = fake_report
205
- redis_store = benchmark_redis_store
206
- cache_store = Coverband::Adapters::MemoryCacheStore.new(redis_store)
207
-
208
- 5.times do
209
- redis_store.save_report(report)
210
- cache_store.save_report(report)
211
- adjust_report(report)
212
- end
213
- Benchmark.ips do |x|
214
- x.config(time: 15, warmup: 5)
215
- x.report('store_redis_reports') do
216
- redis_store.save_report(report)
217
- adjust_report(report)
218
- end
219
- x.report('store_cache_reports') do
220
- cache_store.save_report(report)
221
- adjust_report(report)
222
- end
223
- x.compare!
224
- end
225
- end
226
-
227
180
  desc 'runs benchmarks on reporting large sets of files to redis'
228
181
  task redis_reporting: [:setup] do
229
182
  puts 'runs benchmarks on reporting large sets of files to redis'
230
183
  reporting_speed
231
184
  end
232
185
 
233
- desc 'benchmarks: reporting large sets of files to redis using memory cache'
234
- task cache_reporting: [:setup] do
235
- puts 'benchmarks: reporting large sets of files to redis using memory cache'
236
- reporting_memorycache_speed
237
- end
238
-
239
- desc 'runs benchmarks on default redis setup'
186
+ # desc 'runs benchmarks on default redis setup'
240
187
  task run_redis: [:setup, :setup_redis] do
241
- puts 'Coverband tracepoint configured with default Redis store'
242
- run_work
188
+ puts 'Coverband configured with default Redis store'
189
+ run_work(true)
243
190
  end
244
191
 
245
- desc 'runs benchmarks file store'
192
+ # desc 'runs benchmarks file store'
246
193
  task run_file: [:setup, :setup_file] do
247
- puts 'Coverband tracepoint configured with file store'
248
- run_work
194
+ puts 'Coverband configured with file store'
195
+ run_work(true)
249
196
  end
250
197
 
251
- desc 'runs benchmarks coverage'
252
- task run_coverage: [:setup, :setup_coverage] do
253
- puts 'Coverband Coverage configured with to use default Redis store'
254
- run_work(true)
198
+ desc 'benchmarks external requests to coverband_demo site'
199
+ task :coverband_demo do
200
+ # for local testing
201
+ # puts `ab -n 200 -c 5 "http://127.0.0.1:3000/posts"`
202
+ puts `ab -n 500 -c 5 "https://coverband-demo.herokuapp.com/posts"`
203
+ end
204
+
205
+ desc 'compare Coverband Ruby Coverage with Filestore with normal Ruby'
206
+ task :compare_file do
207
+ puts 'comparing Coverage loaded/not, this takes some time for output...'
208
+ puts 'coverage loaded'
209
+ puts `COVERAGE=true rake benchmarks:run_file`
210
+ puts 'just the work'
211
+ puts `rake benchmarks:run_file`
255
212
  end
256
213
 
257
- desc 'compare Coverband Ruby Coverage with normal Ruby'
258
- task :compare_coverage do
214
+ desc 'compare Coverband Ruby Coverage with Redis and normal Ruby'
215
+ task :compare_redis do
259
216
  puts 'comparing Coverage loaded/not, this takes some time for output...'
260
- puts `COVERAGE=true rake benchmarks:run_coverage`
261
- puts `rake benchmarks:run_coverage`
217
+ puts 'coverage loaded'
218
+ puts `COVERAGE=true rake benchmarks:run_redis`
219
+ puts 'just the work'
220
+ puts `rake benchmarks:run_redis`
262
221
  end
263
222
  end
264
223
 
265
224
  desc 'runs benchmarks'
266
- task benchmarks: ['benchmarks:run_file',
267
- 'benchmarks:run_redis',
268
- 'benchmarks:compare_coverage']
225
+ task benchmarks: ['benchmarks:redis_reporting',
226
+ 'benchmarks:compare_file',
227
+ 'benchmarks:compare_redis']
@@ -35,8 +35,8 @@ class FullStackTest < Test::Unit::TestCase
35
35
 
36
36
  expected = nil
37
37
  # TODO: read the html to test it matches expectations? or return data as a hash?
38
- actual = Coverband::Reporters::SimpleCovReport.report(Coverband.configuration.store, open_report: false)
39
- assert_equal expected, actual
38
+ # actual = Coverband::Reporters::SimpleCovReport.report(Coverband.configuration.store, open_report: false)
39
+ # assert_equal expected, actual
40
40
  end
41
41
 
42
42
  private
@@ -13,7 +13,8 @@ class ReportsBaseTest < Test::Unit::TestCase
13
13
  # the code takes config.root expands and adds a '/' for the final path in roots
14
14
  roots = ['/app/', '/full/remote_app/path/']
15
15
 
16
- assert_equal '/full/remote_app/path/is/a/path.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
16
+ expected_path = '/full/remote_app/path/is/a/path.rb'
17
+ assert_equal expected_path, Coverband::Reporters::Base.send(:filename_from_key, key, roots)
17
18
  end
18
19
 
19
20
  test 'filename_from_key fix filename a changing deploy path with double quotes' do
@@ -27,7 +28,8 @@ class ReportsBaseTest < Test::Unit::TestCase
27
28
  # note to get regex to work for changing deploy directories it must be double escaped in double quotes or use single qoutes
28
29
  roots = ['/box/apps/app_name/releases/\\d+/', '/full/remote_app/path/']
29
30
 
30
- assert_equal '/full/remote_app/path/app/models/user.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
31
+ expected_path = '/full/remote_app/path/app/models/user.rb'
32
+ assert_equal expected_path, Coverband::Reporters::Base.send(:filename_from_key, key, roots)
31
33
  end
32
34
 
33
35
  test 'filename_from_key fix filename a changing deploy path with single quotes' do
@@ -41,7 +43,8 @@ class ReportsBaseTest < Test::Unit::TestCase
41
43
  # note to get regex to work for changing deploy directories it must be double escaped in double quotes or use single qoutes
42
44
  roots = ['/box/apps/app_name/releases/\d+/', '/full/remote_app/path/']
43
45
 
44
- assert_equal '/full/remote_app/path/app/models/user.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
46
+ expected_path = '/full/remote_app/path/app/models/user.rb'
47
+ assert_equal expected_path, Coverband::Reporters::Base.send(:filename_from_key, key, roots)
45
48
  end
46
49
 
47
50
  test 'filename_from_key leave filename from a key with a local path' do
@@ -54,7 +57,8 @@ class ReportsBaseTest < Test::Unit::TestCase
54
57
  # the code takes config.root expands and adds a '/' for the final path in roots
55
58
  roots = ['/app/', '/full/remote_app/path/']
56
59
 
57
- assert_equal '/full/remote_app/path/is/a/path.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
60
+ expected_path = '/full/remote_app/path/is/a/path.rb'
61
+ assert_equal expected_path, Coverband::Reporters::Base.send(:filename_from_key, key, roots)
58
62
  end
59
63
 
60
64
  test '#merge_arrays basic merge preserves order and counts' do
@@ -62,7 +66,7 @@ class ReportsBaseTest < Test::Unit::TestCase
62
66
  second = [nil, 0, 1, 0, 0]
63
67
  expects = [0, 0, 2, 0, 1]
64
68
 
65
- assert_equal expects, Coverband::Reporters::Base.merge_arrays(first, second)
69
+ assert_equal expects, Coverband::Reporters::Base.send(:merge_arrays, first, second)
66
70
  end
67
71
 
68
72
  test '#merge_arrays basic merge preserves order and counts different lengths' do
@@ -70,7 +74,7 @@ class ReportsBaseTest < Test::Unit::TestCase
70
74
  second = [nil, 0, 1, 0, 0, 0, 0, 1]
71
75
  expects = [0, 0, 2, 0, 1, 0, 0, 1]
72
76
 
73
- assert_equal expects, Coverband::Reporters::Base.merge_arrays(first, second)
77
+ assert_equal expects, Coverband::Reporters::Base.send(:merge_arrays, first, second)
74
78
  end
75
79
 
76
80
  test '#merge_arrays basic merge preserves nils' do
@@ -78,7 +82,7 @@ class ReportsBaseTest < Test::Unit::TestCase
78
82
  second = [0, 1, 2, nil, 0, 1, 2]
79
83
  expects = [0, 2, 4, nil, 0, 1, 2]
80
84
 
81
- assert_equal expects, Coverband::Reporters::Base.merge_arrays(first, second)
85
+ assert_equal expects, Coverband::Reporters::Base.send(:merge_arrays, first, second)
82
86
  end
83
87
 
84
88
  test "#get_current_scov_data_imp doesn't ignore folders with default ignore keys" do
@@ -102,6 +106,6 @@ class ReportsBaseTest < Test::Unit::TestCase
102
106
  File.stubs(:exist?).returns(true)
103
107
  File.stubs(:foreach).returns(['line 1', 'line2', 'line3', 'line4', 'line5', 'line6'])
104
108
 
105
- assert_equal expected, Coverband::Reporters::Base.get_current_scov_data_imp(store, roots)
109
+ assert_equal expected, Coverband::Reporters::Base.send(:get_current_scov_data_imp, store, roots)
106
110
  end
107
111
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coverband
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.alpha
4
+ version: 3.0.0.alpha2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Mayer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-27 00:00:00.000000000 Z
11
+ date: 2018-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
- - !ruby/object:Gem::Dependency
42
- name: classifier-reborn
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: mocha
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -151,7 +137,7 @@ dependencies:
151
137
  - !ruby/object:Gem::Version
152
138
  version: '0'
153
139
  - !ruby/object:Gem::Dependency
154
- name: byebug
140
+ name: classifier-reborn
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
143
  - - ">="
@@ -165,13 +151,13 @@ dependencies:
165
151
  - !ruby/object:Gem::Version
166
152
  version: '0'
167
153
  - !ruby/object:Gem::Dependency
168
- name: json
154
+ name: byebug
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
157
  - - ">="
172
158
  - !ruby/object:Gem::Version
173
159
  version: '0'
174
- type: :runtime
160
+ type: :development
175
161
  prerelease: false
176
162
  version_requirements: !ruby/object:Gem::Requirement
177
163
  requirements:
@@ -263,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
249
  version: 1.3.1
264
250
  requirements: []
265
251
  rubyforge_project:
266
- rubygems_version: 2.5.1
252
+ rubygems_version: 2.7.3
267
253
  signing_key:
268
254
  specification_version: 4
269
255
  summary: Rack middleware to help measure production code usage (LOC runtime usage)