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 +5 -5
- data/README.md +3 -2
- data/Rakefile +3 -1
- data/changes.md +21 -5
- data/coverband.gemspec +3 -3
- data/lib/coverband/reporters/base.rb +69 -71
- data/lib/coverband/version.rb +1 -1
- data/test/benchmarks/benchmark.rake +45 -86
- data/test/unit/full_stack_test.rb +2 -2
- data/test/unit/reports_base_test.rb +12 -8
- metadata +6 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d163fe104d7966396a057777b51ce78a908c51875fbbc79923499c84c839005d
|
4
|
+
data.tar.gz: 6fe8e31cfbb5045aca8082ebd741bcf0c67fc7acc6b0e62baa58ebb5671638bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
data/changes.md
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
# Future Roadmap
|
2
2
|
|
3
|
-
### Coverband
|
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
|
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
|
-
|
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
|
-
|
11
|
-
|
10
|
+
class << self
|
11
|
+
def report(store, _options = {})
|
12
|
+
scov_style_report = get_current_scov_data_imp(store, root_paths)
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
40
|
-
|
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
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
65
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
-
|
96
|
-
|
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
|
data/lib/coverband/version.rb
CHANGED
@@ -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
|
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
|
78
|
+
# desc 'set up coverband with Redis'
|
80
79
|
task :setup_redis do
|
81
80
|
Coverband.configure do |config|
|
82
|
-
config.redis
|
83
|
-
config.root
|
84
|
-
config.
|
85
|
-
config.logger
|
86
|
-
config.
|
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
|
89
|
+
# desc 'set up coverband with filestore'
|
93
90
|
task :setup_file do
|
94
91
|
Coverband.configure do |config|
|
95
|
-
config.root
|
96
|
-
config.
|
97
|
-
config.logger
|
98
|
-
|
99
|
-
config.
|
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
|
-
|
159
|
-
|
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
|
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
|
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
|
248
|
-
run_work
|
194
|
+
puts 'Coverband configured with file store'
|
195
|
+
run_work(true)
|
249
196
|
end
|
250
197
|
|
251
|
-
desc '
|
252
|
-
task
|
253
|
-
|
254
|
-
|
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 :
|
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
|
261
|
-
puts `rake benchmarks:
|
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:
|
267
|
-
'benchmarks:
|
268
|
-
'benchmarks:
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
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.
|
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-
|
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:
|
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:
|
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: :
|
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.
|
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)
|