coverband 0.1.0.preRC3 → 0.1.0.preRC4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/coverband/base.rb +11 -1
- data/lib/coverband/configuration.rb +1 -1
- data/lib/coverband/reporter.rb +32 -10
- data/lib/coverband/version.rb +1 -1
- data/test/unit/reporter_test.rb +42 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2b8156d50c00462d50ecf5e65c584a16a027357
|
4
|
+
data.tar.gz: 508cfa3982dbd3235af6ebf854799076d1e821ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cceef094ab5d86065ac8748174394fe5350f805e31314023040a0eae0c69bbd91355018bcaeda9739c45f5577346c8ca2a2123d5e5802537791bc0c3eefe099c
|
7
|
+
data.tar.gz: 061f6b81c43f3180665529e298c17fb893c57972dc4c319d5da9f932dd0cd14403dcf68077cfa74128ca4f99fbe6e721abf163040d4725503cf389a7ef9017ed
|
data/lib/coverband/base.rb
CHANGED
@@ -44,7 +44,7 @@ module Coverband
|
|
44
44
|
@reporter = Coverband::RedisStore.new(Coverband.configuration.redis) if Coverband.configuration.redis
|
45
45
|
@stats = Coverband.configuration.stats
|
46
46
|
@verbose = Coverband.configuration.verbose
|
47
|
-
@logger = Coverband.configuration.logger
|
47
|
+
@logger = Coverband.configuration.logger
|
48
48
|
self
|
49
49
|
end
|
50
50
|
|
@@ -137,6 +137,16 @@ module Coverband
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def add_file_without_checks(file, line)
|
140
|
+
# file from ruby coverband at this method call is a full path
|
141
|
+
# file from native coverband is also a full path
|
142
|
+
#
|
143
|
+
# at the moment the full paths don't merge so the 'last' one wins and each deploy
|
144
|
+
# with a normal capistrano setup resets coverage.
|
145
|
+
#
|
146
|
+
# should we make it relative in this method (slows down collection)
|
147
|
+
# -- OR --
|
148
|
+
# we could have the reporter MERGE the results after normalizing the filenames
|
149
|
+
# (went with this route see report_scov previous_line_hash)
|
140
150
|
if @verbose
|
141
151
|
@file_usage[file] += 1
|
142
152
|
@file_line_usage[file] = Hash.new(0) unless @file_line_usage.include?(file)
|
data/lib/coverband/reporter.rb
CHANGED
@@ -8,7 +8,10 @@ module Coverband
|
|
8
8
|
@project_directory = File.expand_path(Coverband.configuration.root)
|
9
9
|
results = Coverage.result
|
10
10
|
results = results.reject{|key, val| !key.match(@project_directory) || Coverband.configuration.ignore.any?{|pattern| key.match(/#{pattern}/)} }
|
11
|
-
|
11
|
+
|
12
|
+
if Coverband.configuration.verbose
|
13
|
+
Coverband.configuration.logger.info results.inspect
|
14
|
+
end
|
12
15
|
|
13
16
|
File.open('./tmp/coverband_baseline.json', 'w') {|f| f.write(results.to_json) }
|
14
17
|
end
|
@@ -17,7 +20,7 @@ module Coverband
|
|
17
20
|
begin
|
18
21
|
require 'simplecov' if Coverband.configuration.reporter=='scov'
|
19
22
|
rescue
|
20
|
-
|
23
|
+
Coverband.configuration.logger.error "coverband requires simplecov in order to generate a report, when configured for the scov report style."
|
21
24
|
return
|
22
25
|
end
|
23
26
|
redis = Coverband.configuration.redis
|
@@ -26,12 +29,16 @@ module Coverband
|
|
26
29
|
open_report = options.fetch(:open_report){ true }
|
27
30
|
|
28
31
|
roots << "#{current_root}/"
|
29
|
-
|
32
|
+
|
33
|
+
if Coverband.configuration.verbose
|
34
|
+
Coverband.configuration.logger.info "fixing root: #{roots.join(', ')}"
|
35
|
+
end
|
36
|
+
|
30
37
|
if Coverband.configuration.reporter=='scov'
|
31
38
|
report_scov(redis, existing_coverage, roots, open_report)
|
32
39
|
else
|
33
40
|
lines = redis.smembers('coverband').map{|key| report_line(redis, key) }
|
34
|
-
|
41
|
+
Coverband.configuration.logger.info lines.join("\n")
|
35
42
|
end
|
36
43
|
end
|
37
44
|
|
@@ -61,18 +68,30 @@ module Coverband
|
|
61
68
|
redis.smembers('coverband').each do |key|
|
62
69
|
next if Coverband.configuration.ignore.any?{ |i| key.match(i)}
|
63
70
|
line_data = line_hash(redis, key, roots)
|
64
|
-
|
71
|
+
|
72
|
+
if line_data
|
73
|
+
line_key = line_hash.keys.first
|
74
|
+
previous_line_hash = scov_style_report[line_key]
|
75
|
+
if merge_line
|
76
|
+
line_data[line_key] = line_data[line_key].merge(previous_line_hash)
|
77
|
+
end
|
78
|
+
scov_style_report.merge!(line_data)
|
79
|
+
end
|
65
80
|
end
|
66
81
|
scov_style_report = fix_file_names(scov_style_report, roots)
|
67
82
|
existing_coverage = fix_file_names(existing_coverage, roots)
|
68
83
|
scov_style_report = merge_existing_coverage(scov_style_report, existing_coverage)
|
69
|
-
|
70
|
-
|
84
|
+
|
85
|
+
if Coverband.configuration.verbose
|
86
|
+
Coverband.configuration.logger.info "report: "
|
87
|
+
Coverband.configuration.logger.info scov_style_report.inspect
|
88
|
+
end
|
89
|
+
|
71
90
|
SimpleCov::Result.new(scov_style_report).format!
|
72
91
|
if open_report
|
73
92
|
`open #{SimpleCov.coverage_dir}/index.html`
|
74
93
|
else
|
75
|
-
|
94
|
+
Coverband.configuration.logger.info "report is ready and viewable: open #{SimpleCov.coverage_dir}/index.html"
|
76
95
|
end
|
77
96
|
end
|
78
97
|
|
@@ -98,7 +117,7 @@ module Coverband
|
|
98
117
|
# /Users/danmayer/projects/cover_band_server/app/rb: ["54", "55"]
|
99
118
|
# /Users/danmayer/projects/cover_band_server/views/layout/erb: ["0", "33", "36", "37", "38", "39", "40", "62", "63", "66", "65532", "65533"]
|
100
119
|
def self.report_line(redis, key)
|
101
|
-
"#{key}: #{redis.smembers("coverband.#{key}").inspect}"
|
120
|
+
"#{key}: #{redis.smembers("coverband.#{key}").inspect}" #" fix line styles
|
102
121
|
end
|
103
122
|
|
104
123
|
def self.filename_from_key(key, roots)
|
@@ -106,6 +125,9 @@ module Coverband
|
|
106
125
|
roots.each do |root|
|
107
126
|
filename = filename.gsub(/^#{root}/, './')
|
108
127
|
end
|
128
|
+
# the filename for SimpleCov is expected to be a full path.
|
129
|
+
# roots.last should be roots << current_root}/
|
130
|
+
# a fully expanded path of config.root
|
109
131
|
filename = filename.gsub('./', roots.last)
|
110
132
|
filename
|
111
133
|
end
|
@@ -125,7 +147,7 @@ module Coverband
|
|
125
147
|
line_array.each_with_index{|line,index| line_array[index]=1 if lines_hit.include?((index+1).to_s) }
|
126
148
|
{filename => line_array}
|
127
149
|
else
|
128
|
-
|
150
|
+
Coverband.configuration.logger.info "file #{filename} not found in project"
|
129
151
|
end
|
130
152
|
end
|
131
153
|
|
data/lib/coverband/version.rb
CHANGED
data/test/unit/reporter_test.rb
CHANGED
@@ -22,7 +22,6 @@ class ReporterTest < Test::Unit::TestCase
|
|
22
22
|
|
23
23
|
Coverband::Reporter.expects(:current_root).returns('/root_dir')
|
24
24
|
fake_redis.expects(:smembers).with('coverband').returns(fake_coverband_members)
|
25
|
-
Coverband::Reporter.expects('puts').with("fixing root: /app/, /root_dir/")
|
26
25
|
|
27
26
|
fake_coverband_members.each do |key|
|
28
27
|
fake_redis.expects(:smembers).with("coverband.#{key}").returns(["54", "55"])
|
@@ -33,11 +32,52 @@ class ReporterTest < Test::Unit::TestCase
|
|
33
32
|
regexp_matches(/account/),
|
34
33
|
regexp_matches(/54/)]
|
35
34
|
|
36
|
-
Coverband
|
35
|
+
Coverband.configuration.logger.expects('info').with(all_of(*matchers))
|
37
36
|
|
38
37
|
Coverband::Reporter.report
|
39
38
|
end
|
40
39
|
|
40
|
+
|
41
|
+
####
|
42
|
+
# TODO
|
43
|
+
# attempting to write some tests around this reporter
|
44
|
+
# shows that it has become a disaster of self methods relying on side effects.
|
45
|
+
# Fix to standard class and methods.
|
46
|
+
####
|
47
|
+
should "fix filename from a key with a swappable path" do
|
48
|
+
Coverband.configure do |config|
|
49
|
+
config.redis = fake_redis
|
50
|
+
config.reporter = 'std_out'
|
51
|
+
config.root = '/full/remote_app/path'
|
52
|
+
end
|
53
|
+
|
54
|
+
key = "/app/is/a/path.rb"
|
55
|
+
#the code takes config.root expands and adds a '/'
|
56
|
+
roots = ["/app/", '/full/remote_app/path/']
|
57
|
+
|
58
|
+
assert_equal "/full/remote_app/path/is/a/path.rb", Coverband::Reporter.filename_from_key(key, roots)
|
59
|
+
end
|
60
|
+
|
61
|
+
####
|
62
|
+
# TODO
|
63
|
+
# attempting to write some tests around this reporter
|
64
|
+
# shows that it has become a disaster of self methods relying on side effects.
|
65
|
+
# Fix to standard class and methods.
|
66
|
+
####
|
67
|
+
should "leave filename from a key with a local path" do
|
68
|
+
Coverband.configure do |config|
|
69
|
+
config.redis = fake_redis
|
70
|
+
config.reporter = 'std_out'
|
71
|
+
config.root = '/full/remote_app/path'
|
72
|
+
end
|
73
|
+
|
74
|
+
key = "/full/remote_app/path/is/a/path.rb"
|
75
|
+
#the code takes config.root expands and adds a '/'
|
76
|
+
roots = ["/app/", '/full/remote_app/path/']
|
77
|
+
|
78
|
+
assert_equal "/full/remote_app/path/is/a/path.rb", Coverband::Reporter.filename_from_key(key, roots)
|
79
|
+
end
|
80
|
+
|
41
81
|
private
|
42
82
|
|
43
83
|
def fake_redis
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coverband
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.preRC4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|