coverband 4.2.4.rc.3 → 4.2.4

Sign up to get free protection for your applications and to get access to all the features.
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: