coverband 4.2.1 → 4.2.2

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -9
  3. data/CODE_OF_CONDUCT.md +76 -0
  4. data/README.md +32 -28
  5. data/changes.md +31 -11
  6. data/coverband.gemspec +0 -5
  7. data/lib/coverband/adapters/base.rb +8 -13
  8. data/lib/coverband/adapters/file_store.rb +10 -4
  9. data/lib/coverband/adapters/hash_redis_store.rb +182 -0
  10. data/lib/coverband/adapters/redis_store.rb +15 -1
  11. data/lib/coverband/collectors/coverage.rb +5 -7
  12. data/lib/coverband/collectors/view_tracker.rb +124 -0
  13. data/lib/coverband/configuration.rb +21 -1
  14. data/lib/coverband/integrations/background.rb +2 -1
  15. data/lib/coverband/reporters/base.rb +4 -5
  16. data/lib/coverband/reporters/console_report.rb +1 -0
  17. data/lib/coverband/reporters/web.rb +6 -0
  18. data/lib/coverband/utils/absolute_file_converter.rb +47 -0
  19. data/lib/coverband/utils/file_hasher.rb +16 -0
  20. data/lib/coverband/utils/html_formatter.rb +12 -0
  21. data/lib/coverband/utils/railtie.rb +15 -3
  22. data/lib/coverband/utils/relative_file_converter.rb +41 -0
  23. data/lib/coverband/utils/s3_report.rb +2 -2
  24. data/lib/coverband/utils/source_file.rb +1 -3
  25. data/lib/coverband/utils/tasks.rb +1 -0
  26. data/lib/coverband/version.rb +5 -1
  27. data/lib/coverband.rb +7 -1
  28. data/public/application.css +6 -6
  29. data/test/benchmarks/benchmark.rake +25 -49
  30. data/test/benchmarks/init_rails.rake +10 -0
  31. data/test/coverband/adapters/hash_redis_store_test.rb +190 -0
  32. data/test/coverband/adapters/redis_store_test.rb +90 -88
  33. data/test/coverband/collectors/coverage_test.rb +6 -2
  34. data/test/coverband/collectors/view_tracker_test.rb +77 -0
  35. data/test/coverband/integrations/resque_worker_test.rb +2 -3
  36. data/test/coverband/reporters/base_test.rb +1 -78
  37. data/test/coverband/reporters/console_test.rb +1 -4
  38. data/test/coverband/reporters/html_test.rb +9 -9
  39. data/test/coverband/utils/absolute_file_converter_test.rb +56 -0
  40. data/test/coverband/utils/file_hasher_test.rb +29 -0
  41. data/test/coverband/utils/relative_file_converter_test.rb +39 -0
  42. data/test/forked/rails_rake_full_stack_test.rb +9 -1
  43. data/test/integration/full_stack_test.rb +1 -2
  44. data/test/test_helper.rb +6 -7
  45. data/test/unique_files.rb +1 -1
  46. data/views/layout.erb +1 -20
  47. data/views/nav.erb +35 -0
  48. data/views/view_tracker.erb +37 -0
  49. metadata +22 -31
  50. data/lib/coverband/utils/file_path_helper.rb +0 -68
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails'
4
+ require 'coverband'
5
+
6
+ desc 'Initialize rails'
7
+ task 'init_rails' do
8
+ Coverband.configure("./test/rails#{Rails::VERSION::MAJOR}_dummy/config/coverband.rb")
9
+ require "./test/rails#{Rails::VERSION::MAJOR}_dummy/config/environment"
10
+ end
@@ -0,0 +1,190 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
4
+
5
+ class HashRedisStoreTest < Minitest::Test
6
+ REDIS_STORAGE_FORMAT_VERSION = Coverband::Adapters::HashRedisStore::REDIS_STORAGE_FORMAT_VERSION
7
+
8
+ class MockRelativeFileConverter
9
+ def self.convert(file)
10
+ file.sub('app_path/', './')
11
+ end
12
+ end
13
+
14
+ def setup
15
+ super
16
+ @redis = Redis.new
17
+ # FIXME: remove dependency on configuration and instead pass this in as an argument
18
+ Coverband.configure do |config|
19
+ config.root_paths = ['app_path/']
20
+ end
21
+ @store = Coverband::Adapters::HashRedisStore.new(@redis, redis_namespace: 'coverband_test', relative_file_converter: MockRelativeFileConverter)
22
+ @store.clear!
23
+ Coverband.configuration.store = @store
24
+ end
25
+
26
+ def mock_time(time = Time.now)
27
+ Time.stubs(:now).returns(time)
28
+ time
29
+ end
30
+
31
+ def test_no_coverage
32
+ @store.save_report({})
33
+ assert_equal({}, @store.coverage)
34
+ end
35
+
36
+ class UnsupportedRedis
37
+ def info
38
+ { 'redis_version' => '2.5.0' }
39
+ end
40
+ end
41
+
42
+ def test_unsupported_redis
43
+ assert_raises RuntimeError do
44
+ Coverband::Adapters::HashRedisStore.new(UnsupportedRedis.new)
45
+ end
46
+ end
47
+
48
+ def test_coverage_for_file
49
+ yesterday = DateTime.now.prev_day.to_time
50
+ today = Time.now
51
+ mock_time(yesterday)
52
+ mock_file_hash
53
+ @store.save_report(
54
+ 'app_path/dog.rb' => [0, 1, 2]
55
+ )
56
+ assert_equal(
57
+ {
58
+ 'first_updated_at' => yesterday.to_i,
59
+ 'last_updated_at' => yesterday.to_i,
60
+ 'data' => [0, 1, 2]
61
+ },
62
+ @store.coverage['./dog.rb']
63
+ )
64
+ mock_time(today)
65
+ @store.save_report(
66
+ 'app_path/dog.rb' => [1, 1, 0]
67
+ )
68
+ assert_equal(
69
+ {
70
+ 'first_updated_at' => yesterday.to_i,
71
+ 'last_updated_at' => today.to_i,
72
+ 'data' => [1, 2, 2]
73
+ },
74
+ @store.coverage['./dog.rb']
75
+ )
76
+ end
77
+
78
+ def test_ttl_set
79
+ mock_file_hash(hash: 'abcd')
80
+ @store = Coverband::Adapters::HashRedisStore.new(@redis, redis_namespace: 'coverband_test', ttl: 3600, relative_file_converter: MockRelativeFileConverter)
81
+ @store.save_report(
82
+ 'app_path/dog.rb' => [0, 1, 2]
83
+ )
84
+ assert_operator(@redis.ttl("#{REDIS_STORAGE_FORMAT_VERSION}.coverband_test.runtime../dog.rb.abcd"), :>, 0)
85
+ end
86
+
87
+ def test_no_ttl_set
88
+ mock_file_hash(hash: 'abcd')
89
+ @store = Coverband::Adapters::HashRedisStore.new(@redis, redis_namespace: 'coverband_test', ttl: nil, relative_file_converter: MockRelativeFileConverter)
90
+ @store.save_report(
91
+ 'app_path/dog.rb' => [0, 1, 2]
92
+ )
93
+ assert_equal(-1, @redis.ttl("#{REDIS_STORAGE_FORMAT_VERSION}.coverband_test.runtime../dog.rb.abcd"))
94
+ end
95
+
96
+ def test_coverage_for_multiple_files
97
+ current_time = mock_time
98
+ mock_file_hash
99
+ data = {
100
+ 'app_path/dog.rb' => [0, nil, 1, 2],
101
+ 'app_path/cat.rb' => [1, 2, 0, 1, 5],
102
+ 'app_path/ferrit.rb' => [1, 5, nil, 2, nil]
103
+ }
104
+ @store.save_report(data)
105
+ coverage = @store.coverage
106
+ assert_equal(
107
+ {
108
+ 'first_updated_at' => current_time.to_i,
109
+ 'last_updated_at' => current_time.to_i,
110
+ 'data' => [0, nil, 1, 2]
111
+ }, @store.coverage['./dog.rb']
112
+ )
113
+ assert_equal [1, 2, 0, 1, 5], @store.coverage['./cat.rb']['data']
114
+ assert_equal [1, 5, nil, 2, nil], @store.coverage['./ferrit.rb']['data']
115
+ end
116
+
117
+ def test_file_hash_change
118
+ mock_file_hash(hash: 'abc')
119
+ @store.save_report('app_path/dog.rb' => [0, nil, 1, 2])
120
+ coverage = @store.coverage
121
+ assert_equal [0, nil, 1, 2], @store.coverage['./dog.rb']['data']
122
+ @store.instance_eval { @file_hash_cache = {} }
123
+ mock_file_hash(hash: '123')
124
+ $debug = true
125
+ assert_nil @store.coverage['./dog.rb']
126
+ end
127
+
128
+ def test_type
129
+ mock_file_hash
130
+ @store.type = :eager_loading
131
+ data = {
132
+ 'app_path/dog.rb' => [0, nil, 1, 2]
133
+ }
134
+ @store.save_report(data)
135
+ assert_equal 1, @store.coverage.length
136
+ assert_equal [0, nil, 1, 2], @store.coverage['./dog.rb']['data']
137
+ @store.type = Coverband::RUNTIME_TYPE
138
+ data = {
139
+ 'app_path/cat.rb' => [1, 2, 0, 1, 5]
140
+ }
141
+ @store.save_report(data)
142
+ assert_equal 1, @store.coverage.length
143
+ assert_equal [1, 2, 0, 1, 5], @store.coverage['./cat.rb']['data']
144
+ end
145
+
146
+ def test_coverage_type
147
+ mock_file_hash
148
+ @store.type = :eager_loading
149
+ data = {
150
+ 'app_path/dog.rb' => [0, nil, 1, 2]
151
+ }
152
+ @store.save_report(data)
153
+ @store.type = Coverband::RUNTIME_TYPE
154
+ assert_equal [0, nil, 1, 2], @store.coverage(:eager_loading)['./dog.rb']['data']
155
+ end
156
+
157
+ def test_clear
158
+ mock_file_hash
159
+ @store.type = Coverband::EAGER_TYPE
160
+ data = {
161
+ 'app_path/dog.rb' => [0, nil, 1, 2]
162
+ }
163
+ @store.save_report(data)
164
+ assert_equal 1, @store.coverage.length
165
+ @store.type = Coverband::RUNTIME_TYPE
166
+ data = {
167
+ 'app_path/cat.rb' => [1, 2, 0, 1, 5]
168
+ }
169
+ @store.save_report(data)
170
+ assert_equal 1, @store.coverage.length
171
+ @redis.set('random', 'data')
172
+ @store.clear!
173
+ @store.type = Coverband::RUNTIME_TYPE
174
+ assert @store.coverage.empty?
175
+ @store.type = :eager_loading
176
+ assert @store.coverage.empty?
177
+ assert_equal 'data', @redis.get('random')
178
+ end
179
+
180
+ def test_clear_file
181
+ mock_file_hash
182
+ @store.type = :eager_loading
183
+ @store.save_report('app_path/dog.rb' => [0, 1, 1])
184
+ @store.type = Coverband::RUNTIME_TYPE
185
+ @store.save_report('app_path/dog.rb' => [1, 0, 1])
186
+ assert_equal [1, 1, 2], @store.get_coverage_report[:merged]['./dog.rb']['data']
187
+ @store.clear_file!('app_path/dog.rb')
188
+ assert_nil @store.get_coverage_report[:merged]['./dog.rb']
189
+ end
190
+ end
@@ -2,108 +2,110 @@
2
2
 
