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
@@ -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
|