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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.travis.yml +3 -0
  4. data/Gemfile +2 -1
  5. data/Rakefile +5 -3
  6. data/coverband.gemspec +27 -23
  7. data/lib/coverband.rb +10 -14
  8. data/lib/coverband/adapters/file_store.rb +6 -7
  9. data/lib/coverband/adapters/memory_cache_store.rb +8 -5
  10. data/lib/coverband/adapters/redis_store.rb +10 -50
  11. data/lib/coverband/baseline.rb +5 -5
  12. data/lib/coverband/collectors/base.rb +140 -0
  13. data/lib/coverband/collectors/coverage.rb +148 -0
  14. data/lib/coverband/collectors/trace.rb +100 -0
  15. data/lib/coverband/configuration.rb +8 -10
  16. data/lib/coverband/middleware.rb +5 -5
  17. data/lib/coverband/reporters/base.rb +26 -31
  18. data/lib/coverband/reporters/console_report.rb +2 -3
  19. data/lib/coverband/reporters/simple_cov_report.rb +5 -6
  20. data/lib/coverband/s3_report_writer.rb +7 -8
  21. data/lib/coverband/s3_web.rb +3 -5
  22. data/lib/coverband/tasks.rb +23 -26
  23. data/lib/coverband/version.rb +3 -1
  24. data/test/benchmarks/benchmark.rake +38 -32
  25. data/test/benchmarks/dog.rb +3 -3
  26. data/test/fake_app/basic_rack.rb +4 -2
  27. data/test/test_helper.rb +17 -11
  28. data/test/unit/adapters_file_store_test.rb +12 -11
  29. data/test/unit/adapters_memory_cache_store_test.rb +3 -4
  30. data/test/unit/adapters_redis_store_test.rb +42 -118
  31. data/test/unit/baseline_test.rb +17 -20
  32. data/test/unit/collectors_base_test.rb +96 -0
  33. data/test/unit/collectors_coverage_test.rb +137 -0
  34. data/test/unit/collectors_trace_test.rb +96 -0
  35. data/test/unit/configuration_test.rb +8 -8
  36. data/test/unit/dog.rb +3 -1
  37. data/test/unit/middleware_test.rb +70 -61
  38. data/test/unit/reports_base_test.rb +62 -62
  39. data/test/unit/reports_console_test.rb +18 -21
  40. data/test/unit/reports_simple_cov_test.rb +23 -26
  41. data/test/unit/s3_report_writer_test.rb +6 -8
  42. data/test/unit/s3_web_test.rb +2 -1
  43. metadata +45 -25
  44. data/lib/coverband/base.rb +0 -210
  45. 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, array: true)
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
- @redis.sadd("#{BASE_KEY}.dog.rb", 1)
15
- @redis.sadd("#{BASE_KEY}.dog.rb", 2)
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
- @redis.sadd("#{BASE_KEY}.dog.rb", 1)
22
- @redis.sadd("#{BASE_KEY}.dog.rb", 2)
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", {"1" => 1, "2" => 2})
28
- @store = Coverband::Adapters::RedisStore.new(@redis, array: false)
29
- expected = [["1", "1"], ["2", "2"]]
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
- assert_equal @store.covered_lines_for_file('dog.rb'), []
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
- "/Users/danmayer/projects/cover_band_server/app.rb" => { 54 => 1, 55 => 2 },
48
- "/Users/danmayer/projects/cover_band_server/server.rb" => { 5 => 1 }
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
- def setup
96
- @redis = Redis.current.tap { |redis|
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
- class RedisStoreTestV222 < RedisTest
64
+ @store = Coverband::Adapters::RedisStore.new(@redis)
65
+ end
148
66
 
149
- def setup
150
- @redis = Redis.current.tap { |redis|
151
- redis.stubs(:sadd).with(anything, anything)
152
- redis.stubs(:info).returns({'redis_version' => "2.2.2"})
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
- @store = Coverband::Adapters::RedisStore.new(@redis, array: true)
156
- end
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
- @store.save_report(test_data)
163
- end
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
@@ -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({'fake' => [0,1]}).at_least_once
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 = {"filename.rb" => [0,nil,1]}
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 "parse baseline" do
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 = {"filename.rb" => [0,nil,1]}
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, {"filename.rb" => [0,nil,1]})
39
+ assert_equal(results, 'filename.rb' => [0, nil, 1])
39
40
  end
40
41
 
41
- test "exclude_files" do
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
- # todo test redis and file stores baseline
56
-
57
- test "convert_coverage_format" do
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