3
3
  require File.expand_path('../../test_helper', File.dirname(__FILE__))
4
4
 
5
- class RedisTest < Minitest::Test
6
- REDIS_STORAGE_FORMAT_VERSION = Coverband::Adapters::RedisStore::REDIS_STORAGE_FORMAT_VERSION
5
+ unless ENV['COVERBAND_HASH_REDIS_STORE']
6
+ class RedisTest < Minitest::Test
7
+ REDIS_STORAGE_FORMAT_VERSION = Coverband::Adapters::RedisStore::REDIS_STORAGE_FORMAT_VERSION
7
8
 
8
- def setup
9
- super
10
- Coverband.configuration.redis_namespace = 'coverband_test'
11
- @redis = Redis.new
12
- @store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
13
- Coverband.configuration.store = @store
14
- @store.clear!
15
- end
16
-
17
- def test_coverage
18
- mock_file_hash
19
- expected = basic_coverage
20
- @store.save_report(expected)
21
- assert_equal expected.keys, @store.coverage.keys
22
- @store.coverage.each_pair do |key, data|
23
- assert_equal expected[key], data['data']
9
+ def setup
10
+ super
11
+ Coverband.configuration.redis_namespace = 'coverband_test'
12
+ @redis = Redis.new
13
+ @store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
14
+ Coverband.configuration.store = @store
15
+ @store.clear!
24
16
  end
