coverband 2.0.0.alpha1 → 2.0.0

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.
@@ -6,6 +6,7 @@ require 'test/unit'
6
6
  require 'mocha/setup'
7
7
  require 'ostruct'
8
8
  require 'json'
9
+ require 'redis'
9
10
 
10
11
  SimpleCov.start do
11
12
  add_filter 'specs/ruby/1.9.1/gems/'
@@ -13,6 +14,8 @@ SimpleCov.start do
13
14
  add_filter '/config/'
14
15
  end
15
16
 
17
+ TEST_COVERAGE_FILE = '/tmp/fake_file.json'
18
+
16
19
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
17
20
  $LOAD_PATH.unshift(File.dirname(__FILE__))
18
21
  Mocha::Configuration.prevent(:stubbing_non_existent_method)
@@ -37,7 +40,7 @@ end
37
40
  def fake_redis
38
41
  @redis ||= begin
39
42
  redis = OpenStruct.new
40
- # mocha requires method to exist to mock it
43
+ # mocha requires method to exist to mock it
41
44
  def redis.smembers(key); end
42
45
  def redis.hgetall(key); end
43
46
  redis
@@ -63,10 +66,9 @@ end
63
66
 
64
67
  Coverband.configure do |config|
65
68
  config.root = Dir.pwd
66
- config.redis = Redis.new
67
- # config.coverage_baseline = JSON.parse(File.read('./tmp/coverband_baseline.json'))
68
69
  config.root_paths = ['/app/']
69
70
  config.ignore = ['vendor']
70
71
  config.percentage = 100.0
71
72
  config.reporter = 'std_out'
73
+ config.store = Coverband::Adapters::RedisStore.new(Redis.new)
72
74
  end
@@ -3,12 +3,10 @@
3
3
  require File.expand_path('../test_helper', File.dirname(__FILE__))
4
4
 
5
5
  class ReporterTest < Test::Unit::TestCase
6
+
6
7
  test 'record baseline' do
7
8
  Coverband.configure do |config|
8
- config.redis = nil
9
- config.store = nil
10
- config.root = '/full/remote_app/path'
11
- config.coverage_file = '/tmp/fake_file.json'
9
+ config.store = Coverband::Adapters::FileStore.new(TEST_COVERAGE_FILE)
12
10
  end
13
11
  Coverage.expects(:start).returns(true).at_least_once
14
12
  Coverage.expects(:result).returns('fake' => [0, 1]).at_least_once
@@ -29,7 +27,7 @@ class ReporterTest < Test::Unit::TestCase
29
27
  config.redis = nil
30
28
  config.store = nil
31
29
  config.root = '/full/remote_app/path'
32
- config.coverage_file = '/tmp/fake_file.json'
30
+ config.store = Coverband::Adapters::FileStore.new(TEST_COVERAGE_FILE)
33
31
  end
34
32
  File.expects(:exist?).at_least_once.returns(true)
35
33
  expected = { 'filename.rb' => [0, nil, 1] }
@@ -44,7 +42,7 @@ class ReporterTest < Test::Unit::TestCase
44
42
  config.redis = nil
45
43
  config.store = nil
46
44
  config.root = '/full/remote_app/path'
47
- config.coverage_file = '/tmp/fake_file.json'
45
+ config.store = Coverband::Adapters::FileStore.new(TEST_COVERAGE_FILE)
48
46
  config.ignore = ['ignored_file.rb']
49
47
  end
50
48
  root = Coverband.configuration.root
@@ -52,7 +50,7 @@ class ReporterTest < Test::Unit::TestCase
52
50
  expected_files = [root + '/fakefile.rb']
53
51
  assert_equal(expected_files, Coverband::Baseline.exclude_files(files))
54
52
  end
55
-
53
+
56
54
  test 'convert_coverage_format' do
57
55
  results = { 'fake_file.rb' => [1, nil, 0, 2] }
58
56
  expected = { 'fake_file.rb' => { 1 => 1, 3 => 0, 4 => 2 } }
@@ -4,6 +4,12 @@ require File.expand_path('../test_helper', File.dirname(__FILE__))
4
4
  require File.expand_path('./dog', File.dirname(__FILE__))
5
5
 
6
6
  class CollectorsBaseTest < Test::Unit::TestCase
7
+ def setup
8
+ Coverband.configure do |config|
9
+ config.collector = 'trace'
10
+ end
11
+ end
12
+
7
13
  test 'defaults to a redis store' do
8
14
  coverband = Coverband::Collectors::Base.instance.reset_instance
9
15
  assert_equal Coverband::Adapters::RedisStore, coverband.instance_variable_get('@store').class
@@ -32,7 +38,6 @@ class CollectorsBaseTest < Test::Unit::TestCase
32
38
  assert_equal true, coverband.instance_variable_get('@enabled')
33
39
  coverband.stop
34
40
  assert_equal false, coverband.instance_variable_get('@enabled')
35
- assert_equal false, coverband.instance_variable_get('@tracer_set')
36
41
  end
37
42
 
38
43
  test 'allow for sampling with a block and enable when 100 percent sample' do
@@ -71,7 +76,7 @@ class CollectorsBaseTest < Test::Unit::TestCase
71
76
  Coverband.configuration.logger.stubs('info')
72
77
  store = Coverband::Adapters::RedisStore.new(Redis.new)
73
78
  coverband.instance_variable_set('@store', store)
74
- store.expects(:save_report).once.with(has_entries(dog_file => { 5 => 5 }))
79
+ store.expects(:save_report).once.with(has_entries(dog_file => {5 => 5}))
75
80
  assert_equal false, coverband.instance_variable_get('@enabled')
76
81
  coverband.start
77
82
  5.times { Dog.new.bark }
@@ -84,6 +89,7 @@ class CollectorsBaseTest < Test::Unit::TestCase
84
89
  coverband = Coverband::Collectors::Base.instance.reset_instance
85
90
  coverband.start
86
91
  100.times { Dog.new.bark }
92
+ Coverband::Collectors::Base.instance
87
93
  assert_equal 100, coverband.instance_variable_get('@file_line_usage')[dog_file][5]
88
94
  coverband.stop
89
95
  coverband.save
@@ -8,9 +8,9 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3.0')
8
8
  attr_accessor :coverband
9
9
 
10
10
  def setup
11
- Thread.current[:coverband_instance] = nil
12
11
  Coverband.configure do |config|
13
12
  config.collector = 'coverage'
13
+ config.store = Coverband::Adapters::RedisStore.new(Redis.new)
14
14
  end
15
15
  @coverband = Coverband::Collectors::Base.instance.reset_instance
16
16
  end
@@ -4,6 +4,12 @@ require File.expand_path('../test_helper', File.dirname(__FILE__))
4
4
  require File.expand_path('./dog', File.dirname(__FILE__))
5
5
 
6
6
  class CollectorsTraceTest < Test::Unit::TestCase
7
+ def setup
8
+ Coverband.configure do |config|
9
+ config.collector = 'trace'
10
+ end
11
+ end
12
+
7
13
  test 'defaults to a redis store' do
8
14
  coverband = Coverband::Collectors::Base.instance.reset_instance
9
15
  assert_equal Coverband::Adapters::RedisStore, coverband.instance_variable_get('@store').class
@@ -82,6 +88,8 @@ class CollectorsTraceTest < Test::Unit::TestCase
82
88
  test 'tracer should count line numbers' do
83
89
  dog_file = File.expand_path('./dog.rb', File.dirname(__FILE__))
84
90
  coverband = Coverband::Collectors::Base.instance.reset_instance
91
+ store = Coverband::Adapters::RedisStore.new(Redis.new)
92
+ coverband.instance_variable_set('@store', store)
85
93
  coverband.start
86
94
  100.times { Dog.new.bark }
87
95
  assert_equal 100, coverband.instance_variable_get('@file_line_usage')[dog_file][5]
