coverband 1.5.0 → 1.5.1

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
  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