coverband 4.0.0 → 4.0.1.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/.rubocop.yml +0 -4
- data/changes.md +57 -52
- data/coverband.gemspec +3 -5
- data/lib/coverband.rb +6 -1
- data/lib/coverband/reporters/html_report.rb +36 -0
- data/lib/coverband/reporters/web.rb +16 -13
- data/lib/coverband/utils/file_list.rb +68 -0
- data/lib/coverband/utils/html_formatter.rb +119 -0
- data/lib/coverband/utils/lines_classifier.rb +54 -0
- data/lib/coverband/utils/result.rb +108 -0
- data/lib/coverband/utils/s3_report.rb +2 -4
- data/lib/coverband/utils/source_file.rb +208 -0
- data/lib/coverband/utils/tasks.rb +2 -6
- data/lib/coverband/version.rb +1 -1
- data/public/application.css +799 -0
- data/public/application.js +1708 -0
- data/public/colorbox/border.png +0 -0
- data/public/colorbox/controls.png +0 -0
- data/public/colorbox/loading.gif +0 -0
- data/public/colorbox/loading_background.png +0 -0
- data/public/favicon_green.png +0 -0
- data/public/favicon_red.png +0 -0
- data/public/favicon_yellow.png +0 -0
- data/public/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/images/ui-icons_222222_256x240.png +0 -0
- data/public/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/images/ui-icons_454545_256x240.png +0 -0
- data/public/images/ui-icons_888888_256x240.png +0 -0
- data/public/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/loading.gif +0 -0
- data/public/magnify.png +0 -0
- data/test/unit/full_stack_test.rb +2 -2
- data/test/unit/reports_console_test.rb +1 -1
- data/test/unit/{reports_simple_cov_test.rb → reports_html_test.rb} +4 -7
- data/test/unit/reports_web_test.rb +3 -4
- data/test/unit/utils_s3_report_test.rb +1 -3
- data/views/file_list.erb +45 -0
- data/views/layout.erb +39 -0
- data/views/source_file.erb +23 -0
- metadata +49 -17
- data/lib/coverband/reporters/simple_cov_report.rb +0 -45
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/public/loading.gif
ADDED
Binary file
|
data/public/magnify.png
ADDED
Binary file
|
@@ -34,9 +34,9 @@ class FullStackTest < Test::Unit::TestCase
|
|
34
34
|
expected = [nil, nil, 1, nil, 1, 1, 2, nil, nil]
|
35
35
|
assert_equal expected, Coverband.configuration.store.coverage[@rack_file]
|
36
36
|
|
37
|
-
expected = nil
|
37
|
+
# expected = nil
|
38
38
|
# TODO: read the html to test it matches expectations? or return data as a hash?
|
39
|
-
# actual = Coverband::Reporters::
|
39
|
+
# actual = Coverband::Reporters::HTMLReport.report(Coverband.configuration.store, open_report: false)
|
40
40
|
# assert_equal expected, actual
|
41
41
|
end
|
42
42
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
4
4
|
|
5
|
-
class
|
5
|
+
class ReportHTMLTest < Test::Unit::TestCase
|
6
6
|
BASE_KEY = Coverband::Adapters::RedisStore::BASE_KEY
|
7
7
|
|
8
8
|
def setup
|
@@ -18,14 +18,11 @@ class ReportsSimpleCovTest < Test::Unit::TestCase
|
|
18
18
|
config.s3_bucket = nil
|
19
19
|
config.ignore = ['notsomething.rb']
|
20
20
|
end
|
21
|
-
Coverband.configuration.logger.stubs('info')
|
22
21
|
mock_file_hash
|
23
22
|
@store.send(:save_report, basic_coverage)
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
SimpleCov.stubs(:root)
|
29
|
-
Coverband::Reporters::SimpleCovReport.report(@store, open_report: false)
|
24
|
+
html = Coverband::Reporters::HTMLReport.report(@store,
|
25
|
+
html: true, open_report: false)
|
26
|
+
assert_match 'Generated by', html
|
30
27
|
end
|
31
28
|
end
|
@@ -9,7 +9,7 @@ ENV['RACK_ENV'] = 'test'
|
|
9
9
|
|
10
10
|
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.2.0')
|
11
11
|
module Coverband
|
12
|
-
class
|
12
|
+
class WebTest < Test::Unit::TestCase
|
13
13
|
include Rack::Test::Methods
|
14
14
|
|
15
15
|
def app
|
@@ -20,7 +20,7 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.2.0')
|
|
20
20
|
Coverband.configuration.s3_bucket = nil
|
21
21
|
end
|
22
22
|
|
23
|
-
# TODO add tests for all endpoints
|
23
|
+
# TODO: add tests for all endpoints
|
24
24
|
test 'renders index content' do
|
25
25
|
get '/'
|
26
26
|
assert last_response.ok?
|
@@ -28,8 +28,7 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.2.0')
|
|
28
28
|
end
|
29
29
|
|
30
30
|
test 'renders show content' do
|
31
|
-
Coverband.
|
32
|
-
Coverband::Utils::S3Report.any_instance.expects(:retrieve).returns('content')
|
31
|
+
Coverband::Reporters::HTMLReport.expects(:report).returns('content')
|
33
32
|
get '/show'
|
34
33
|
assert last_response.ok?
|
35
34
|
assert_equal 'content', last_response.body
|
@@ -4,9 +4,7 @@ require 'aws-sdk'
|
|
4
4
|
module Coverband
|
5
5
|
class S3ReportTest < Test::Unit::TestCase
|
6
6
|
def html_version
|
7
|
-
|
8
|
-
rescue StandardError
|
9
|
-
'0.10.1'
|
7
|
+
Coverband::VERSION
|
10
8
|
end
|
11
9
|
|
12
10
|
test 'it writes the coverage report to s3' do
|
data/views/file_list.erb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
<div class="file_list_container" id="<%= title_id %>">
|
2
|
+
<h2>
|
3
|
+
<span class="group_name"><%= title %></span>
|
4
|
+
(<span class="covered_percent"><span class="<%= coverage_css_class(source_files.covered_percent) %>"><%= source_files.covered_percent.round(2) %>%</span></span>
|
5
|
+
covered at
|
6
|
+
<span class="covered_strength">
|
7
|
+
<span class="<%= strength_css_class(source_files.covered_strength) %>">
|
8
|
+
<%= source_files.covered_strength.round(2) %>
|
9
|
+
</span>
|
10
|
+
</span> hits/line)
|
11
|
+
</h2>
|
12
|
+
<a name="<%= title_id %>"></a>
|
13
|
+
<div>
|
14
|
+
<b><%= source_files.length %></b> files in total.
|
15
|
+
<b><%= source_files.lines_of_code %></b> relevant lines.
|
16
|
+
<span class="green"><b><%= source_files.covered_lines %></b> lines covered</span> and
|
17
|
+
<span class="red"><b><%= source_files.missed_lines %></b> lines missed </span>
|
18
|
+
</div>
|
19
|
+
<table class="file_list">
|
20
|
+
<thead>
|
21
|
+
<tr>
|
22
|
+
<th>File</th>
|
23
|
+
<th>% covered</th>
|
24
|
+
<th>Lines</th>
|
25
|
+
<th>Relevant Lines</th>
|
26
|
+
<th>Lines covered</th>
|
27
|
+
<th>Lines missed</th>
|
28
|
+
<th>Avg. Hits / Line</th>
|
29
|
+
</tr>
|
30
|
+
</thead>
|
31
|
+
<tbody>
|
32
|
+
<% source_files.each do |source_file| %>
|
33
|
+
<tr>
|
34
|
+
<td class="strong"><%= link_to_source_file(source_file) %></td>
|
35
|
+
<td class="<%= coverage_css_class(source_file.covered_percent) %> strong"><%= source_file.covered_percent.round(2).to_s %> %</td>
|
36
|
+
<td><%= source_file.lines.count %></td>
|
37
|
+
<td><%= source_file.covered_lines.count + source_file.missed_lines.count %></td>
|
38
|
+
<td><%= source_file.covered_lines.count %></td>
|
39
|
+
<td><%= source_file.missed_lines.count %></td>
|
40
|
+
<td><%= source_file.covered_strength %></td>
|
41
|
+
</tr>
|
42
|
+
<% end %>
|
43
|
+
</tbody>
|
44
|
+
</table>
|
45
|
+
</div>
|
data/views/layout.erb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
+
<head>
|
4
|
+
<title>Code coverage for <%= Coverband::VERSION %></title>
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
+
<script src='<%= assets_path('application.js') %>' type='text/javascript'></script>
|
7
|
+
<link href='<%= assets_path('application.css') %>' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
8
|
+
<link rel="shortcut icon" type="image/png" href="<%= assets_path("favicon_#{coverage_css_class(result.source_files.covered_percent)}.png") %>" />
|
9
|
+
<link rel="icon" type="image/png" href="<%= assets_path('favicon.png') %>" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div id="loading">
|
14
|
+
<img src="<%= assets_path('loading.gif') %>" alt="loading"/>
|
15
|
+
</div>
|
16
|
+
<div id="wrapper" style="display:none;">
|
17
|
+
<div class="timestamp">Generated <%= timeago(Time.now) %></div>
|
18
|
+
<ul class="group_tabs"></ul>
|
19
|
+
|
20
|
+
<div id="content">
|
21
|
+
<%= formatted_file_list("All Files", result.source_files) %>
|
22
|
+
|
23
|
+
<% result.groups.each do |name, files| %>
|
24
|
+
<%= formatted_file_list(name, files) %>
|
25
|
+
<% end %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div id="footer">
|
29
|
+
Generated by <a href="http://github.com/danmayer/coverband">Coverband</a> v<%= Coverband::VERSION %>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<div class="source_files">
|
33
|
+
<% result.source_files.each do |source_file| %>
|
34
|
+
<%= formatted_source_file(source_file) %>
|
35
|
+
<% end %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</body>
|
39
|
+
</html>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="source_table" id="<%= id source_file %>">
|
2
|
+
<div class="header">
|
3
|
+
<h3><%= shortened_filename source_file %></h3>
|
4
|
+
<h4><span class="<%= coverage_css_class(source_file.covered_percent) %>"><%= source_file.covered_percent.round(2).to_s %> %</span> covered</h4>
|
5
|
+
<div>
|
6
|
+
<b><%= source_file.lines_of_code %></b> relevant lines.
|
7
|
+
<span class="green"><b><%= source_file.covered_lines.count %></b> lines covered</span> and
|
8
|
+
<span class="red"><b><%= source_file.missed_lines.count %></b> lines missed.</span>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<pre>
|
13
|
+
<ol>
|
14
|
+
<% source_file.lines.each do |line| %>
|
15
|
+
<li class="<%= line.status %>" data-hits="<%= line.coverage ? line.coverage : '' %>" data-linenumber="<%= line.number %>">
|
16
|
+
<% if line.covered? %><span class="hits"><%= line.coverage %></span><% end %>
|
17
|
+
<% if line.skipped? %><span class="hits">skipped</span><% end %>
|
18
|
+
<code class="ruby"><%= CGI.escapeHTML(line.src.chomp) %></code>
|
19
|
+
</li>
|
20
|
+
<% end %>
|
21
|
+
</ol>
|
22
|
+
</pre>
|
23
|
+
</div>
|
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: 4.0.
|
4
|
+
version: 4.0.1.alpha
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: simplecov
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: test-unit
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: classifier-reborn
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -179,13 +179,13 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: pry-byebug
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
|
-
type: :
|
188
|
+
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
@@ -193,19 +193,19 @@ dependencies:
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: redis
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - "
|
199
|
+
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0
|
201
|
+
version: '0'
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - "
|
206
|
+
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version: 0
|
208
|
+
version: '0'
|
209
209
|
description: Rack middleware to help measure production code usage (LOC runtime usage)
|
210
210
|
email:
|
211
211
|
- dan@mayerdan.com
|
@@ -237,12 +237,41 @@ files:
|
|
237
237
|
- lib/coverband/integrations/rack_server_check.rb
|
238
238
|
- lib/coverband/reporters/base.rb
|
239
239
|
- lib/coverband/reporters/console_report.rb
|
240
|
-
- lib/coverband/reporters/
|
240
|
+
- lib/coverband/reporters/html_report.rb
|
241
241
|
- lib/coverband/reporters/web.rb
|
242
|
+
- lib/coverband/utils/file_list.rb
|
243
|
+
- lib/coverband/utils/html_formatter.rb
|
244
|
+
- lib/coverband/utils/lines_classifier.rb
|
242
245
|
- lib/coverband/utils/railtie.rb
|
246
|
+
- lib/coverband/utils/result.rb
|
243
247
|
- lib/coverband/utils/s3_report.rb
|
248
|
+
- lib/coverband/utils/source_file.rb
|
244
249
|
- lib/coverband/utils/tasks.rb
|
245
250
|
- lib/coverband/version.rb
|
251
|
+
- public/application.css
|
252
|
+
- public/application.js
|
253
|
+
- public/colorbox/border.png
|
254
|
+
- public/colorbox/controls.png
|
255
|
+
- public/colorbox/loading.gif
|
256
|
+
- public/colorbox/loading_background.png
|
257
|
+
- public/favicon_green.png
|
258
|
+
- public/favicon_red.png
|
259
|
+
- public/favicon_yellow.png
|
260
|
+
- public/images/ui-bg_flat_0_aaaaaa_40x100.png
|
261
|
+
- public/images/ui-bg_flat_75_ffffff_40x100.png
|
262
|
+
- public/images/ui-bg_glass_55_fbf9ee_1x400.png
|
263
|
+
- public/images/ui-bg_glass_65_ffffff_1x400.png
|
264
|
+
- public/images/ui-bg_glass_75_dadada_1x400.png
|
265
|
+
- public/images/ui-bg_glass_75_e6e6e6_1x400.png
|
266
|
+
- public/images/ui-bg_glass_95_fef1ec_1x400.png
|
267
|
+
- public/images/ui-bg_highlight-soft_75_cccccc_1x100.png
|
268
|
+
- public/images/ui-icons_222222_256x240.png
|
269
|
+
- public/images/ui-icons_2e83ff_256x240.png
|
270
|
+
- public/images/ui-icons_454545_256x240.png
|
271
|
+
- public/images/ui-icons_888888_256x240.png
|
272
|
+
- public/images/ui-icons_cd0a0a_256x240.png
|
273
|
+
- public/loading.gif
|
274
|
+
- public/magnify.png
|
246
275
|
- test/benchmarks/.gitignore
|
247
276
|
- test/benchmarks/benchmark.rake
|
248
277
|
- test/benchmarks/dog.rb
|
@@ -278,9 +307,12 @@ files:
|
|
278
307
|
- test/unit/rails_full_stack_test.rb
|
279
308
|
- test/unit/reports_base_test.rb
|
280
309
|
- test/unit/reports_console_test.rb
|
281
|
-
- test/unit/
|
310
|
+
- test/unit/reports_html_test.rb
|
282
311
|
- test/unit/reports_web_test.rb
|
283
312
|
- test/unit/utils_s3_report_test.rb
|
313
|
+
- views/file_list.erb
|
314
|
+
- views/layout.erb
|
315
|
+
- views/source_file.erb
|
284
316
|
homepage: https://github.com/danmayer/coverband
|
285
317
|
licenses:
|
286
318
|
- MIT
|
@@ -296,9 +328,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
296
328
|
version: '0'
|
297
329
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
330
|
requirements:
|
299
|
-
- - "
|
331
|
+
- - ">"
|
300
332
|
- !ruby/object:Gem::Version
|
301
|
-
version:
|
333
|
+
version: 1.3.1
|
302
334
|
requirements: []
|
303
335
|
rubyforge_project:
|
304
336
|
rubygems_version: 2.7.3
|
@@ -341,6 +373,6 @@ test_files:
|
|
341
373
|
- test/unit/rails_full_stack_test.rb
|
342
374
|
- test/unit/reports_base_test.rb
|
343
375
|
- test/unit/reports_console_test.rb
|
344
|
-
- test/unit/
|
376
|
+
- test/unit/reports_html_test.rb
|
345
377
|
- test/unit/reports_web_test.rb
|
346
378
|
- test/unit/utils_s3_report_test.rb
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Coverband
|
4
|
-
module Reporters
|
5
|
-
class SimpleCovReport < Base
|
6
|
-
def self.report(store, options = {})
|
7
|
-
begin
|
8
|
-
require 'simplecov'
|
9
|
-
rescue StandardError
|
10
|
-
msg = 'coverband requires simplecov to generate a report, when config.reporter=scov'
|
11
|
-
Coverband.configuration.logger.error msg
|
12
|
-
return
|
13
|
-
end
|
14
|
-
|
15
|
-
scov_style_report = super(store, options)
|
16
|
-
open_report = options.fetch(:open_report) { true }
|
17
|
-
|
18
|
-
# set root to show files if user has simplecov profiles
|
19
|
-
# https://github.com/danmayer/coverband/issues/59
|
20
|
-
SimpleCov.root(current_root)
|
21
|
-
|
22
|
-
# add in files never hit in coverband
|
23
|
-
SimpleCov.track_files "#{current_root}/{app,lib,config}/**/*.{rb,haml,erb,slim}"
|
24
|
-
|
25
|
-
# still apply coverband filters
|
26
|
-
report_files = SimpleCov.add_not_loaded_files(scov_style_report)
|
27
|
-
filtered_report_files = {}
|
28
|
-
report_files.each_pair do |file, data|
|
29
|
-
next if Coverband.configuration.ignore.any? { |i| file.match(i) }
|
30
|
-
filtered_report_files[file] = data
|
31
|
-
end
|
32
|
-
|
33
|
-
SimpleCov::Result.new(filtered_report_files).format!
|
34
|
-
|
35
|
-
if open_report
|
36
|
-
`open #{SimpleCov.coverage_dir}/index.html`
|
37
|
-
else
|
38
|
-
Coverband.configuration.logger.info "report is ready and viewable: open #{SimpleCov.coverage_dir}/index.html"
|
39
|
-
end
|
40
|
-
|
41
|
-
Coverband::Utils::S3Report.instance.persist! if Coverband.configuration.s3_bucket
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|