coverband 4.2.4.rc.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -6
- data/README.md +1 -0
- data/changes.md +8 -2
- data/coverband.gemspec +1 -0
- data/lib/coverband/adapters/hash_redis_store.rb +31 -25
- data/lib/coverband/reporters/html_report.rb +10 -0
- data/lib/coverband/reporters/web.rb +10 -0
- data/lib/coverband/utils/html_formatter.rb +8 -0
- data/lib/coverband/utils/s3_report.rb +0 -1
- data/lib/coverband/version.rb +1 -1
- data/lua/install.sh +5 -8
- data/views/data.erb +1 -0
- data/views/nav.erb +2 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c094b4a6ef2b76f771cb96aa1fbdc246dc8beea74033ffca4cb466ef96c0a08
|
4
|
+
data.tar.gz: 1162d9244c0e1a1b28c0fa051d7cd53d29b6a4fdfc50c1fadb7d6793229aaf8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9eba70b91d87992d1e450490f7fd4545cccb5092bf093c424c51b964cb4b31ad5c8a1d49d1cc774ce6470c6466b7d3b7a7a1df92ecbc4e574a203467f621b55
|
7
|
+
data.tar.gz: 815c462d38f7a27b26f5d209044c53b2e0058c4ea2534db3f6663a267ad0cc435bd6c895128c5ea8f85c0aec61e4e31d9f61c426526b71423e24c941852f74be
|
data/.rubocop.yml
CHANGED
@@ -7,12 +7,12 @@ AllCops:
|
|
7
7
|
- test/rails5_dummy/**/*
|
8
8
|
- test/fixtures/**/*
|
9
9
|
# Get the code passing first then we will enable for tests
|
10
|
-
- test/**/*
|
10
|
+
- test/**/*
|
11
11
|
Documentation:
|
12
12
|
Enabled: false
|
13
13
|
Metrics/MethodLength:
|
14
14
|
Enabled: false
|
15
|
-
|
15
|
+
Layout/LineLength:
|
16
16
|
Max: 160
|
17
17
|
Metrics/BlockNesting:
|
18
18
|
Max: 5
|
@@ -62,10 +62,6 @@ Style/SymbolProc:
|
|
62
62
|
Enabled: false
|
63
63
|
Style/RegexpLiteral:
|
64
64
|
Enabled: false
|
65
|
-
Performance/Casecmp:
|
66
|
-
Enabled: false
|
67
|
-
Performance/RegexpMatch:
|
68
|
-
Enabled: false
|
69
65
|
Layout/MultilineMethodCallIndentation:
|
70
66
|
Enabled: true
|
71
67
|
Layout/MultilineOperationIndentation:
|
data/README.md
CHANGED
@@ -385,6 +385,7 @@ If you submit a change please make sure the tests and benchmarks are passing.
|
|
385
385
|
- **total fail** on front end code, for line for line coverage, because of the precompiled template step basically coverage doesn't work well for `erb`, `slim`, and the like.
|
386
386
|
- related it will try to report something, but the line numbers reported for `ERB` files are often off and aren't considered useful. I recommend filtering out .erb using the `config.ignore` option. The default configuration excludes these files
|
387
387
|
- **NOTE:** We now have file level coverage for view files, but don't support line level detail
|
388
|
+
- The view file detection doesn't workf or mailers at the moment only for web related views / JSON templates. This is due to how Rails active mailer notifications work.
|
388
389
|
|
389
390
|
### Debugging Redis Store
|
390
391
|
|
data/changes.md
CHANGED
@@ -76,6 +76,12 @@ Feature Ideas:
|
|
76
76
|
|
77
77
|
# Alpha / Beta / Release Candidates
|
78
78
|
|
79
|
+
### Coverband 4.2.5
|
80
|
+
|
81
|
+
- ?
|
82
|
+
|
83
|
+
# Released
|
84
|
+
|
79
85
|
### Coverband 4.2.4
|
80
86
|
|
81
87
|
- fixes related to startup without Redis, skipping Coverband on common rake tasks (assets:precompile), etc
|
@@ -87,8 +93,8 @@ Feature Ideas:
|
|
87
93
|
- added support to download coverage and view data in JSON format
|
88
94
|
- documentation about working with environment variables
|
89
95
|
- add cache wiggle to avoid Redis CPU spikes (cache stampede on Redis server)
|
90
|
-
|
91
|
-
|
96
|
+
- make the nocov consistant on the data download and html view
|
97
|
+
- small performance improvements
|
92
98
|
|
93
99
|
### Coverband 4.2.3
|
94
100
|
|
data/coverband.gemspec
CHANGED
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.add_development_dependency 'rake'
|
36
36
|
spec.add_development_dependency 'resque'
|
37
37
|
spec.add_development_dependency 'rubocop'
|
38
|
+
spec.add_development_dependency 'rubocop-performance'
|
38
39
|
|
39
40
|
spec.add_development_dependency 'coveralls'
|
40
41
|
# add when debugging
|
@@ -22,6 +22,7 @@ module Coverband
|
|
22
22
|
def initialize(redis, opts = {})
|
23
23
|
super()
|
24
24
|
@redis_namespace = opts[:redis_namespace]
|
25
|
+
@save_report_batch_size = opts[:save_report_batch_size] || 100
|
25
26
|
@format_version = REDIS_STORAGE_FORMAT_VERSION
|
26
27
|
@redis = redis
|
27
28
|
raise 'HashRedisStore requires redis >= 2.6.0' unless supported?
|
@@ -58,31 +59,38 @@ module Coverband
|
|
58
59
|
report_time = Time.now.to_i
|
59
60
|
updated_time = type == Coverband::EAGER_TYPE ? nil : report_time
|
60
61
|
keys = []
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
62
|
+
report.each_slice(@save_report_batch_size) do |slice|
|
63
|
+
files_data = slice.map do |(file, data)|
|
64
|
+
relative_file = @relative_file_converter.convert(file)
|
65
|
+
file_hash = file_hash(relative_file)
|
66
|
+
key = key(relative_file, file_hash: file_hash)
|
67
|
+
keys << key
|
68
|
+
script_input(
|
69
|
+
key: key,
|
70
|
+
file: relative_file,
|
71
|
+
file_hash: file_hash,
|
72
|
+
data: data,
|
73
|
+
report_time: report_time,
|
74
|
+
updated_time: updated_time
|
75
|
+
)
|
76
|
+
end
|
77
|
+
next unless files_data.any?
|
78
|
+
|
79
|
+
arguments_key = [@redis_namespace, SecureRandom.uuid].compact.join('.')
|
80
|
+
@redis.set(arguments_key, { ttl: @ttl, files_data: files_data }.to_json, ex: JSON_PAYLOAD_EXPIRATION)
|
81
|
+
@redis.evalsha(hash_incr_script, [arguments_key])
|
74
82
|
end
|
75
|
-
|
76
|
-
|
77
|
-
arguments_key = [@redis_namespace, SecureRandom.uuid].compact.join('.')
|
78
|
-
@redis.set(arguments_key, { ttl: @ttl, files_data: files_data }.to_json, ex: JSON_PAYLOAD_EXPIRATION)
|
79
|
-
@redis.evalsha(hash_incr_script, [arguments_key])
|
80
|
-
@redis.sadd(files_key, keys)
|
83
|
+
@redis.sadd(files_key, keys) if keys.any?
|
81
84
|
end
|
82
85
|
|
83
86
|
def coverage(local_type = nil)
|
84
|
-
files_set(local_type)
|
85
|
-
|
87
|
+
files_set = files_set(local_type)
|
88
|
+
@redis.pipelined do
|
89
|
+
files_set.map do |key|
|
90
|
+
@redis.hgetall(key)
|
91
|
+
end
|
92
|
+
end.each_with_object({}) do |data_from_redis, hash|
|
93
|
+
add_coverage_for_file(data_from_redis, hash)
|
86
94
|
end
|
87
95
|
end
|
88
96
|
|
@@ -100,9 +108,7 @@ module Coverband
|
|
100
108
|
|
101
109
|
private
|
102
110
|
|
103
|
-
def add_coverage_for_file(
|
104
|
-
data_from_redis = @redis.hgetall(key)
|
105
|
-
|
111
|
+
def add_coverage_for_file(data_from_redis, hash)
|
106
112
|
return if data_from_redis.empty?
|
107
113
|
|
108
114
|
file = data_from_redis[FILE_KEY]
|
@@ -133,7 +139,7 @@ module Coverband
|
|
133
139
|
file_length: data.length,
|
134
140
|
hash_key: key
|
135
141
|
}
|
136
|
-
meta
|
142
|
+
meta[:last_updated_at] = updated_time if updated_time
|
137
143
|
{
|
138
144
|
hash_key: key,
|
139
145
|
meta: meta,
|
@@ -32,6 +32,10 @@ module Coverband
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
def report_data
|
36
|
+
report_dynamic_data
|
37
|
+
end
|
38
|
+
|
35
39
|
private
|
36
40
|
|
37
41
|
def static?
|
@@ -54,6 +58,12 @@ module Coverband
|
|
54
58
|
base_path: base_path,
|
55
59
|
notice: notice).format_dynamic_html!
|
56
60
|
end
|
61
|
+
|
62
|
+
def report_dynamic_data
|
63
|
+
Coverband::Utils::HTMLFormatter.new(filtered_report_files,
|
64
|
+
base_path: base_path,
|
65
|
+
notice: notice).format_dynamic_data!
|
66
|
+
end
|
57
67
|
end
|
58
68
|
end
|
59
69
|
end
|
@@ -55,6 +55,8 @@ module Coverband
|
|
55
55
|
[200, { 'Content-Type' => 'text/json' }, [view_tracker_data]]
|
56
56
|
when %r{\/view_tracker}
|
57
57
|
[200, { 'Content-Type' => 'text/html' }, [view_tracker]]
|
58
|
+
when %r{\/enriched_debug_data}
|
59
|
+
[200, { 'Content-Type' => 'text/json' }, [enriched_debug_data]]
|
58
60
|
when %r{\/debug_data}
|
59
61
|
[200, { 'Content-Type' => 'text/json' }, [debug_data]]
|
60
62
|
when %r{\/load_file_details}
|
@@ -97,6 +99,14 @@ module Coverband
|
|
97
99
|
Coverband.configuration.store.get_coverage_report.to_json
|
98
100
|
end
|
99
101
|
|
102
|
+
def enriched_debug_data
|
103
|
+
Coverband::Reporters::HTMLReport.new(Coverband.configuration.store,
|
104
|
+
static: false,
|
105
|
+
base_path: base_path,
|
106
|
+
notice: '',
|
107
|
+
open_report: false).report_data
|
108
|
+
end
|
109
|
+
|
100
110
|
def load_file_details
|
101
111
|
filename = request.params['filename']
|
102
112
|
Coverband::Reporters::HTMLReport.new(Coverband.configuration.store,
|
@@ -29,6 +29,10 @@ module Coverband
|
|
29
29
|
format_html(@coverage_result)
|
30
30
|
end
|
31
31
|
|
32
|
+
def format_dynamic_data!
|
33
|
+
format_data(@coverage_result)
|
34
|
+
end
|
35
|
+
|
32
36
|
def format_settings!
|
33
37
|
format_settings
|
34
38
|
end
|
@@ -71,6 +75,10 @@ module Coverband
|
|
71
75
|
template('layout').result(binding)
|
72
76
|
end
|
73
77
|
|
78
|
+
def format_data(result)
|
79
|
+
template('data').result(binding)
|
80
|
+
end
|
81
|
+
|
74
82
|
# Returns the an erb instance for the template of given name
|
75
83
|
def template(name)
|
76
84
|
ERB.new(File.read(File.join(File.dirname(__FILE__), '../../../views/', "#{name}.erb")))
|
data/lib/coverband/version.rb
CHANGED
data/lua/install.sh
CHANGED
@@ -1,16 +1,13 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
3
|
LUA_DIR="$HOME/lua51"
|
4
|
-
|
4
|
+
LUA="$LUA_DIR/bin/lua"
|
5
5
|
|
6
|
-
if [ -f
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
if [ ! -f $LUA ]; then
|
7
|
+
echo "Installing lua"
|
8
|
+
pip install hererocks
|
9
|
+
hererocks $LUA_DIR -l5.1 -rlatest
|
10
10
|
fi
|
11
|
-
|
12
|
-
pip install hererocks
|
13
|
-
hererocks $LUA_DIR -l5.1 -rlatest
|
14
11
|
source $LUA_DIR/bin/activate
|
15
12
|
lua -v
|
16
13
|
for i in luacov busted redis-lua inspect lua-cjson; do
|
data/views/data.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<%= result.source_files.to_json %>
|
data/views/nav.erb
CHANGED
@@ -6,7 +6,8 @@
|
|
6
6
|
<%= button("#{base_path}clear", 'clear coverage report', delete: true) %>
|
7
7
|
<% end %>
|
8
8
|
<% if Coverband.configuration.web_debug %>
|
9
|
-
<a href='<%= base_path %>debug_data'>
|
9
|
+
<a href='<%= base_path %>debug_data'>Debug Data</a>
|
10
|
+
<a href='<%= base_path %>enriched_debug_data'>Coverage Data</a>
|
10
11
|
<% end %>
|
11
12
|
</div>
|
12
13
|
<% if notice.to_s.length > 0 %>
|
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.4
|
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-
|
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
|
@@ -411,6 +425,7 @@ files:
|
|
411
425
|
- test/rails_test_helper.rb
|
412
426
|
- test/test_helper.rb
|
413
427
|
- test/unique_files.rb
|
428
|
+
- views/data.erb
|
414
429
|
- views/file_list.erb
|
415
430
|
- views/gem_list.erb
|
416
431
|
- views/layout.erb
|
@@ -434,9 +449,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
434
449
|
version: '0'
|
435
450
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
436
451
|
requirements:
|
437
|
-
- - "
|
452
|
+
- - ">="
|
438
453
|
- !ruby/object:Gem::Version
|
439
|
-
version:
|
454
|
+
version: '0'
|
440
455
|
requirements: []
|
441
456
|
rubygems_version: 3.0.3
|
442
457
|
signing_key:
|