25
- end
26
17
 
27
- def test_coverage_increments
28
- mock_file_hash
29
- expected = basic_coverage.dup
30
- @store.save_report(basic_coverage.dup)
31
- assert_equal expected.keys, @store.coverage.keys
32
- @store.coverage.each_pair do |key, data|
33
- assert_equal expected[key], data['data']
18
+ def test_coverage
19
+ mock_file_hash
20
+ expected = basic_coverage
21
+ @store.save_report(expected)
22
+ assert_equal expected.keys, @store.coverage.keys
23
+ @store.coverage.each_pair do |key, data|
24
+ assert_equal expected[key], data['data']
25
+ end
34
26
  end
35
- @store.save_report(basic_coverage.dup)
36
- assert_equal [0, 2, 4], @store.coverage['app_path/dog.rb']['data']
37
- end
38
27
 
39
- def test_store_coverage_by_type
40
- mock_file_hash
41
- expected = basic_coverage
42
- @store.type = :eager_loading
43
- @store.save_report(expected)
44
- assert_equal expected.keys, @store.coverage.keys
45
- @store.coverage.each_pair do |key, data|
46
- assert_equal expected[key], data['data']
28
+ def test_coverage_increments
29
+ mock_file_hash
30
+ expected = basic_coverage.dup
31
+ @store.save_report(basic_coverage.dup)
32
+ assert_equal expected.keys, @store.coverage.keys
33
+ @store.coverage.each_pair do |key, data|
34
+ assert_equal expected[key], data['data']
35
+ end
36
+ @store.save_report(basic_coverage.dup)
37
+ assert_equal [0, 2, 4], @store.coverage['app_path/dog.rb']['data']
47
38
  end