@@ -3,10 +3,6 @@
3
3
  require File.expand_path('../test_helper', File.dirname(__FILE__))
4
4
 
5
5
  class BaseTest < Test::Unit::TestCase
6
- test 'defaults to line trace point event' do
7
- assert_equal Coverband.configuration.trace_point_events, [:line]
8
- end
9
-
10
6
  test 'defaults to ignore gems' do
11
7
  assert_equal Coverband.configuration.include_gems, false
12
8
  coverband = Coverband::Collectors::Base.instance.reset_instance
@@ -7,6 +7,15 @@ require 'rack'
7
7
  class MiddlewareTest < Test::Unit::TestCase
8
8
  BASE_KEY = Coverband::Adapters::RedisStore::BASE_KEY
9
9
 
10
+ def setup
11
+ Coverband.configure do |config|
12
+ config.redis = nil
13
+ config.store = nil
14
+ config.collector = 'trace'
15
+ config.store = Coverband::Adapters::RedisStore.new(Redis.new)
16
+ end
17
+ end
18
+
10
19
  test 'call app' do
11
20
  request = Rack::MockRequest.env_for('/anything.json')
12
21
  Coverband::Collectors::Base.instance.reset_instance
@@ -42,26 +51,6 @@ class MiddlewareTest < Test::Unit::TestCase
42
51
  assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
43
52
  end
44
53
 
45
- test 'always unset function when sampling' do
46
- request = Rack::MockRequest.env_for('/anything.json')
47
- Coverband::Collectors::Base.instance.reset_instance
48
- middleware = Coverband::Middleware.new(fake_app)
49
- assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
50
- Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
51
- middleware.call(request)
52
- assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
53
- end
54
-
55
- test 'always unset function when not sampling' do
56
- request = Rack::MockRequest.env_for('/anything.json')
57
- Coverband::Collectors::Base.instance.reset_instance
58
- middleware = Coverband::Middleware.new(fake_app)
59
- assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
60
- middleware.instance_variable_set('@sample_percentage', 0.0)
61
- middleware.call(request)
62
- assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
63
- end
64
-
65
54
  test 'always record coverage, set trace func, and add_files when sampling' do
66
55
  request = Rack::MockRequest.env_for('/anything.json')
67
56
  Coverband::Collectors::Base.instance.reset_instance
@@ -93,30 +82,11 @@ class MiddlewareTest < Test::Unit::TestCase
93
82
  fake_redis = Redis.new
94
83
  redis_store = Coverband::Adapters::RedisStore.new(fake_redis)
95
84
  redis_store.clear!
96
- Coverband::Collectors::Base.instance.instance_variable_set('@store', redis_store)
97
- fake_redis.stubs(:info).returns('redis_version' => 3.0)
98
- fake_redis.expects(:sadd).at_least_once
99
- fake_redis.expects(:mapped_hmset).at_least_once
100
- fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}", '7' => 1)
101
- middleware.call(request)
102
- assert_equal true, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
103
- end
104
-
105
- test 'report only on calls when configured' do
106
- request = Rack::MockRequest.env_for('/anything.json')
107
- Coverband.configuration.trace_point_events = [:call]
108
85
  Coverband::Collectors::Base.instance.reset_instance
109
- middleware = Coverband::Middleware.new(fake_app_with_lines)
110
- assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
111
- Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
112
- fake_redis = Redis.new
113
- redis_store = Coverband::Adapters::RedisStore.new(fake_redis)
114
- redis_store.clear!
115
86
  Coverband::Collectors::Base.instance.instance_variable_set('@store', redis_store)
116
- fake_redis.stubs(:info).returns('redis_version' => 3.0)
117
87
  fake_redis.expects(:sadd).at_least_once
118
88
  fake_redis.expects(:mapped_hmset).at_least_once
119
- fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}", '6' => 1)
89
+ fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}", '7' => 1)
120
90
  middleware.call(request)
121
91
  assert_equal true, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
122
92
  end
