coverband 1.5.0 → 1.5.1
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/README.md +2 -2
- data/coverband.gemspec +1 -1
- data/lib/coverband/base.rb +32 -2
- data/lib/coverband/configuration.rb +3 -1
- data/lib/coverband/version.rb +1 -1
- data/test/unit/base_test.rb +4 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf69ef556cbc606786ff1d0b49b74728cedbf0f5
|
4
|
+
data.tar.gz: 28d03bf504a6a51b112a5db554b8393032f9678f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff7da9c529350fb7dc8b1a7b6725bd3c50c5941934a8704fe17b2db9da8f8921269e8aa520ab9c17bae0a227fd269807823ae751149a7852523089aadc5f9260
|
7
|
+
data.tar.gz: 40fee47fee66304cb0610050c09beb9e08ce686e00b6012791e9dcc48c5efd3970174c3fa9d93eaf1efd28a7b61ebe5dd891be52beedb88275fc8dd1fc7a0120
|
data/README.md
CHANGED
@@ -67,7 +67,7 @@ That gives you the gem, but to get up and running then follow:
|
|
67
67
|
* Insert middleware in stack
|
68
68
|
* run `bundle exec rake coverband:baseline` ([what is baseline?](https://github.com/danmayer/coverband#coverband-baseline))
|
69
69
|
* run `bundle exec rake coverband:coverage` this will show app initialization coverage
|
70
|
-
* run app and hit a controller (hit at least +1 time over your `config.startup_delay` setting default is
|
70
|
+
* run app and hit a controller (hit at least +1 time over your `config.startup_delay` setting default is 0)
|
71
71
|
* run `bundle exec rake coverband:coverage` and you should see coverage increasing for the endpoints you hit.
|
72
72
|
|
73
73
|
|
@@ -118,7 +118,7 @@ Coverband.configure do |config|
|
|
118
118
|
# Since rails and other frameworks lazy load code. I have found it is bad to allow
|
119
119
|
# initial requests to record with coverband. This ignores first 15 requests
|
120
120
|
# NOTE: If you are using a threaded webserver (example: Puma) this will ignore requests for each thread
|
121
|
-
config.startup_delay = Rails.env.production? ?
|
121
|
+
config.startup_delay = Rails.env.production? ? 5 : 0
|
122
122
|
# Percentage of requests recorded
|
123
123
|
config.percentage = Rails.env.production? ? 30.0 : 100.0
|
124
124
|
|
data/coverband.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'sinatra'
|
28
28
|
spec.add_development_dependency 'classifier-reborn'
|
29
29
|
spec.add_development_dependency 'aws-sdk', '~> 2'
|
30
|
-
spec.add_runtime_dependency "simplecov"
|
30
|
+
spec.add_runtime_dependency "simplecov", '~> 0.11'
|
31
31
|
spec.add_runtime_dependency "json"
|
32
32
|
# TODO make redis optional dependancy as we add additional adapters
|
33
33
|
spec.add_runtime_dependency "redis"
|
data/lib/coverband/base.rb
CHANGED
@@ -21,8 +21,9 @@ module Coverband
|
|
21
21
|
def sample
|
22
22
|
configure_sampling
|
23
23
|
record_coverage
|
24
|
-
yield
|
24
|
+
result = yield
|
25
25
|
report_coverage
|
26
|
+
result
|
26
27
|
end
|
27
28
|
|
28
29
|
def save
|
@@ -38,6 +39,7 @@ module Coverband
|
|
38
39
|
def reset_instance
|
39
40
|
@project_directory = File.expand_path(Coverband.configuration.root)
|
40
41
|
@enabled = false
|
42
|
+
@disable_on_failure_for = Coverband.configuration.disable_on_failure_for
|
41
43
|
@tracer_set = false
|
42
44
|
@file_line_usage = {}
|
43
45
|
@ignored_files = Set.new
|
@@ -65,13 +67,14 @@ module Coverband
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def record_coverage
|
68
|
-
if @enabled
|
70
|
+
if @enabled && !failed_recently?
|
69
71
|
set_tracer
|
70
72
|
else
|
71
73
|
unset_tracer
|
72
74
|
end
|
73
75
|
@stats.increment "coverband.request.recorded.#{@enabled}" if @stats
|
74
76
|
rescue RuntimeError => err
|
77
|
+
failed!
|
75
78
|
if @verbose
|
76
79
|
@logger.info "error stating recording coverage"
|
77
80
|
@logger.info "error: #{err.inspect} #{err.message}"
|
@@ -86,6 +89,11 @@ module Coverband
|
|
86
89
|
|
87
90
|
unset_tracer
|
88
91
|
|
92
|
+
if failed_recently?
|
93
|
+
@logger.info "coverage reporting sanding-by because of recent failure" if @verbose
|
94
|
+
return
|
95
|
+
end
|
96
|
+
|
89
97
|
if @verbose
|
90
98
|
@logger.info "coverband file usage: #{file_usage.inspect}"
|
91
99
|
if @verbose=="debug"
|
@@ -109,6 +117,7 @@ module Coverband
|
|
109
117
|
@logger.info @file_line_usage.inspect
|
110
118
|
end
|
111
119
|
rescue RuntimeError => err
|
120
|
+
failed!
|
112
121
|
if @verbose
|
113
122
|
@logger.info "coverage missing"
|
114
123
|
@logger.info "error: #{err.inspect} #{err.message}"
|
@@ -144,6 +153,27 @@ module Coverband
|
|
144
153
|
|
145
154
|
private
|
146
155
|
|
156
|
+
def failed_at_thread_key
|
157
|
+
"__#{self.class.name}__failed_at"
|
158
|
+
end
|
159
|
+
|
160
|
+
def failed_at
|
161
|
+
Thread.current[failed_at_thread_key]
|
162
|
+
end
|
163
|
+
|
164
|
+
def failed_at=(time)
|
165
|
+
Thread.current[failed_at_thread_key] = time
|
166
|
+
end
|
167
|
+
|
168
|
+
def failed!
|
169
|
+
self.failed_at = Time.now
|
170
|
+
end
|
171
|
+
|
172
|
+
def failed_recently?
|
173
|
+
return false unless @disable_on_failure_for && failed_at
|
174
|
+
failed_at + @disable_on_failure_for > Time.now
|
175
|
+
end
|
176
|
+
|
147
177
|
def file_usage
|
148
178
|
hash = {}
|
149
179
|
@file_line_usage.each do |file, lines|
|
@@ -4,7 +4,8 @@ module Coverband
|
|
4
4
|
attr_accessor :redis, :root_paths, :root,
|
5
5
|
:ignore, :percentage, :verbose, :reporter, :stats,
|
6
6
|
:logger, :startup_delay, :trace_point_events,
|
7
|
-
:include_gems, :memory_caching, :s3_bucket, :coverage_file, :store
|
7
|
+
:include_gems, :memory_caching, :s3_bucket, :coverage_file, :store,
|
8
|
+
:disable_on_failure_for
|
8
9
|
|
9
10
|
# deprecated, but leaving to allow old configs to 'just work'
|
10
11
|
# remove for 2.0
|
@@ -26,6 +27,7 @@ module Coverband
|
|
26
27
|
@memory_caching = false
|
27
28
|
@coverage_file = nil
|
28
29
|
@store = nil
|
30
|
+
@disable_on_failure_for = nil
|
29
31
|
end
|
30
32
|
|
31
33
|
def logger
|
data/lib/coverband/version.rb
CHANGED
data/test/unit/base_test.rb
CHANGED
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: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -140,16 +140,16 @@ dependencies:
|
|
140
140
|
name: simplecov
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
145
|
+
version: '0.11'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
152
|
+
version: '0.11'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: json
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|