48
39
 
49
- @store.type = Coverband::RUNTIME_TYPE
50
- assert_equal [], @store.coverage.keys
51
- end
40
+ def test_store_coverage_by_type
41
+ mock_file_hash
42
+ expected = basic_coverage
43
+ @store.type = :eager_loading
44
+ @store.save_report(expected)
45
+ assert_equal expected.keys, @store.coverage.keys
46
+ @store.coverage.each_pair do |key, data|
47
+ assert_equal expected[key], data['data']
48
+ end
52
49
 
53
- def test_merged_coverage_with_types
54
- mock_file_hash
55
- assert_equal Coverband::RUNTIME_TYPE, @store.type
56
- @store.type = :eager_loading
57
- @store.save_report('app_path/dog.rb' => [0, 1, 1])
58
- @store.type = Coverband::RUNTIME_TYPE
59
- @store.save_report('app_path/dog.rb' => [1, 0, 1])
60
- assert_equal [1, 1, 2], @store.get_coverage_report[:merged]['app_path/dog.rb']['data']
61
- assert_equal Coverband::RUNTIME_TYPE, @store.type
62
- end
50
+ @store.type = Coverband::RUNTIME_TYPE
51
+ assert_equal [], @store.coverage.keys
52
+ end
63
53
 
64
- def test_coverage_for_file
65
- mock_file_hash
66
- expected = basic_coverage
67
- @store.save_report(expected)
68
- assert_equal example_line, @store.coverage['app_path/dog.rb']['data']
69
- end
54
+ def test_merged_coverage_with_types
55
+ mock_file_hash
56
+ assert_equal Coverband::RUNTIME_TYPE, @store.type
57
+ @store.type = :eager_loading
58
+ @store.save_report('app_path/dog.rb' => [0, 1, 1])
59
+ @store.type = Coverband::RUNTIME_TYPE
60
+ @store.save_report('app_path/dog.rb' => [1, 0, 1])
61
+ assert_equal [1, 1, 2], @store.get_coverage_report[:merged]['app_path/dog.rb']['data']
62
+ assert_equal Coverband::RUNTIME_TYPE, @store.type
63
+ end
70
64
 