@@ -137,4 +137,30 @@ class ReportsBaseTest < Test::Unit::TestCase
137
137
 
138
138
  assert_equal expects, Coverband::Reporters::Base.merge_existing_coverage(first, second)
139
139
  end
140
+
141
+ test "#get_current_scov_data_imp doesn't ignore folders with default ignore keys" do
142
+ @fake_redis = fake_redis
143
+ store = Coverband::Adapters::RedisStore.new(@fake_redis)
144
+
145
+ Coverband.configure do |config|
146
+ config.redis = @fake_redis
147
+ config.reporter = 'std_out'
148
+ config.ignore = %w[vendor .erb$ .slim$]
149
+ config.root = '/full/remote_app/path'
150
+ end
151
+
152
+ key = '/a_path/that_has_erb_in/thepath.rb'
153
+ roots = ['/app/', '/full/remote_app/path/']
154
+
155
+ lines_hit = [1, 3, 6]
156
+ store.stubs(:covered_lines_for_file).returns(lines_hit)
157
+ # expects to show hit counts on 1,3,6
158
+ expected = { '/a_path/that_has_erb_in/thepath.rb' => [1, nil, 1, nil, nil, 1] }
159
+ File.stubs(:exist?).returns(true)
160
+ File.stubs(:foreach).returns(['line 1', 'line2', 'line3', 'line4', 'line5', 'line6'])
161
+
162
+ # assert_equal expected, Coverband::Reporters::Base.line_hash(store, key, roots)
163
+ store.expects(:covered_files).returns([key])
164
+ assert_equal expected, Coverband::Reporters::Base.get_current_scov_data_imp(store, roots)
165
+ end
140
166
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require File.expand_path('../test_helper', File.dirname(__FILE__))
4
2
  require 'aws-sdk'
5
3
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require File.expand_path('../test_helper', File.dirname(__FILE__))
4
+ require 'aws-sdk'
4
5
  require File.expand_path('../../lib/coverband/s3_web', File.dirname(__FILE__))
5
6
  require 'rack/test'
6
7
 
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: 2.0.0.alpha1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Mayer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-18 00:00:00.000000000 Z
11
+ date: 2018-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: byebug
140
+ name: redis
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,13 +151,13 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: json
154
+ name: benchmark-ips
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
- type: :runtime
160
+ type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
@@ -165,33 +165,33 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: simplecov
168
+ name: json
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">"
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: 0.11.1
173
+ version: '0'
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">"
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
- version: 0.11.1
180
+ version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: redis
182
+ name: simplecov
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - ">"
186
186
  - !ruby/object:Gem::Version
187
- version: '0'
187
+ version: 0.11.1
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - ">"
193
193
  - !ruby/object:Gem::Version
194
- version: '0'
194
+ version: 0.11.1
195
195
  description: Rack middleware to help measure production code usage (LOC runtime usage)
196
196
  email:
197
197
  - dan@mayerdan.com
@@ -210,7 +210,9 @@ files:
210
210
  - coverband.gemspec
211
211
  - docs/coverband_details.png
212
212
  - docs/coverband_index.png
213
+ - docs/coverband_install.gif
213
214
  - lib/coverband.rb
215
+ - lib/coverband/adapters/base.rb
214
216
  - lib/coverband/adapters/file_store.rb
215
217
  - lib/coverband/adapters/memory_cache_store.rb
216
218
  - lib/coverband/adapters/redis_store.rb
@@ -262,12 +264,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
262
264
  version: '0'
263
265
  required_rubygems_version: !ruby/object:Gem::Requirement
264
266
  requirements:
265
- - - ">"
267
+ - - ">="
266
268
  - !ruby/object:Gem::Version
267
- version: 1.3.1
269
+ version: '0'
268
270
  requirements: []
269
271
  rubyforge_project:
270
- rubygems_version: 2.5.1
272
+ rubygems_version: 2.7.3
271
273
  signing_key:
272
274
  specification_version: 4
273
275
  summary: Rack middleware to help measure production code usage (LOC runtime usage)