coverband 1.5.4 → 2.0.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- 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
|