71
- def test_coverage_with_simulate_oneshot_lines_coverage
72
- Coverband.configuration.stubs(:simulate_oneshot_lines_coverage).returns(true)
73
- mock_file_hash
74
- expected = basic_coverage
75
- @store.save_report(expected)
76
- assert_equal example_line, @store.get_coverage_report[:runtime]['app_path/dog.rb']['data']
77
- end
65
+ def test_coverage_for_file
66
+ mock_file_hash
67
+ expected = basic_coverage
68
+ @store.save_report(expected)
69
+ assert_equal example_line, @store.coverage['app_path/dog.rb']['data']
70
+ end
78
71
 
79
- def test_coverage_when_null
80
- assert_nil @store.coverage['app_path/dog.rb']
81
- end
72
+ def test_coverage_with_simulate_oneshot_lines_coverage
73
+ Coverband.configuration.stubs(:simulate_oneshot_lines_coverage).returns(true)
74
+ mock_file_hash
75
+ expected = basic_coverage
76
+ @store.save_report(expected)
77
+ assert_equal example_line, @store.get_coverage_report[:runtime]['app_path/dog.rb']['data']
78
+ end
82
79
 
83
- def test_clear
84
- @redis.expects(:del).times(3)
85
- @store.clear!
86
- end
80
+ def test_coverage_when_null
81
+ assert_nil @store.coverage['app_path/dog.rb']
82
+ end
87
83
 
88
- def test_clear_file
89
- mock_file_hash
90
- @store.type = :eager_loading
91
- @store.save_report('app_path/dog.rb' => [0, 1, 1])
92
- @store.type = Coverband::RUNTIME_TYPE
93
- @store.save_report('app_path/dog.rb' => [1, 0, 1])
94
- assert_equal [1, 1, 2], @store.get_coverage_report[:merged]['app_path/dog.rb']['data']
95
- @store.clear_file!('app_path/dog.rb')
96
- assert_nil @store.get_coverage_report[:merged]['app_path/dog.rb']
97
- end
84
+ def test_clear
85
+ @redis.expects(:del).times(3)
86
+ @store.clear!
87
+ end
98
88
 
99
- def test_size
100
- mock_file_hash
101
- @store.type = :eager_loading
102
- @store.save_report('app_path/dog.rb' => [0, 1, 1])
103
- assert @store.size > 1
104
- end
89
+ def test_clear_file
90
+ mock_file_hash
91
+ @store.type = :eager_loading
92
+ @store.save_report('app_path/dog.rb' => [0, 1, 1])
93
+ @store.type = Coverband::RUNTIME_TYPE
94
+ @store.save_report('app_path/dog.rb' => [1, 0, 1])
95
+ assert_equal [1, 1, 2], @store.get_coverage_report[:merged]['app_path/dog.rb']['data']
96
+ @store.clear_file!('app_path/dog.rb')
97
+ assert_nil @store.get_coverage_report[:merged]['app_path/dog.rb']
98
+ end
105
99
 
106
- def test_base_key
107
- assert @store.send(:base_key).end_with?(Coverband::RUNTIME_TYPE.to_s)
100
+ def test_size
101
+ mock_file_hash
102
+ @store.type = :eager_loading
103
+ @store.save_report('app_path/dog.rb' => [0, 1, 1])
104
+ assert @store.size > 1
105
+ end
106
+
107
+ def test_base_key
108
+ assert @store.send(:base_key).end_with?(Coverband::RUNTIME_TYPE.to_s)
109
+ end
108
110
  end
109
111
  end
@@ -73,7 +73,7 @@ class CollectorsCoverageTest < Minitest::Test
73
73
  Coverband.configuration.logger = logger
74
74
  @coverband.reset_instance
75
75
  Coverband::Adapters::RedisStore.any_instance.stubs(:save_report).raises('Oh no')
76
- logger.expects(:error).times(3)
76
+ logger.expects(:error).at_least(3)
77
77
  error = assert_raises RuntimeError do
78
78
  @coverband.report_coverage
79
79
  end
@@ -87,6 +87,7 @@ class CollectorsCoverageTest < Minitest::Test
87
87
 
