coverband 1.5.4 → 2.0.0.alpha
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/.gitignore +3 -0
- data/.travis.yml +3 -0
- data/Gemfile +2 -1
- data/Rakefile +5 -3
- data/coverband.gemspec +27 -23
- data/lib/coverband.rb +10 -14
- data/lib/coverband/adapters/file_store.rb +6 -7
- data/lib/coverband/adapters/memory_cache_store.rb +8 -5
- data/lib/coverband/adapters/redis_store.rb +10 -50
- data/lib/coverband/baseline.rb +5 -5
- data/lib/coverband/collectors/base.rb +140 -0
- data/lib/coverband/collectors/coverage.rb +148 -0
- data/lib/coverband/collectors/trace.rb +100 -0
- data/lib/coverband/configuration.rb +8 -10
- data/lib/coverband/middleware.rb +5 -5
- data/lib/coverband/reporters/base.rb +26 -31
- data/lib/coverband/reporters/console_report.rb +2 -3
- data/lib/coverband/reporters/simple_cov_report.rb +5 -6
- data/lib/coverband/s3_report_writer.rb +7 -8
- data/lib/coverband/s3_web.rb +3 -5
- data/lib/coverband/tasks.rb +23 -26
- data/lib/coverband/version.rb +3 -1
- data/test/benchmarks/benchmark.rake +38 -32
- data/test/benchmarks/dog.rb +3 -3
- data/test/fake_app/basic_rack.rb +4 -2
- data/test/test_helper.rb +17 -11
- data/test/unit/adapters_file_store_test.rb +12 -11
- data/test/unit/adapters_memory_cache_store_test.rb +3 -4
- data/test/unit/adapters_redis_store_test.rb +42 -118
- data/test/unit/baseline_test.rb +17 -20
- data/test/unit/collectors_base_test.rb +96 -0
- data/test/unit/collectors_coverage_test.rb +137 -0
- data/test/unit/collectors_trace_test.rb +96 -0
- data/test/unit/configuration_test.rb +8 -8
- data/test/unit/dog.rb +3 -1
- data/test/unit/middleware_test.rb +70 -61
- data/test/unit/reports_base_test.rb +62 -62
- data/test/unit/reports_console_test.rb +18 -21
- data/test/unit/reports_simple_cov_test.rb +23 -26
- data/test/unit/s3_report_writer_test.rb +6 -8
- data/test/unit/s3_web_test.rb +2 -1
- metadata +45 -25
- data/lib/coverband/base.rb +0 -210
- data/test/unit/base_test.rb +0 -100
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
2
4
|
|
3
5
|
module Coverband
|
4
6
|
class MemoryCacheStoreTest < Test::Unit::TestCase
|
5
|
-
|
6
7
|
def setup
|
7
8
|
Adapters::MemoryCacheStore.reset!
|
8
9
|
@store = mock('store')
|
@@ -46,12 +47,10 @@ module Coverband
|
|
46
47
|
end
|
47
48
|
|
48
49
|
test 'it initializes cache with what is in store' do
|
49
|
-
@store.expects(:covered_lines_for_file).with('file1').returns [3,5]
|
50
|
+
@store.expects(:covered_lines_for_file).with('file1').returns [3, 5]
|
50
51
|
@store.expects(:covered_lines_for_file).with('file2').returns [2]
|
51
52
|
@store.expects(:save_report).with('file2' => { 1 => 1 })
|
52
53
|
@memory_store.save_report data
|
53
54
|
end
|
54
|
-
|
55
55
|
end
|
56
|
-
|
57
56
|
end
|
@@ -1,37 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
2
4
|
|
3
5
|
class RedisTest < Test::Unit::TestCase
|
4
6
|
BASE_KEY = Coverband::Adapters::RedisStore::BASE_KEY
|
5
7
|
|
8
|
+
def example_hash
|
9
|
+
{'1' => '1', '2' => '2'}
|
10
|
+
end
|
11
|
+
|
6
12
|
def setup
|
7
13
|
@redis = Redis.new
|
8
14
|
@redis.flushdb
|
9
|
-
@store = Coverband::Adapters::RedisStore.new(@redis
|
15
|
+
@store = Coverband::Adapters::RedisStore.new(@redis)
|
10
16
|
end
|
11
17
|
|
12
18
|
def test_coverage
|
13
19
|
@redis.sadd(BASE_KEY, 'dog.rb')
|
14
|
-
@
|
15
|
-
|
16
|
-
expected = {'dog.rb' => [1,2]}
|
20
|
+
@store.send(:store_map, "#{BASE_KEY}.dog.rb", example_hash)
|
21
|
+
expected = { 'dog.rb' => example_hash }
|
17
22
|
assert_equal expected, @store.coverage
|
18
23
|
end
|
19
24
|
|
20
25
|
def test_covered_lines_for_file
|
21
|
-
@
|
22
|
-
@
|
23
|
-
assert_equal [1, 2], @store.covered_lines_for_file('dog.rb').sort
|
26
|
+
@store.send(:store_map, "#{BASE_KEY}.dog.rb", example_hash)
|
27
|
+
assert_equal [["1", "1"], ["2", "2"]], @store.covered_lines_for_file('dog.rb').sort
|
24
28
|
end
|
25
29
|
|
26
30
|
def test_covered_lines_for_file__hash
|
27
|
-
@redis.mapped_hmset("#{BASE_KEY}.dog.rb",
|
28
|
-
@store = Coverband::Adapters::RedisStore.new(@redis
|
29
|
-
expected = [[
|
31
|
+
@redis.mapped_hmset("#{BASE_KEY}.dog.rb", '1' => 1, '2' => 2)
|
32
|
+
@store = Coverband::Adapters::RedisStore.new(@redis)
|
33
|
+
expected = [%w[1 1], %w[2 2]]
|
30
34
|
assert_equal expected, @store.covered_lines_for_file('dog.rb').sort
|
31
35
|
end
|
32
36
|
|
33
37
|
def test_covered_lines_when_null
|
34
|
-
|
38
|
+
empty_hash = {}
|
39
|
+
assert_equal empty_hash, @store.covered_lines_for_file('dog.rb')
|
35
40
|
end
|
36
41
|
|
37
42
|
def test_clear
|
@@ -44,121 +49,40 @@ class RedisTest < Test::Unit::TestCase
|
|
44
49
|
|
45
50
|
def test_data
|
46
51
|
{
|
47
|
-
|
48
|
-
|
52
|
+
'/Users/danmayer/projects/cover_band_server/app.rb' => { 54 => 1, 55 => 2 },
|
53
|
+
'/Users/danmayer/projects/cover_band_server/server.rb' => { 5 => 1 }
|
49
54
|
}
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
53
|
-
class RedisStoreTestV3Array < RedisTest
|
54
|
-
|
55
|
-
def setup
|
56
|
-
@redis = Redis.current.tap { |redis|
|
57
|
-
redis.stubs(:sadd).with(anything, anything)
|
58
|
-
redis.stubs(:info).returns({'redis_version' => 3.0})
|
59
|
-
}
|
60
|
-
|
61
|
-
@store = Coverband::Adapters::RedisStore.new(@redis, array: true)
|
62
|
-
end
|
63
|
-
|
64
|
-
test "it stores the files into coverband" do
|
65
|
-
@redis.expects(:sadd).with(BASE_KEY, [
|
66
|
-
'/Users/danmayer/projects/cover_band_server/app.rb',
|
67
|
-
'/Users/danmayer/projects/cover_band_server/server.rb'
|
68
|
-
])
|
69
|
-
|
70
|
-
@store.save_report(test_data)
|
71
|
-
end
|
72
|
-
|
73
|
-
test "it stores the file lines of the file app.rb" do
|
74
|
-
@redis.expects(:sadd).with(
|
75
|
-
"#{BASE_KEY}./Users/danmayer/projects/cover_band_server/app.rb",
|
76
|
-
[54, 55]
|
77
|
-
)
|
78
|
-
|
79
|
-
@store.save_report(test_data)
|
80
|
-
end
|
81
|
-
|
82
|
-
test "it stores the file lines of the file server.rb" do
|
83
|
-
@redis.expects(:sadd).with(
|
84
|
-
"#{BASE_KEY}./Users/danmayer/projects/cover_band_server/server.rb",
|
85
|
-
[5]
|
86
|
-
)
|
87
|
-
|
88
|
-
@store.save_report(test_data)
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
58
|
class RedisStoreTestV3Hash < RedisTest
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
redis.stubs(:sadd).with(anything, anything)
|
98
|
-
redis.stubs(:info).returns({'redis_version' => 3.0})
|
99
|
-
}
|
100
|
-
|
101
|
-
@store = Coverband::Adapters::RedisStore.new(@redis)
|
102
|
-
end
|
103
|
-
|
104
|
-
test "it stores the files into coverband" do
|
105
|
-
@redis.expects(:sadd).with(BASE_KEY, [
|
106
|
-
'/Users/danmayer/projects/cover_band_server/app.rb',
|
107
|
-
'/Users/danmayer/projects/cover_band_server/server.rb'
|
108
|
-
])
|
109
|
-
|
110
|
-
@store.save_report(test_data)
|
111
|
-
end
|
112
|
-
|
113
|
-
test "it stores the file lines of the file app.rb" do
|
114
|
-
@redis.expects(:mapped_hmset).with(
|
115
|
-
"#{BASE_KEY}./Users/danmayer/projects/cover_band_server/app.rb",
|
116
|
-
{'54' => 1, '55' => 2}
|
117
|
-
)
|
118
|
-
@redis.expects(:mapped_hmset).with(
|
119
|
-
"#{BASE_KEY}./Users/danmayer/projects/cover_band_server/server.rb",
|
120
|
-
{'5' => 1}
|
121
|
-
)
|
122
|
-
|
123
|
-
@store.save_report(test_data)
|
124
|
-
end
|
125
|
-
|
126
|
-
end
|
127
|
-
|
128
|
-
class RedisStoreTestV223 < RedisTest
|
129
|
-
|
130
|
-
def setup
|
131
|
-
@redis = Redis.current.tap { |redis|
|
132
|
-
redis.stubs(:sadd).with(anything, anything)
|
133
|
-
redis.stubs(:info).returns({'redis_version' => "2.2.3"})
|
134
|
-
}
|
135
|
-
|
136
|
-
@store = Coverband::Adapters::RedisStore.new(@redis, array: true)
|
137
|
-
end
|
138
|
-
|
139
|
-
test "it store the files with separate calls into coverband" do
|
140
|
-
@redis.expects(:sadd).with(BASE_KEY, '/Users/danmayer/projects/cover_band_server/app.rb')
|
141
|
-
@redis.expects(:sadd).with(BASE_KEY, '/Users/danmayer/projects/cover_band_server/server.rb')
|
142
|
-
|
143
|
-
@store.save_report(test_data)
|
59
|
+
def setup
|
60
|
+
@redis = Redis.current.tap do |redis|
|
61
|
+
redis.stubs(:sadd).with(anything, anything)
|
144
62
|
end
|
145
|
-
end
|
146
63
|
|
147
|
-
|
64
|
+
@store = Coverband::Adapters::RedisStore.new(@redis)
|
65
|
+
end
|
148
66
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
67
|
+
test 'it stores the files into coverband' do
|
68
|
+
@redis.expects(:sadd).with(BASE_KEY, [
|
69
|
+
'/Users/danmayer/projects/cover_band_server/app.rb',
|
70
|
+
'/Users/danmayer/projects/cover_band_server/server.rb'
|
71
|
+
])
|
154
72
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
test "it store the files with separate calls into coverband" do
|
159
|
-
@redis.expects(:sadd).with(BASE_KEY, '/Users/danmayer/projects/cover_band_server/app.rb')
|
160
|
-
@redis.expects(:sadd).with(BASE_KEY, '/Users/danmayer/projects/cover_band_server/server.rb')
|
73
|
+
@store.save_report(test_data)
|
74
|
+
end
|
161
75
|
|
162
|
-
|
163
|
-
|
76
|
+
test 'it stores the file lines of the file app.rb' do
|
77
|
+
@redis.expects(:mapped_hmset).with(
|
78
|
+
"#{BASE_KEY}./Users/danmayer/projects/cover_band_server/app.rb",
|
79
|
+
'54' => 1, '55' => 2
|
80
|
+
)
|
81
|
+
@redis.expects(:mapped_hmset).with(
|
82
|
+
"#{BASE_KEY}./Users/danmayer/projects/cover_band_server/server.rb",
|
83
|
+
'5' => 1
|
84
|
+
)
|
85
|
+
|
86
|
+
@store.save_report(test_data)
|
87
|
+
end
|
164
88
|
end
|
data/test/unit/baseline_test.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
2
4
|
|
3
5
|
class ReporterTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
test "record baseline" do
|
6
|
+
test 'record baseline' do
|
6
7
|
Coverband.configure do |config|
|
7
8
|
config.redis = nil
|
8
9
|
config.store = nil
|
@@ -10,20 +11,20 @@ class ReporterTest < Test::Unit::TestCase
|
|
10
11
|
config.coverage_file = '/tmp/fake_file.json'
|
11
12
|
end
|
12
13
|
Coverage.expects(:start).returns(true).at_least_once
|
13
|
-
Coverage.expects(:result).returns(
|
14
|
+
Coverage.expects(:result).returns('fake' => [0, 1]).at_least_once
|
14
15
|
File.expects(:open).once
|
15
16
|
|
16
17
|
File.expects(:exist?).at_least_once.returns(true)
|
17
|
-
expected = {
|
18
|
+
expected = { 'filename.rb' => [0, nil, 1] }
|
18
19
|
fake_file_data = expected.to_json
|
19
20
|
File.expects(:read).at_least_once.returns(fake_file_data)
|
20
21
|
|
21
|
-
Coverband::Baseline.record
|
22
|
-
#nothing
|
23
|
-
|
22
|
+
Coverband::Baseline.record do
|
23
|
+
# nothing
|
24
|
+
end
|
24
25
|
end
|
25
26
|
|
26
|
-
test
|
27
|
+
test 'parse baseline' do
|
27
28
|
Coverband.configure do |config|
|
28
29
|
config.redis = nil
|
29
30
|
config.store = nil
|
@@ -31,14 +32,14 @@ class ReporterTest < Test::Unit::TestCase
|
|
31
32
|
config.coverage_file = '/tmp/fake_file.json'
|
32
33
|
end
|
33
34
|
File.expects(:exist?).at_least_once.returns(true)
|
34
|
-
expected = {
|
35
|
+
expected = { 'filename.rb' => [0, nil, 1] }
|
35
36
|
fake_file_data = expected.to_json
|
36
37
|
File.expects(:read).at_least_once.returns(fake_file_data)
|
37
38
|
results = Coverband::Baseline.parse_baseline
|
38
|
-
assert_equal(results,
|
39
|
+
assert_equal(results, 'filename.rb' => [0, nil, 1])
|
39
40
|
end
|
40
41
|
|
41
|
-
test
|
42
|
+
test 'exclude_files' do
|
42
43
|
Coverband.configure do |config|
|
43
44
|
config.redis = nil
|
44
45
|
config.store = nil
|
@@ -48,17 +49,13 @@ class ReporterTest < Test::Unit::TestCase
|
|
48
49
|
end
|
49
50
|
root = Coverband.configuration.root
|
50
51
|
files = [root + '/ignored_file.rb', root + '/fakefile.rb']
|
51
|
-
expected_files =[root + '/fakefile.rb']
|
52
|
+
expected_files = [root + '/fakefile.rb']
|
52
53
|
assert_equal(expected_files, Coverband::Baseline.exclude_files(files))
|
53
54
|
end
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
results = {"fake_file.rb" => [1,nil,0,2]}
|
59
|
-
expected = {"fake_file.rb"=>{1=>1, 3=>0, 4=>2}}
|
55
|
+
|
56
|
+
test 'convert_coverage_format' do
|
57
|
+
results = { 'fake_file.rb' => [1, nil, 0, 2] }
|
58
|
+
expected = { 'fake_file.rb' => { 1 => 1, 3 => 0, 4 => 2 } }
|
60
59
|
assert_equal(expected, Coverband::Baseline.convert_coverage_format(results))
|
61
60
|
end
|
62
|
-
|
63
|
-
|
64
61
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
4
|
+
require File.expand_path('./dog', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
class CollectorsBaseTest < Test::Unit::TestCase
|
7
|
+
test 'defaults to a redis store' do
|
8
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
9
|
+
assert_equal Coverband::Adapters::RedisStore, coverband.instance_variable_get('@store').class
|
10
|
+
end
|
11
|
+
|
12
|
+
test 'configure memory caching' do
|
13
|
+
Coverband.configuration.memory_caching = true
|
14
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
15
|
+
assert_equal Coverband::Adapters::MemoryCacheStore, coverband.instance_variable_get('@store').class
|
16
|
+
Coverband.configuration.memory_caching = false
|
17
|
+
end
|
18
|
+
|
19
|
+
test 'start should enable coverage' do
|
20
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
21
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
22
|
+
coverband.expects(:record_coverage).once
|
23
|
+
coverband.start
|
24
|
+
assert_equal true, coverband.instance_variable_get('@enabled')
|
25
|
+
end
|
26
|
+
|
27
|
+
test 'stop should disable coverage' do
|
28
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
29
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
30
|
+
coverband.expects(:record_coverage).once
|
31
|
+
coverband.start
|
32
|
+
assert_equal true, coverband.instance_variable_get('@enabled')
|
33
|
+
coverband.stop
|
34
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
35
|
+
assert_equal false, coverband.instance_variable_get('@tracer_set')
|
36
|
+
end
|
37
|
+
|
38
|
+
test 'allow for sampling with a block and enable when 100 percent sample' do
|
39
|
+
logger = Logger.new(STDOUT)
|
40
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
41
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
42
|
+
coverband.instance_variable_set('@verbose', true)
|
43
|
+
coverband.instance_variable_set('@logger', logger)
|
44
|
+
coverband.instance_variable_set('@store', nil)
|
45
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
46
|
+
logger.expects(:info).at_least_once
|
47
|
+
coverband.sample { 1 + 1 }
|
48
|
+
assert_equal true, coverband.instance_variable_get('@enabled')
|
49
|
+
end
|
50
|
+
|
51
|
+
test 'allow reporting with start stop save' do
|
52
|
+
logger = Logger.new(STDOUT)
|
53
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
54
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
55
|
+
coverband.instance_variable_set('@verbose', true)
|
56
|
+
coverband.instance_variable_set('@logger', logger)
|
57
|
+
coverband.instance_variable_set('@store', nil)
|
58
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
59
|
+
logger.expects(:info).at_least_once
|
60
|
+
coverband.start
|
61
|
+
logger.info(1 + 1)
|
62
|
+
coverband.stop
|
63
|
+
coverband.save
|
64
|
+
end
|
65
|
+
|
66
|
+
test 'allow reporting to redis start stop save' do
|
67
|
+
dog_file = File.expand_path('./dog.rb', File.dirname(__FILE__))
|
68
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
69
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
70
|
+
coverband.instance_variable_set('@verbose', true)
|
71
|
+
Coverband.configuration.logger.stubs('info')
|
72
|
+
store = Coverband::Adapters::RedisStore.new(Redis.new)
|
73
|
+
coverband.instance_variable_set('@store', store)
|
74
|
+
store.expects(:save_report).once.with(has_entries(dog_file => { 5 => 5 }))
|
75
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
76
|
+
coverband.start
|
77
|
+
5.times { Dog.new.bark }
|
78
|
+
coverband.stop
|
79
|
+
coverband.save
|
80
|
+
end
|
81
|
+
|
82
|
+
test 'tracer should count line numbers' do
|
83
|
+
dog_file = File.expand_path('./dog.rb', File.dirname(__FILE__))
|
84
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
85
|
+
coverband.start
|
86
|
+
100.times { Dog.new.bark }
|
87
|
+
assert_equal 100, coverband.instance_variable_get('@file_line_usage')[dog_file][5]
|
88
|
+
coverband.stop
|
89
|
+
coverband.save
|
90
|
+
end
|
91
|
+
|
92
|
+
test 'sample should return the result of the block' do
|
93
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
94
|
+
assert_equal 2, coverband.sample { 1 + 1 }
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
4
|
+
require File.expand_path('./dog', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3.0')
|
7
|
+
class CollectorsCoverageTest < Test::Unit::TestCase
|
8
|
+
attr_accessor :coverband
|
9
|
+
|
10
|
+
def setup
|
11
|
+
Thread.current[:coverband_instance] = nil
|
12
|
+
Coverband.configure do |config|
|
13
|
+
config.collector = 'coverage'
|
14
|
+
end
|
15
|
+
@coverband = Coverband::Collectors::Base.instance.reset_instance
|
16
|
+
end
|
17
|
+
|
18
|
+
def teardown
|
19
|
+
Thread.current[:coverband_instance] = nil
|
20
|
+
Coverband.configure do |config|
|
21
|
+
config.collector = 'trace'
|
22
|
+
end
|
23
|
+
@coverband = Coverband::Collectors::Base.instance.reset_instance
|
24
|
+
end
|
25
|
+
|
26
|
+
test 'gets coverage instance' do
|
27
|
+
assert_equal Coverband::Collectors::Coverage, coverband.class
|
28
|
+
end
|
29
|
+
|
30
|
+
test 'defaults to a redis store' do
|
31
|
+
assert_equal Coverband::Adapters::RedisStore, coverband.instance_variable_get('@store').class
|
32
|
+
end
|
33
|
+
|
34
|
+
test 'configure memory caching' do
|
35
|
+
Coverband.configuration.memory_caching = true
|
36
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
37
|
+
assert_equal Coverband::Adapters::MemoryCacheStore, coverband.instance_variable_get('@store').class
|
38
|
+
Coverband.configuration.memory_caching = false
|
39
|
+
end
|
40
|
+
|
41
|
+
test 'start should enable coverage' do
|
42
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
43
|
+
coverband.expects(:record_coverage).once
|
44
|
+
coverband.start
|
45
|
+
assert_equal true, coverband.instance_variable_get('@enabled')
|
46
|
+
end
|
47
|
+
|
48
|
+
test 'stop should disable coverage' do
|
49
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
50
|
+
coverband.expects(:record_coverage).once
|
51
|
+
coverband.start
|
52
|
+
assert_equal true, coverband.instance_variable_get('@enabled')
|
53
|
+
coverband.stop
|
54
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
55
|
+
end
|
56
|
+
|
57
|
+
test 'allow for sampling with a block and enable when 100 percent sample' do
|
58
|
+
logger = Logger.new(STDOUT)
|
59
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
60
|
+
coverband.instance_variable_set('@verbose', true)
|
61
|
+
coverband.instance_variable_set('@logger', logger)
|
62
|
+
coverband.instance_variable_set('@store', nil)
|
63
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
64
|
+
logger.expects(:info).at_least_once
|
65
|
+
coverband.sample { 1 + 1 }
|
66
|
+
assert_equal true, coverband.instance_variable_get('@enabled')
|
67
|
+
end
|
68
|
+
|
69
|
+
test 'allow reporting with start stop save' do
|
70
|
+
logger = Logger.new(STDOUT)
|
71
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
72
|
+
coverband.instance_variable_set('@verbose', true)
|
73
|
+
coverband.instance_variable_set('@logger', logger)
|
74
|
+
coverband.instance_variable_set('@store', nil)
|
75
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
76
|
+
logger.expects(:info).at_least_once
|
77
|
+
coverband.start
|
78
|
+
logger.info(1 + 1)
|
79
|
+
coverband.stop
|
80
|
+
coverband.save
|
81
|
+
end
|
82
|
+
|
83
|
+
test 'allow reporting to redis start stop save' do
|
84
|
+
dog_file = File.expand_path('./dog.rb', File.dirname(__FILE__))
|
85
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
86
|
+
coverband.instance_variable_set('@verbose', true)
|
87
|
+
Coverband.configuration.logger.stubs('info')
|
88
|
+
store = Coverband::Adapters::RedisStore.new(Redis.new)
|
89
|
+
coverband.instance_variable_set('@store', store)
|
90
|
+
|
91
|
+
prior = Coverage.peek_result[dog_file].dup
|
92
|
+
prior[4] = prior[4] + 5
|
93
|
+
expected = {}
|
94
|
+
prior.each_with_index do |count, index|
|
95
|
+
expected[(index + 1)] = count if count
|
96
|
+
end
|
97
|
+
|
98
|
+
store.expects(:save_report).once.with(has_entries(dog_file => expected))
|
99
|
+
assert_equal false, coverband.instance_variable_get('@enabled')
|
100
|
+
coverband.start
|
101
|
+
5.times { Dog.new.bark }
|
102
|
+
coverband.stop
|
103
|
+
coverband.save
|
104
|
+
end
|
105
|
+
|
106
|
+
test 'coverage should count line numbers only the new calls' do
|
107
|
+
dog_file = File.expand_path('./dog.rb', File.dirname(__FILE__))
|
108
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
109
|
+
coverband.instance_variable_set('@store', nil)
|
110
|
+
original_count = Coverage.peek_result[dog_file][4]
|
111
|
+
coverband.start
|
112
|
+
100.times { Dog.new.bark }
|
113
|
+
coverband.stop
|
114
|
+
coverband.save
|
115
|
+
assert_equal (original_count + 100), coverband.instance_variable_get('@file_line_usage')[dog_file][5]
|
116
|
+
50.times { Dog.new.bark }
|
117
|
+
coverband.save
|
118
|
+
assert_equal 50, coverband.instance_variable_get('@file_line_usage')[dog_file][5]
|
119
|
+
end
|
120
|
+
|
121
|
+
test 'coverage should count line numbers' do
|
122
|
+
dog_file = File.expand_path('./dog.rb', File.dirname(__FILE__))
|
123
|
+
coverband.instance_variable_set('@sample_percentage', 100.0)
|
124
|
+
coverband.instance_variable_set('@store', nil)
|
125
|
+
original_count = Coverage.peek_result[dog_file][4]
|
126
|
+
coverband.start
|
127
|
+
100.times { Dog.new.bark }
|
128
|
+
coverband.stop
|
129
|
+
coverband.save
|
130
|
+
assert_equal (original_count + 100), coverband.instance_variable_get('@file_line_usage')[dog_file][5]
|
131
|
+
end
|
132
|
+
|
133
|
+
test 'sample should return the result of the block' do
|
134
|
+
assert_equal 2, coverband.sample { 1 + 1 }
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|