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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e4f7c810900bee83c3516d394e950fde6cb5186
4
- data.tar.gz: ba60c4f523b5d50e145cf179113dd6431fd6be4c
3
+ metadata.gz: cf69ef556cbc606786ff1d0b49b74728cedbf0f5
4
+ data.tar.gz: 28d03bf504a6a51b112a5db554b8393032f9678f
5
5
  SHA512:
6
- metadata.gz: ca67d3de1ce546e6d5d3050bde171f70ef258b0792a2e871d8d4c4b93c5609f71e85afcb7d39b9a08d582381e6476fe13c791c45d764726eccaada3170dfd25a
7
- data.tar.gz: a1543e402bcc3ef6a0c68c478235d34d1794f695ea9c3099eb31f7c4b54b56015622f1fb920804e0c20614118516fabcf12364e5c97a220108e820e53c29683b
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 2)
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? ? 15 : 2
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
 
@@ -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"
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Coverband
2
- VERSION = "1.5.0"
2
+ VERSION = "1.5.1"
3
3
  end
@@ -93,4 +93,8 @@ class BaseTest < Test::Unit::TestCase
93
93
  coverband.save
94
94
  end
95
95
 
96
+ test "sample should return the result of the block" do
97
+ coverband = Coverband::Base.instance.reset_instance
98
+ assert_equal 2, coverband.sample { 1 + 1 }
99
+ end
96
100
  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: 1.5.0
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-01-05 00:00:00.000000000 Z
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