88
88
  test 'one shot line coverage disabled for ruby >= 2.6' do
89
89
  return unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0')
90
+
90
91
  Coverband::Collectors::Coverage.expects(:ruby_version_greater_than_or_equal_to?).with('2.6.0').returns(true)
91
92
  ::Coverage.expects(:running?).returns(false)
92
93
  ::Coverage.expects(:start).with(oneshot_lines: false)
@@ -95,6 +96,7 @@ class CollectorsCoverageTest < Minitest::Test
95
96
 
96
97
  test 'one shot line coverage enabled for ruby >= 2.6' do
97
98
  return unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0')
99
+
98
100
  Coverband.configuration.expects(:use_oneshot_lines_coverage).returns(true)
99
101
  Coverband::Collectors::Coverage.expects(:ruby_version_greater_than_or_equal_to?).with('2.6.0').returns(true)
100
102
  ::Coverage.expects(:running?).returns(false)
@@ -104,6 +106,7 @@ class CollectorsCoverageTest < Minitest::Test
104
106
 
105
107
  test 'one shot line coverage for ruby >= 2.6 when already running' do
106
108
  return unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0')
109
+
107
110
  Coverband::Collectors::Coverage.expects(:ruby_version_greater_than_or_equal_to?).with('2.6.0').returns(true)
108
111
  ::Coverage.expects(:running?).returns(true)
109
112
  ::Coverage.expects(:start).never
@@ -112,10 +115,11 @@ class CollectorsCoverageTest < Minitest::Test
112
115
 
113
116
  test 'no one shot line coverage for ruby < 2.6' do
114
117
  return unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0')
118
+
115
119
  Coverband::Collectors::Coverage.expects(:ruby_version_greater_than_or_equal_to?).with('2.6.0').returns(false)
116
120
  Coverband::Collectors::Coverage.expects(:ruby_version_greater_than_or_equal_to?).with('2.5.0').returns(true)
117
121
  ::Coverage.expects(:running?).returns(false)
118
- ::Coverage.expects(:start).with()
122
+ ::Coverage.expects(:start).with
119
123
  Coverband::Collectors::Coverage.send(:new)
120
124
  end
121
125
  end
@@ -0,0 +1,77 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class ReporterTest < Minitest::Test
4
+
5
+ def setup
6
+ super
7
+ fake_store.raw_store.del('render_tracker')
8
+ end
9
+
10
+ test "init correctly" do
11
+ Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true)
12
+ tracker = Coverband::Collectors::ViewTracker.new(:store => "store", :roots => 'dir')
13
+ assert_equal 'dir', tracker.roots.first
14
+ assert_equal 'store', tracker.store
15
+ assert_equal [], tracker.target
16
+ assert_equal [], tracker.logged_views
17
+ end
18
+
19
+ test "track partials" do
20
+ Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true)
21
+ store = fake_store
22
+ file_path = "#{File.expand_path(Coverband.configuration.root)}/file"
23
+ store.raw_store.expects(:sadd).with('render_tracker', file_path)
24
+ tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: 'dir')
25
+ tracker.track_views('name', 'start', 'finish', 'id', {:identifier => file_path})
26
+ tracker.report_views_tracked
27
+ assert_equal [file_path], tracker.logged_views
28
+ end
29
+
30
+ test "track layouts" do
31
+ Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true)
32
+ store = fake_store
33
+ file_path = "#{File.expand_path(Coverband.configuration.root)}/layout"
34
+ store.raw_store.expects(:sadd).with('render_tracker', file_path)
35
+ tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: 'dir')
36
+ tracker.track_views('name', 'start', 'finish', 'id', {:layout => file_path})
37
+ tracker.report_views_tracked
38
+ assert_equal [file_path], tracker.logged_views
39
+ end
40
+
41
+ test "report used partials" do
42
+ Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true)
43
+ store = fake_store
44
+ file_path = "#{File.expand_path(Coverband.configuration.root)}/file"
45
+ tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: 'dir')
46
+ tracker.track_views('name', 'start', 'finish', 'id', {:identifier => file_path})
47
+ tracker.report_views_tracked
48
+ assert_equal [file_path], tracker.used_views
49
+ end
50
+
51
+ test "report unused partials" do
52
+ Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true)
53
+ store = fake_store
54
+ file_path = "#{File.expand_path(Coverband.configuration.root)}/file"
55
+ target = [file_path, 'not_used']
56
+ tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: 'dir', target: target)
57
+ tracker.track_views('name', 'start', 'finish', 'id', {:identifier => file_path})
58
+ tracker.report_views_tracked
59
+ assert_equal ['not_used'], tracker.unused_views
60
+ end
61
+
62
+ test "reset store" do
63
+ Coverband::Collectors::ViewTracker.expects(:supported_version?).returns(true)
64
+ store = fake_store
65
+ store.raw_store.expects(:del).with('render_tracker')
66
+ tracker = Coverband::Collectors::ViewTracker.new(store: store, roots: 'dir')
67
+ tracker.track_views('name', 'start', 'finish', 'id', {:identifier => 'file'})
68
+ tracker.reset_recordings
69
+ end
70
+
71
+ protected
72
+
73
+ def fake_store
74
+ @fake_store ||= Coverband::Adapters::RedisStore.new(Redis.new, redis_namespace: 'coverband_test')
75
+ end
76
+
77
+ end
@@ -15,16 +15,15 @@ class ResqueWorkerTest < Minitest::Test
15
15
  super
16
16
  Coverband.configure do |config|
17
17
  config.background_reporting_enabled = false
18
- config.root_paths = ["#{File.expand_path('../', File.dirname(__FILE__))}/"]
19
18
  end
20
19
  Coverband.configuration.store.instance_variable_set(:@redis_namespace, 'coverband_test')
21
20
  Coverband.start
22
- redis = Coverband.configuration.store.send(:redis)
21
+ redis = Coverband.configuration.store.instance_eval { @redis }
23
22
  Resque.redis = redis
24
23
  end
25
24
 
26
25
  test 'resque job coverage' do
27
- relative_job_file = './integrations/test_resque_job.rb'
26
+ relative_job_file = './test/coverband/integrations/test_resque_job.rb'
28
27
  resque_job_file = File.expand_path('./test_resque_job.rb', File.dirname(__FILE__))
29
28
  require resque_job_file
30
29
 
@@ -3,74 +3,6 @@
3
3
  require File.expand_path('../../test_helper', File.dirname(__FILE__))
4
4
 
5
5
  class ReportsBaseTest < Minitest::Test
6
- test 'relative_path_to_full fix filename from a key with a swappable path' do
7
- Coverband.configure do |config|
8
- config.reporter = 'std_out'
9
- config.root = '/full/remote_app/path'
10
- end
11
-
12
- key = '/app/is/a/path.rb'
13
- # the code takes config.root expands and adds a '/' for the final path in roots
14
- roots = ['/app/', '/full/remote_app/path/']
15
-
16
- expected_path = '/full/remote_app/path/is/a/path.rb'
17
- File.expects(:exist?).with(key).returns(false)
18
- File.expects(:exist?).with(expected_path).returns(true)
19
- assert_equal expected_path, Coverband::Reporters::Base.send(:relative_path_to_full, key, roots)
20
- end
21
-
22
- test 'relative_path_to_full fix filename a changing deploy path with quotes' do
23
- Coverband.configure do |config|
24
- config.reporter = 'std_out'
25
- config.root = '/full/remote_app/path'
26
- end
27
-
28
- expected_path = '/full/remote_app/path/app/models/user.rb'
29
- key = '/box/apps/app_name/releases/20140725203539/app/models/user.rb'
30
- roots = ['/box/apps/app_name/releases/\\d+/', '/full/remote_app/path/']
31
- File.expects(:exist?).with('/box/apps/app_name/releases/\\d+/app/models/user.rb').returns(false)
32
- File.expects(:exist?).with(expected_path).returns(true)
33
- assert_equal expected_path, Coverband::Reporters::Base.send(:relative_path_to_full, key, roots)
34
- File.expects(:exist?).with('/box/apps/app_name/releases/\\d+/app/models/user.rb').returns(false)
35
- File.expects(:exist?).with(expected_path).returns(true)
36
- roots = ['/box/apps/app_name/releases/\d+/', '/full/remote_app/path/']
37
- assert_equal expected_path, Coverband::Reporters::Base.send(:relative_path_to_full, key, roots)
38
- end
39
-
40
- test 'relative_path_to_full fix filename a changing deploy path real world examples' do
41
- current_app_root = '/var/local/company/company.d/79'
42
- Coverband.configure do |config|
43
- config.reporter = 'std_out'
44
- config.root = current_app_root
45
- end
46
-
47
- expected_path = '/var/local/company/company.d/79/app/controllers/dashboard_controller.rb'
48
- key = '/var/local/company/company.d/78/app/controllers/dashboard_controller.rb'
49
-
50
- File.expects(:exist?).with('/var/local/company/company.d/[0-9]*/app/controllers/dashboard_controller.rb').returns(false)
51
- File.expects(:exist?).with(expected_path).returns(true)
52
- roots = ['/var/local/company/company.d/[0-9]*/', "#{current_app_root}/"]
53
- assert_equal expected_path, Coverband::Reporters::Base.send(:relative_path_to_full, key, roots)
54
- File.expects(:exist?).with('/var/local/company/company.d/[0-9]*/app/controllers/dashboard_controller.rb').returns(false)
55
- File.expects(:exist?).with(expected_path).returns(true)
56
- roots = ['/var/local/company/company.d/[0-9]*/', "#{current_app_root}/"]
57
- assert_equal expected_path, Coverband::Reporters::Base.send(:relative_path_to_full, key, roots)
58
- end
59
-
60
- test 'relative_path_to_full leave filename from a key with a local path' do
61
- Coverband.configure do |config|
62
- config.reporter = 'std_out'
63
- config.root = '/full/remote_app/path'
64
- end
65
-
66
- key = '/full/remote_app/path/is/a/path.rb'
67
- # the code takes config.root expands and adds a '/' for the final path in roots
68
- roots = ['/app/', '/full/remote_app/path/']
69
-
70
- expected_path = '/full/remote_app/path/is/a/path.rb'
71
- assert_equal expected_path, Coverband::Reporters::Base.send(:relative_path_to_full, key, roots)
72
- end
73
-
74
6
  test '#merge_arrays basic merge preserves order and counts' do
75
7
  first = [0, 0, 1, 0, 1]
76
8
  second = [nil, 0, 1, 0, 0]
@@ -139,19 +71,10 @@ class ReportsBaseTest < Minitest::Test
139
71
  "file_hash"=>"14dc84e940e26cbfb9ac79b43862e762",
140
72
  "data"=>[16, 16, 16, nil, 16, 16, nil, nil, 16, nil, 16, 32, 32, nil, 32, 32, 32, 32, 32, 32, 32, nil, nil, 16, nil, 16, 32, 23, 0, 0, 0, 0, nil, nil, nil, nil, 0, 0, nil, nil, 16, 32, 32, 32, nil, nil, nil, nil, nil, 16, 32, nil, nil, 16, 32, nil, nil]}
141
73
  }
142
- @redis = Redis.new
143
- store = Coverband::Adapters::RedisStore.new(@redis, redis_namespace: 'coverband_test')
144
- store.clear!
145
-
146
- Coverband.configure do |config|
147
- config.reporter = 'std_out'
148
- config.root = '/base/78/app/'
149
- config.store = store
150
- end
151
-
152
74
  key = '/base/78/app/app/controllers/dashboard_controller.rb'
153
75
  roots = ['/base/[0-9]*/', '/base/78/app/']
154
76
 
77
+ Coverband.configuration.stubs(:all_root_paths).returns(roots)
155
78
  lines_hit = [1, 3, 6]
156
79
  store.stubs(:merged_coverage).returns(coverage)
157
80
  File.expects(:exist?).at_least_once
@@ -19,10 +19,7 @@ class HTMLReportTest < Minitest::Test
19
19
  end
20
20
  Coverband.configuration.logger.stubs('info')
21
21
  mock_file_hash
22
- Coverband.configuration
23
- .expects(:current_root)
24
- .at_least_once
25
- .returns('app_path')
22
+ Coverband::Utils::RelativeFileConverter.expects(:convert).with('app_path/dog.rb').returns('./dog.rb')
26
23
  @store.send(:save_report, basic_coverage)
27
24
 
28
25
  report = Coverband::Reporters::ConsoleReport.report(@store)[:merged]