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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13e53266c2fa52796b86da93197611c290f7a0c40e304ef5b75d24c45eed9db3
4
- data.tar.gz: 95b685919c1edd7156f1f940d30f05381a1ac6684863557843001f8edf923125
3
+ metadata.gz: 1c094b4a6ef2b76f771cb96aa1fbdc246dc8beea74033ffca4cb466ef96c0a08
4
+ data.tar.gz: 1162d9244c0e1a1b28c0fa051d7cd53d29b6a4fdfc50c1fadb7d6793229aaf8b
5
5
  SHA512:
6
- metadata.gz: 2e12f0556877efd6435887c447ef3278ab89c0c3ca6740b7ba0de33f9757e17038eb29a74297e9fb29707a8c4d9c999b1138117d3bb64607e0f4da82ca64e0c4
7
- data.tar.gz: 27cfd67015140d2461fb2a9217d06c9782823433c8cbdad3be67e6cc05ea26125dab778656ff0b2023e5e806a277dd1c9028976ddd5dedcc8b90e3505d94598f
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
- Metrics/LineLength:
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
- # Released
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
- files_data = report.map do |file, data|
62
- relative_file = @relative_file_converter.convert(file)
63
- file_hash = file_hash(relative_file)
64
- key = key(relative_file, file_hash: file_hash)
65
- keys << key
66
- script_input(
67
- key: key,
68
- file: relative_file,
69
- file_hash: file_hash,
70
- data: data,
71
- report_time: report_time,
72
- updated_time: updated_time
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
- return unless keys.any?
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).each_with_object({}) do |key, hash|
85
- add_coverage_for_file(key, hash)
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(key, hash)
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.merge!(last_updated_at: updated_time) if updated_time
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")))
@@ -28,7 +28,6 @@ module Coverband
28
28
  rescue StandardError
29
29
  err_msg = 'Coverband requires aws-sdk in order use S3Report.'
30
30
  Coverband.configuration.logger&.error err_msg
31
- return
32
31
  end
33
32
  end
34
33
 
@@ -5,5 +5,5 @@
5
5
  # use format '4.2.1.rc.1' ~> 4.2.1.rc to prerelease versions like v4.2.1.rc.2 and v4.2.1.rc.3
6
6
  ###
7
7
  module Coverband
8
- VERSION = '4.2.4.rc.3'
8
+ VERSION = '4.2.4'
9
9
  end
data/lua/install.sh CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/bin/bash
2
2
 
3
3
  LUA_DIR="$HOME/lua51"
4
- BUSTED="$LUA_DIR/bin/busted"
4
+ LUA="$LUA_DIR/bin/lua"
5
5
 
6
- if [ -f "$BUSTED" ]
7
- then
8
- echo "$BUSTED already exists"
9
- exit 0
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'>Coverage Data</a> &nbsp;
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 %>
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.rc.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-10-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
@@ -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: 1.3.1
454
+ version: '0'
440
455
  requirements: []
441
456
  rubygems_version: 3.0.3
442
457
  signing_key: