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
@@ -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 CollectorsTraceTest < 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
|
@@ -1,21 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
2
4
|
|
3
5
|
class BaseTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
test "defaults to line trace point event" do
|
6
|
+
test 'defaults to line trace point event' do
|
6
7
|
assert_equal Coverband.configuration.trace_point_events, [:line]
|
7
8
|
end
|
8
9
|
|
9
|
-
test
|
10
|
+
test 'defaults to ignore gems' do
|
10
11
|
assert_equal Coverband.configuration.include_gems, false
|
11
|
-
coverband = Coverband::Base.instance.reset_instance
|
12
|
-
assert_equal ['vendor', 'internal:prelude', 'schema.rb', 'gems'], coverband.instance_variable_get(
|
12
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
13
|
+
assert_equal ['vendor', 'internal:prelude', 'schema.rb', 'gems'], coverband.instance_variable_get('@ignore_patterns')
|
13
14
|
end
|
14
15
|
|
15
16
|
test "doesn't ignore gems if include_gems = true" do
|
16
17
|
Coverband.configuration.include_gems = true
|
17
|
-
coverband = Coverband::Base.instance.reset_instance
|
18
|
-
assert_equal ['vendor', 'internal:prelude', 'schema.rb'], coverband.instance_variable_get(
|
18
|
+
coverband = Coverband::Collectors::Base.instance.reset_instance
|
19
|
+
assert_equal ['vendor', 'internal:prelude', 'schema.rb'], coverband.instance_variable_get('@ignore_patterns')
|
19
20
|
end
|
20
|
-
|
21
21
|
end
|
data/test/unit/dog.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
2
4
|
require File.expand_path('../fake_app/basic_rack', File.dirname(__FILE__))
|
3
5
|
require 'rack'
|
@@ -5,128 +7,135 @@ require 'rack'
|
|
5
7
|
class MiddlewareTest < Test::Unit::TestCase
|
6
8
|
BASE_KEY = Coverband::Adapters::RedisStore::BASE_KEY
|
7
9
|
|
8
|
-
test
|
9
|
-
request = Rack::MockRequest.env_for(
|
10
|
-
Coverband::Base.instance.reset_instance
|
10
|
+
test 'call app' do
|
11
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
12
|
+
Coverband::Collectors::Base.instance.reset_instance
|
11
13
|
middleware = Coverband::Middleware.new(fake_app)
|
12
14
|
results = middleware.call(request)
|
13
|
-
assert_equal
|
15
|
+
assert_equal '/anything.json', results.last
|
14
16
|
end
|
15
17
|
|
16
18
|
test 'pass all rack lint checks' do
|
17
|
-
Coverband::Base.instance.reset_instance
|
19
|
+
Coverband::Collectors::Base.instance.reset_instance
|
18
20
|
app = Rack::Lint.new(Coverband::Middleware.new(fake_app))
|
19
21
|
env = Rack::MockRequest.env_for('/hello')
|
20
22
|
app.call(env)
|
21
23
|
end
|
22
24
|
|
23
25
|
test 'always be enabled with sample percentage of 100' do
|
24
|
-
request = Rack::MockRequest.env_for(
|
25
|
-
Coverband::Base.instance.reset_instance
|
26
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
27
|
+
Coverband::Collectors::Base.instance.reset_instance
|
26
28
|
middleware = Coverband::Middleware.new(fake_app)
|
27
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
28
|
-
Coverband::Base.instance.instance_variable_set(
|
29
|
-
|
30
|
-
assert_equal true, Coverband::Base.instance.instance_variable_get(
|
29
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
30
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
|
31
|
+
middleware.call(request)
|
32
|
+
assert_equal true, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
31
33
|
end
|
32
34
|
|
33
35
|
test 'never be enabled with sample percentage of 0' do
|
34
|
-
request = Rack::MockRequest.env_for(
|
35
|
-
Coverband::Base.instance.reset_instance
|
36
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
37
|
+
Coverband::Collectors::Base.instance.reset_instance
|
36
38
|
middleware = Coverband::Middleware.new(fake_app)
|
37
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
38
|
-
Coverband::Base.instance.instance_variable_set(
|
39
|
-
|
40
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
39
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
40
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 0.0)
|
41
|
+
middleware.call(request)
|
42
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
41
43
|
end
|
42
44
|
|
43
45
|
test 'always unset function when sampling' do
|
44
|
-
request = Rack::MockRequest.env_for(
|
45
|
-
Coverband::Base.instance.reset_instance
|
46
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
47
|
+
Coverband::Collectors::Base.instance.reset_instance
|
46
48
|
middleware = Coverband::Middleware.new(fake_app)
|
47
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
48
|
-
Coverband::Base.instance.instance_variable_set(
|
49
|
-
|
50
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
49
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
|
50
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
|
51
|
+
middleware.call(request)
|
52
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
|
51
53
|
end
|
52
54
|
|
53
55
|
test 'always unset function when not sampling' do
|
54
|
-
request = Rack::MockRequest.env_for(
|
55
|
-
Coverband::Base.instance.reset_instance
|
56
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
57
|
+
Coverband::Collectors::Base.instance.reset_instance
|
56
58
|
middleware = Coverband::Middleware.new(fake_app)
|
57
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
58
|
-
middleware.instance_variable_set(
|
59
|
-
|
60
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
59
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
|
60
|
+
middleware.instance_variable_set('@sample_percentage', 0.0)
|
61
|
+
middleware.call(request)
|
62
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@tracer_set')
|
61
63
|
end
|
62
64
|
|
63
65
|
test 'always record coverage, set trace func, and add_files when sampling' do
|
64
|
-
request = Rack::MockRequest.env_for(
|
65
|
-
Coverband::Base.instance.reset_instance
|
66
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
67
|
+
Coverband::Collectors::Base.instance.reset_instance
|
66
68
|
middleware = Coverband::Middleware.new(fake_app)
|
67
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
68
|
-
Coverband::Base.instance.instance_variable_set(
|
69
|
-
|
70
|
-
assert_equal true, Coverband::Base.instance.instance_variable_get(
|
69
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
70
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
|
71
|
+
middleware.call(request)
|
72
|
+
assert_equal true, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
71
73
|
end
|
72
74
|
|
73
75
|
test 'reports coverage when an error is raised' do
|
74
|
-
request = Rack::MockRequest.env_for(
|
75
|
-
Coverband::Base.instance.reset_instance
|
76
|
-
Coverband::Base.instance.expects(:report_coverage).once
|
76
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
77
|
+
Coverband::Collectors::Base.instance.reset_instance
|
78
|
+
Coverband::Collectors::Base.instance.expects(:report_coverage).once
|
77
79
|
middleware = Coverband::Middleware.new(fake_app_raise_error)
|
78
|
-
|
80
|
+
begin
|
81
|
+
middleware.call(request)
|
82
|
+
rescue StandardError
|
83
|
+
nil
|
84
|
+
end
|
79
85
|
end
|
80
86
|
|
81
87
|
test 'always report coverage when sampling' do
|
82
|
-
request = Rack::MockRequest.env_for(
|
83
|
-
Coverband::Base.instance.reset_instance
|
88
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
89
|
+
Coverband::Collectors::Base.instance.reset_instance
|
84
90
|
middleware = Coverband::Middleware.new(fake_app_with_lines)
|
85
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
86
|
-
Coverband::Base.instance.instance_variable_set(
|
91
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
92
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
|
87
93
|
fake_redis = Redis.new
|
88
|
-
|
89
|
-
|
94
|
+
redis_store = Coverband::Adapters::RedisStore.new(fake_redis)
|
95
|
+
redis_store.clear!
|
96
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@store', redis_store)
|
97
|
+
fake_redis.stubs(:info).returns('redis_version' => 3.0)
|
90
98
|
fake_redis.expects(:sadd).at_least_once
|
91
99
|
fake_redis.expects(:mapped_hmset).at_least_once
|
92
|
-
fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}",
|
93
|
-
|
94
|
-
assert_equal true, Coverband::Base.instance.instance_variable_get(
|
100
|
+
fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}", '7' => 1)
|
101
|
+
middleware.call(request)
|
102
|
+
assert_equal true, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
95
103
|
end
|
96
104
|
|
97
105
|
test 'report only on calls when configured' do
|
98
|
-
request = Rack::MockRequest.env_for(
|
106
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
99
107
|
Coverband.configuration.trace_point_events = [:call]
|
100
|
-
Coverband::Base.instance.reset_instance
|
108
|
+
Coverband::Collectors::Base.instance.reset_instance
|
101
109
|
middleware = Coverband::Middleware.new(fake_app_with_lines)
|
102
|
-
assert_equal false, Coverband::Base.instance.instance_variable_get(
|
103
|
-
Coverband::Base.instance.instance_variable_set(
|
110
|
+
assert_equal false, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
111
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@sample_percentage', 100.0)
|
104
112
|
fake_redis = Redis.new
|
105
|
-
|
106
|
-
|
113
|
+
redis_store = Coverband::Adapters::RedisStore.new(fake_redis)
|
114
|
+
redis_store.clear!
|
115
|
+
Coverband::Collectors::Base.instance.instance_variable_set('@store', redis_store)
|
116
|
+
fake_redis.stubs(:info).returns('redis_version' => 3.0)
|
107
117
|
fake_redis.expects(:sadd).at_least_once
|
108
118
|
fake_redis.expects(:mapped_hmset).at_least_once
|
109
|
-
fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}",
|
110
|
-
|
111
|
-
assert_equal true, Coverband::Base.instance.instance_variable_get(
|
119
|
+
fake_redis.expects(:mapped_hmset).at_least_once.with("#{BASE_KEY}.#{basic_rack_ruby_file}", '6' => 1)
|
120
|
+
middleware.call(request)
|
121
|
+
assert_equal true, Coverband::Collectors::Base.instance.instance_variable_get('@enabled')
|
112
122
|
end
|
113
123
|
|
114
124
|
private
|
115
125
|
|
116
126
|
def fake_app
|
117
|
-
@
|
127
|
+
@fake_app ||= ->(env) { [200, { 'Content-Type' => 'text/plain' }, env['PATH_INFO']] }
|
118
128
|
end
|
119
129
|
|
120
130
|
def fake_app_raise_error
|
121
|
-
@fake_app_raise_error ||=
|
131
|
+
@fake_app_raise_error ||= -> { raise 'sh** happens' }
|
122
132
|
end
|
123
133
|
|
124
134
|
def fake_app_with_lines
|
125
|
-
@
|
135
|
+
@fake_app_with_lines ||= ::HelloWorld.new
|
126
136
|
end
|
127
137
|
|
128
138
|
def basic_rack_ruby_file
|
129
139
|
File.expand_path('../fake_app/basic_rack.rb', File.dirname(__FILE__))
|
130
140
|
end
|
131
|
-
|
132
141
|
end
|
@@ -1,64 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
2
4
|
|
3
5
|
class ReportsBaseTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
test "filename_from_key fix filename from a key with a swappable path" do
|
6
|
+
test 'filename_from_key fix filename from a key with a swappable path' do
|
6
7
|
Coverband.configure do |config|
|
7
8
|
config.reporter = 'std_out'
|
8
9
|
config.root = '/full/remote_app/path'
|
9
10
|
end
|
10
11
|
|
11
|
-
key =
|
12
|
-
#the code takes config.root expands and adds a '/' for the final path in roots
|
13
|
-
roots = [
|
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/']
|
14
15
|
|
15
|
-
assert_equal
|
16
|
+
assert_equal '/full/remote_app/path/is/a/path.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
|
16
17
|
end
|
17
18
|
|
18
|
-
test
|
19
|
+
test 'filename_from_key fix filename a changing deploy path with double quotes' do
|
19
20
|
Coverband.configure do |config|
|
20
21
|
config.reporter = 'std_out'
|
21
22
|
config.root = '/full/remote_app/path'
|
22
23
|
end
|
23
24
|
|
24
|
-
key =
|
25
|
+
key = '/box/apps/app_name/releases/20140725203539/app/models/user.rb'
|
25
26
|
# the code takes config.root expands and adds a '/' for the final path in roots
|
26
27
|
# note to get regex to work for changing deploy directories it must be double escaped in double quotes or use single qoutes
|
27
|
-
roots = [
|
28
|
+
roots = ['/box/apps/app_name/releases/\\d+/', '/full/remote_app/path/']
|
28
29
|
|
29
|
-
assert_equal
|
30
|
+
assert_equal '/full/remote_app/path/app/models/user.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
|
30
31
|
end
|
31
32
|
|
32
|
-
test
|
33
|
+
test 'filename_from_key fix filename a changing deploy path with single quotes' do
|
33
34
|
Coverband.configure do |config|
|
34
35
|
config.reporter = 'std_out'
|
35
36
|
config.root = '/full/remote_app/path'
|
36
37
|
end
|
37
38
|
|
38
|
-
key =
|
39
|
+
key = '/box/apps/app_name/releases/20140725203539/app/models/user.rb'
|
39
40
|
# the code takes config.root expands and adds a '/' for the final path in roots
|
40
41
|
# note to get regex to work for changing deploy directories it must be double escaped in double quotes or use single qoutes
|
41
42
|
roots = ['/box/apps/app_name/releases/\d+/', '/full/remote_app/path/']
|
42
43
|
|
43
|
-
assert_equal
|
44
|
+
assert_equal '/full/remote_app/path/app/models/user.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
|
44
45
|
end
|
45
46
|
|
46
|
-
test
|
47
|
+
test 'filename_from_key leave filename from a key with a local path' do
|
47
48
|
Coverband.configure do |config|
|
48
49
|
config.reporter = 'std_out'
|
49
50
|
config.root = '/full/remote_app/path'
|
50
51
|
end
|
51
52
|
|
52
|
-
key =
|
53
|
-
#the code takes config.root expands and adds a '/' for the final path in roots
|
54
|
-
roots = [
|
53
|
+
key = '/full/remote_app/path/is/a/path.rb'
|
54
|
+
# the code takes config.root expands and adds a '/' for the final path in roots
|
55
|
+
roots = ['/app/', '/full/remote_app/path/']
|
55
56
|
|
56
|
-
assert_equal
|
57
|
+
assert_equal '/full/remote_app/path/is/a/path.rb', Coverband::Reporters::Base.filename_from_key(key, roots)
|
57
58
|
end
|
58
59
|
|
59
|
-
test
|
60
|
+
test 'line_hash gets correct hash entry for a line key' do
|
60
61
|
@fake_redis = fake_redis
|
61
|
-
store = Coverband::Adapters::RedisStore.new(@fake_redis
|
62
|
+
store = Coverband::Adapters::RedisStore.new(@fake_redis)
|
62
63
|
|
63
64
|
Coverband.configure do |config|
|
64
65
|
config.redis = @fake_redis
|
@@ -66,23 +67,23 @@ class ReportsBaseTest < Test::Unit::TestCase
|
|
66
67
|
config.root = '/full/remote_app/path'
|
67
68
|
end
|
68
69
|
|
69
|
-
key =
|
70
|
-
#the code takes config.root expands and adds a '/'
|
71
|
-
roots = [
|
72
|
-
|
73
|
-
lines_hit = [
|
74
|
-
|
75
|
-
#expects to show hit counts on 1,3,6
|
76
|
-
expected = {
|
77
|
-
File.stubs(:
|
78
|
-
File.stubs(:foreach).returns(['line 1','line2','line3','line4','line5','line6'])
|
79
|
-
|
70
|
+
key = '/full/remote_app/path/is/a/path.rb'
|
71
|
+
# the code takes config.root expands and adds a '/'
|
72
|
+
roots = ['/app/', '/full/remote_app/path/']
|
73
|
+
|
74
|
+
lines_hit = [1, 3, 6]
|
75
|
+
store.stubs(:covered_lines_for_file).returns(lines_hit)
|
76
|
+
# expects to show hit counts on 1,3,6
|
77
|
+
expected = { '/full/remote_app/path/is/a/path.rb' => [1, nil, 1, nil, nil, 1] }
|
78
|
+
File.stubs(:exist?).returns(true)
|
79
|
+
File.stubs(:foreach).returns(['line 1', 'line2', 'line3', 'line4', 'line5', 'line6'])
|
80
|
+
|
80
81
|
assert_equal expected, Coverband::Reporters::Base.line_hash(store, key, roots)
|
81
82
|
end
|
82
83
|
|
83
|
-
test
|
84
|
+
test 'line_hash adjusts relative paths' do
|
84
85
|
@fake_redis = fake_redis
|
85
|
-
store = Coverband::Adapters::RedisStore.new(@fake_redis
|
86
|
+
store = Coverband::Adapters::RedisStore.new(@fake_redis)
|
86
87
|
|
87
88
|
Coverband.configure do |config|
|
88
89
|
config.redis = @fake_redis
|
@@ -90,51 +91,50 @@ class ReportsBaseTest < Test::Unit::TestCase
|
|
90
91
|
config.root = '/full/remote_app/path'
|
91
92
|
end
|
92
93
|
|
93
|
-
key =
|
94
|
-
#the code takes config.root expands and adds a '/'
|
95
|
-
roots = [
|
96
|
-
|
97
|
-
lines_hit = [
|
98
|
-
|
99
|
-
#expects to show hit counts on 1,3,6
|
100
|
-
expected = {
|
101
|
-
File.stubs(:
|
102
|
-
File.stubs(:foreach).returns(['line 1','line2','line3','line4','line5','line6'])
|
103
|
-
|
94
|
+
key = './is/a/path.rb'
|
95
|
+
# the code takes config.root expands and adds a '/'
|
96
|
+
roots = ['/app/', '/full/remote_app/path/']
|
97
|
+
|
98
|
+
lines_hit = [1, 3, 6]
|
99
|
+
store.stubs(:covered_lines_for_file).returns(lines_hit)
|
100
|
+
# expects to show hit counts on 1,3,6
|
101
|
+
expected = { '/full/remote_app/path/is/a/path.rb' => [1, nil, 1, nil, nil, 1] }
|
102
|
+
File.stubs(:exist?).returns(true)
|
103
|
+
File.stubs(:foreach).returns(['line 1', 'line2', 'line3', 'line4', 'line5', 'line6'])
|
104
|
+
|
104
105
|
assert_equal expected, Coverband::Reporters::Base.line_hash(store, key, roots)
|
105
106
|
end
|
106
107
|
|
107
|
-
test
|
108
|
-
first = [0,0,1,0,1]
|
109
|
-
second = [nil,0,1,0,0]
|
110
|
-
expects = [0,0,2,0,1]
|
108
|
+
test '#merge_arrays basic merge preserves order and counts' do
|
109
|
+
first = [0, 0, 1, 0, 1]
|
110
|
+
second = [nil, 0, 1, 0, 0]
|
111
|
+
expects = [0, 0, 2, 0, 1]
|
111
112
|
|
112
113
|
assert_equal expects, Coverband::Reporters::Base.merge_arrays(first, second)
|
113
114
|
end
|
114
115
|
|
115
|
-
test
|
116
|
-
first = [0,0,1,0,1]
|
117
|
-
second = [nil,0,1,0,0,0,0,1]
|
118
|
-
expects = [0,0,2,0,1,0,0,1]
|
116
|
+
test '#merge_arrays basic merge preserves order and counts different lengths' do
|
117
|
+
first = [0, 0, 1, 0, 1]
|
118
|
+
second = [nil, 0, 1, 0, 0, 0, 0, 1]
|
119
|
+
expects = [0, 0, 2, 0, 1, 0, 0, 1]
|
119
120
|
|
120
121
|
assert_equal expects, Coverband::Reporters::Base.merge_arrays(first, second)
|
121
122
|
end
|
122
123
|
|
123
|
-
test
|
124
|
-
first = {
|
125
|
-
second = {
|
126
|
-
expects = {
|
124
|
+
test '#merge_existing_coverage basic merge preserves order and counts different lengths' do
|
125
|
+
first = { 'file.rb' => [0, 1, 2, nil, nil, nil] }
|
126
|
+
second = { 'file.rb' => [0, 1, 2, nil, 0, 1, 2] }
|
127
|
+
expects = { 'file.rb' => [0, 2, 4, nil, 0, 1, 2] }
|
127
128
|
|
128
129
|
assert_equal expects, Coverband::Reporters::Base.merge_existing_coverage(first, second)
|
129
130
|
end
|
130
131
|
|
131
|
-
test
|
132
|
-
first = {
|
133
|
-
second = {
|
134
|
-
expects = {
|
135
|
-
|
132
|
+
test '#merge_existing_coverage mismatched' do
|
133
|
+
first = { 'file.rb' => [0, 1, 2, nil, nil, nil] }
|
134
|
+
second = { 'diff.rb' => [0, 1, 2, nil, 0, 1, 2] }
|
135
|
+
expects = { 'file.rb' => [0, 1, 2, nil, nil, nil],
|
136
|
+
'diff.rb' => [0, 1, 2, nil, 0, 1, 2] }
|
136
137
|
|
137
138
|
assert_equal expects, Coverband::Reporters::Base.merge_existing_coverage(first, second)
|
138
139
|
end
|
139
|
-
|
140
140
|
end
|