routes_coverage 0.0.3 → 0.1.0
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/Gemfile +5 -0
- data/README.md +17 -55
- data/Rakefile +14 -0
- data/compiled_assets/routes.css +320 -0
- data/compiled_assets/routes.js +526 -0
- data/gemfiles/rails_40.gemfile +4 -1
- data/gemfiles/rails_40.gemfile.lock +12 -1
- data/gemfiles/rails_40_rspec.gemfile +4 -1
- data/gemfiles/rails_40_rspec.gemfile.lock +12 -1
- data/gemfiles/rails_40_simplecov.gemfile +3 -1
- data/gemfiles/rails_40_simplecov.gemfile.lock +4 -1
- data/gemfiles/rails_42.gemfile +4 -1
- data/gemfiles/rails_42.gemfile.lock +11 -1
- data/gemfiles/rails_5.gemfile +4 -1
- data/gemfiles/rails_5.gemfile.lock +12 -1
- data/gemfiles/rails_51.gemfile +4 -1
- data/gemfiles/rails_51.gemfile.lock +12 -1
- data/lib/routes_coverage/adapters/atexit.rb +0 -2
- data/lib/routes_coverage/formatters/html.rb +116 -0
- data/lib/routes_coverage/formatters/html_views/layout.erb +18 -29
- data/lib/routes_coverage/formatters/html_views/route_group.erb +3 -0
- data/lib/routes_coverage/version.rb +1 -1
- data/lib/routes_coverage.rb +19 -5
- metadata +5 -3
- data/lib/routes_coverage/formatters/simplecov_html.rb +0 -97
data/gemfiles/rails_40.gemfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
routes_coverage (0.0
|
4
|
+
routes_coverage (0.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -37,8 +37,10 @@ GEM
|
|
37
37
|
arel (4.0.2)
|
38
38
|
builder (3.1.4)
|
39
39
|
concurrent-ruby (1.0.5)
|
40
|
+
docile (1.1.5)
|
40
41
|
erubis (2.7.0)
|
41
42
|
i18n (0.8.1)
|
43
|
+
json (2.0.2)
|
42
44
|
mail (2.6.5)
|
43
45
|
mime-types (>= 1.16, < 4)
|
44
46
|
mime-types (3.1)
|
@@ -63,6 +65,12 @@ GEM
|
|
63
65
|
rake (>= 0.8.7)
|
64
66
|
thor (>= 0.18.1, < 2.0)
|
65
67
|
rake (10.5.0)
|
68
|
+
sass (3.4.22)
|
69
|
+
simplecov (0.14.1)
|
70
|
+
docile (~> 1.1.0)
|
71
|
+
json (>= 1.8, < 3)
|
72
|
+
simplecov-html (~> 0.10.0)
|
73
|
+
simplecov-html (0.10.0)
|
66
74
|
sprockets (3.7.1)
|
67
75
|
concurrent-ruby (~> 1.0)
|
68
76
|
rack (> 1, < 3)
|
@@ -84,6 +92,9 @@ DEPENDENCIES
|
|
84
92
|
rails (~> 4.0.0)
|
85
93
|
rake (~> 10.0)
|
86
94
|
routes_coverage!
|
95
|
+
sass
|
96
|
+
simplecov
|
97
|
+
sprockets
|
87
98
|
|
88
99
|
BUNDLED WITH
|
89
100
|
1.14.6
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
routes_coverage (0.0
|
4
|
+
routes_coverage (0.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -38,8 +38,10 @@ GEM
|
|
38
38
|
builder (3.1.4)
|
39
39
|
concurrent-ruby (1.0.5)
|
40
40
|
diff-lcs (1.2.5)
|
41
|
+
docile (1.1.5)
|
41
42
|
erubis (2.7.0)
|
42
43
|
i18n (0.8.1)
|
44
|
+
json (2.0.2)
|
43
45
|
mail (2.6.5)
|
44
46
|
mime-types (>= 1.16, < 4)
|
45
47
|
mime-types (3.1)
|
@@ -81,6 +83,12 @@ GEM
|
|
81
83
|
rspec-mocks (~> 3.5.0)
|
82
84
|
rspec-support (~> 3.5.0)
|
83
85
|
rspec-support (3.5.0)
|
86
|
+
sass (3.4.22)
|
87
|
+
simplecov (0.14.1)
|
88
|
+
docile (~> 1.1.0)
|
89
|
+
json (>= 1.8, < 3)
|
90
|
+
simplecov-html (~> 0.10.0)
|
91
|
+
simplecov-html (0.10.0)
|
84
92
|
sprockets (3.7.1)
|
85
93
|
concurrent-ruby (~> 1.0)
|
86
94
|
rack (> 1, < 3)
|
@@ -103,6 +111,9 @@ DEPENDENCIES
|
|
103
111
|
rake (~> 10.0)
|
104
112
|
routes_coverage!
|
105
113
|
rspec-rails
|
114
|
+
sass
|
115
|
+
simplecov
|
116
|
+
sprockets
|
106
117
|
|
107
118
|
BUNDLED WITH
|
108
119
|
1.14.6
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
routes_coverage (0.0
|
4
|
+
routes_coverage (0.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -65,6 +65,7 @@ GEM
|
|
65
65
|
rake (>= 0.8.7)
|
66
66
|
thor (>= 0.18.1, < 2.0)
|
67
67
|
rake (10.5.0)
|
68
|
+
sass (3.4.22)
|
68
69
|
simplecov (0.14.1)
|
69
70
|
docile (~> 1.1.0)
|
70
71
|
json (>= 1.8, < 3)
|
@@ -91,7 +92,9 @@ DEPENDENCIES
|
|
91
92
|
rails (~> 4.0.0)
|
92
93
|
rake (~> 10.0)
|
93
94
|
routes_coverage!
|
95
|
+
sass
|
94
96
|
simplecov
|
97
|
+
sprockets
|
95
98
|
|
96
99
|
BUNDLED WITH
|
97
100
|
1.14.6
|
data/gemfiles/rails_42.gemfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
routes_coverage (0.0
|
4
|
+
routes_coverage (0.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -48,6 +48,7 @@ GEM
|
|
48
48
|
arel (6.0.3)
|
49
49
|
builder (3.2.3)
|
50
50
|
concurrent-ruby (1.0.5)
|
51
|
+
docile (1.1.5)
|
51
52
|
erubis (2.7.0)
|
52
53
|
globalid (0.3.7)
|
53
54
|
activesupport (>= 4.1.0)
|
@@ -92,6 +93,12 @@ GEM
|
|
92
93
|
rake (>= 0.8.7)
|
93
94
|
thor (>= 0.18.1, < 2.0)
|
94
95
|
rake (10.5.0)
|
96
|
+
sass (3.4.22)
|
97
|
+
simplecov (0.14.1)
|
98
|
+
docile (~> 1.1.0)
|
99
|
+
json (>= 1.8, < 3)
|
100
|
+
simplecov-html (~> 0.10.0)
|
101
|
+
simplecov-html (0.10.0)
|
95
102
|
sprockets (3.7.1)
|
96
103
|
concurrent-ruby (~> 1.0)
|
97
104
|
rack (> 1, < 3)
|
@@ -114,6 +121,9 @@ DEPENDENCIES
|
|
114
121
|
rails (~> 4.2.0)
|
115
122
|
rake (~> 10.0)
|
116
123
|
routes_coverage!
|
124
|
+
sass
|
125
|
+
simplecov
|
126
|
+
sprockets
|
117
127
|
|
118
128
|
BUNDLED WITH
|
119
129
|
1.14.6
|
data/gemfiles/rails_5.gemfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
routes_coverage (0.0
|
4
|
+
routes_coverage (0.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -50,10 +50,12 @@ GEM
|
|
50
50
|
arel (7.1.4)
|
51
51
|
builder (3.2.3)
|
52
52
|
concurrent-ruby (1.0.5)
|
53
|
+
docile (1.1.5)
|
53
54
|
erubis (2.7.0)
|
54
55
|
globalid (0.4.0)
|
55
56
|
activesupport (>= 4.2.0)
|
56
57
|
i18n (0.8.1)
|
58
|
+
json (2.0.2)
|
57
59
|
loofah (2.0.3)
|
58
60
|
nokogiri (>= 1.5.9)
|
59
61
|
mail (2.6.5)
|
@@ -94,6 +96,12 @@ GEM
|
|
94
96
|
rake (>= 0.8.7)
|
95
97
|
thor (>= 0.18.1, < 2.0)
|
96
98
|
rake (10.5.0)
|
99
|
+
sass (3.4.22)
|
100
|
+
simplecov (0.14.1)
|
101
|
+
docile (~> 1.1.0)
|
102
|
+
json (>= 1.8, < 3)
|
103
|
+
simplecov-html (~> 0.10.0)
|
104
|
+
simplecov-html (0.10.0)
|
97
105
|
sprockets (3.7.1)
|
98
106
|
concurrent-ruby (~> 1.0)
|
99
107
|
rack (> 1, < 3)
|
@@ -119,6 +127,9 @@ DEPENDENCIES
|
|
119
127
|
rails (~> 5.0.0)
|
120
128
|
rake (~> 10.0)
|
121
129
|
routes_coverage!
|
130
|
+
sass
|
131
|
+
simplecov
|
132
|
+
sprockets
|
122
133
|
|
123
134
|
BUNDLED WITH
|
124
135
|
1.14.6
|
data/gemfiles/rails_51.gemfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
routes_coverage (0.0
|
4
|
+
routes_coverage (0.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -50,10 +50,12 @@ GEM
|
|
50
50
|
arel (8.0.0)
|
51
51
|
builder (3.2.3)
|
52
52
|
concurrent-ruby (1.0.5)
|
53
|
+
docile (1.1.5)
|
53
54
|
erubi (1.6.0)
|
54
55
|
globalid (0.4.0)
|
55
56
|
activesupport (>= 4.2.0)
|
56
57
|
i18n (0.8.1)
|
58
|
+
json (2.0.2)
|
57
59
|
loofah (2.0.3)
|
58
60
|
nokogiri (>= 1.5.9)
|
59
61
|
mail (2.6.5)
|
@@ -94,6 +96,12 @@ GEM
|
|
94
96
|
rake (>= 0.8.7)
|
95
97
|
thor (>= 0.18.1, < 2.0)
|
96
98
|
rake (10.5.0)
|
99
|
+
sass (3.4.22)
|
100
|
+
simplecov (0.14.1)
|
101
|
+
docile (~> 1.1.0)
|
102
|
+
json (>= 1.8, < 3)
|
103
|
+
simplecov-html (~> 0.10.0)
|
104
|
+
simplecov-html (0.10.0)
|
97
105
|
sprockets (3.7.1)
|
98
106
|
concurrent-ruby (~> 1.0)
|
99
107
|
rack (> 1, < 3)
|
@@ -119,6 +127,9 @@ DEPENDENCIES
|
|
119
127
|
rails (~> 5.1.0)
|
120
128
|
rake (~> 10.0)
|
121
129
|
routes_coverage!
|
130
|
+
sass
|
131
|
+
simplecov
|
132
|
+
sprockets
|
122
133
|
|
123
134
|
BUNDLED WITH
|
124
135
|
1.14.6
|
@@ -3,9 +3,7 @@ module RoutesCoverage
|
|
3
3
|
class AtExit
|
4
4
|
def self.use coverer=nil
|
5
5
|
#NB: at_exit order is important, for example minitest uses it to run, need to install our handler before it
|
6
|
-
# also this may interfere with simplecov, need to use SimpleCov.at_exit do...end if defined
|
7
6
|
|
8
|
-
# puts "Using at_exit, note this may be interfered by simplecov etc."
|
9
7
|
RoutesCoverage.reset!
|
10
8
|
at_exit do
|
11
9
|
next if RoutesCoverage.pid != Process.pid
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require "erb"
|
2
|
+
require "cgi"
|
3
|
+
require "fileutils"
|
4
|
+
require "digest/sha1"
|
5
|
+
require "time"
|
6
|
+
|
7
|
+
module RoutesCoverage
|
8
|
+
module Formatters
|
9
|
+
class Html < Base
|
10
|
+
def format
|
11
|
+
routes_filename = "routes.html"
|
12
|
+
|
13
|
+
File.open(File.join(output_path, routes_filename), "wb") do |file|
|
14
|
+
file.puts template("layout").result(binding)
|
15
|
+
end
|
16
|
+
|
17
|
+
"Routes coverage is #{result.coverage}% Report generated to #{output_path}/#{routes_filename}"
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def template(name)
|
23
|
+
ERB.new(File.read(File.join(File.dirname(__FILE__), "html_views", "#{name}.erb")))
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def root(root = nil)
|
28
|
+
#TODO: config for this
|
29
|
+
return SimpleCov.root if defined? SimpleCov
|
30
|
+
return @root if defined?(@root) && root.nil?
|
31
|
+
@root = File.expand_path(root || Dir.getwd)
|
32
|
+
end
|
33
|
+
|
34
|
+
def coverage_dir(dir = nil)
|
35
|
+
#TODO: config for this
|
36
|
+
return SimpleCov.coverage_dir if defined? SimpleCov
|
37
|
+
return @coverage_dir if defined?(@coverage_dir) && dir.nil?
|
38
|
+
@coverage_path = nil # invalidate cache
|
39
|
+
@coverage_dir = (dir || "coverage")
|
40
|
+
end
|
41
|
+
|
42
|
+
def output_path
|
43
|
+
@coverage_path ||= File.expand_path(coverage_dir, root).tap do |path|
|
44
|
+
FileUtils.mkdir_p path
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def project_name
|
49
|
+
return SimpleCov.project_name if defined? SimpleCov
|
50
|
+
|
51
|
+
@project_name ||= File.basename(root.split("/").last).capitalize.tr("_", " ")
|
52
|
+
end
|
53
|
+
|
54
|
+
def asset_content name
|
55
|
+
File.read(File.expand_path("../../../compiled_assets/#{name}", File.dirname(__FILE__)))
|
56
|
+
end
|
57
|
+
|
58
|
+
def style_asset_link
|
59
|
+
"<style>\n#{asset_content 'routes.css'}</style>"
|
60
|
+
end
|
61
|
+
|
62
|
+
def route_group_result(title_id, title, result)
|
63
|
+
template("route_group").result(binding)
|
64
|
+
end
|
65
|
+
|
66
|
+
def coverage_css_class(covered_percent)
|
67
|
+
if covered_percent > 90
|
68
|
+
"green"
|
69
|
+
elsif covered_percent > 80
|
70
|
+
"yellow"
|
71
|
+
else
|
72
|
+
"red"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def strength_css_class(covered_strength)
|
77
|
+
if covered_strength > 1
|
78
|
+
"green"
|
79
|
+
elsif covered_strength == 1
|
80
|
+
"yellow"
|
81
|
+
else
|
82
|
+
"red"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def hits_css_class hits
|
87
|
+
hits > 0 ? 'green' : 'red'
|
88
|
+
end
|
89
|
+
|
90
|
+
def timeago(time)
|
91
|
+
"<abbr class=\"timeago\" title=\"#{time.iso8601}\">#{time.iso8601}</abbr>"
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
def all_result_groups
|
96
|
+
return @all_result_groups if @all_result_groups
|
97
|
+
@all_result_groups = [
|
98
|
+
{
|
99
|
+
id: 'all_routes',
|
100
|
+
name: 'All Routes',
|
101
|
+
result: result,
|
102
|
+
}
|
103
|
+
]
|
104
|
+
@all_result_groups += groups.map do |group_name, group_result|
|
105
|
+
{
|
106
|
+
id: group_name.gsub(/^[^a-zA-Z]+/, "").gsub(/[^a-zA-Z0-9\-\_]/, ""),
|
107
|
+
name: group_name,
|
108
|
+
result: group_result,
|
109
|
+
}
|
110
|
+
end
|
111
|
+
|
112
|
+
@all_result_groups
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -1,30 +1,9 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html xmlns='http://www.w3.org/1999/xhtml'>
|
3
3
|
<head>
|
4
|
-
<title>
|
4
|
+
<title>Routes coverage for <%= project_name %></title>
|
5
5
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
-
|
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.coverage)}.png") %>" />
|
9
|
-
<link rel="icon" type="image/png" href="<%= assets_path('favicon.png') %>" />
|
10
|
-
|
11
|
-
<script>
|
12
|
-
$(document).ready(function() {
|
13
|
-
$('.route_list').dataTable({
|
14
|
-
"aaSorting": [], //[[ 1, "asc" ]],
|
15
|
-
"bPaginate": false,
|
16
|
-
"bJQueryUI": true,
|
17
|
-
"aoColumns": [
|
18
|
-
null, //name
|
19
|
-
null, //verb
|
20
|
-
null, //path
|
21
|
-
null, //action
|
22
|
-
null, //covered yes/no
|
23
|
-
null, //hits count
|
24
|
-
]
|
25
|
-
});
|
26
|
-
});
|
27
|
-
</script>
|
6
|
+
<%= style_asset_link %>
|
28
7
|
</head>
|
29
8
|
|
30
9
|
<body>
|
@@ -33,21 +12,31 @@
|
|
33
12
|
</div>
|
34
13
|
<div id="wrapper" style="display:none;">
|
35
14
|
<div class="timestamp">Generated <%= timeago(Time.now) %></div>
|
36
|
-
<ul class="group_tabs"
|
15
|
+
<ul class="group_tabs">
|
16
|
+
<% all_result_groups.each do |grp| %>
|
17
|
+
<li>
|
18
|
+
<a href="#<%= grp[:id] %>" class="<%= grp[:id] %>">
|
19
|
+
<%= grp[:name] %>
|
20
|
+
(<span class="<%= coverage_css_class(grp[:result].coverage.to_f) %>"><%= result.coverage %>%</span>)
|
21
|
+
</a>
|
22
|
+
</li>
|
23
|
+
<% end %>
|
24
|
+
</ul>
|
37
25
|
|
38
26
|
<div id="content">
|
39
|
-
|
40
|
-
|
41
|
-
<% groups.each do |name, group_result| %>
|
42
|
-
<%= route_group_result(name, group_result) %>
|
27
|
+
<% all_result_groups.each do |grp| %>
|
28
|
+
<%= route_group_result(grp[:id], grp[:name], grp[:result]) %>
|
43
29
|
<% end %>
|
44
30
|
</div>
|
45
31
|
|
46
32
|
<div id="footer">
|
47
33
|
Generated by <a href="http://github.com/Vasfed/routes_coverage">routes_coverage</a> v<%= RoutesCoverage::VERSION %>
|
48
|
-
and simplecov-html v<%= SimpleCov::Formatter::HTMLFormatter::VERSION %><br/>
|
49
34
|
</div>
|
50
35
|
|
51
36
|
</div>
|
52
37
|
</body>
|
38
|
+
|
39
|
+
<script>
|
40
|
+
<%= asset_content 'routes.js' %>
|
41
|
+
</script>
|
53
42
|
</html>
|