routes_coverage 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -9,6 +9,7 @@
|
|
9
9
|
</span>
|
10
10
|
</span> hits/route)
|
11
11
|
</h2>
|
12
|
+
|
12
13
|
<a name="<%= title_id %>"></a>
|
13
14
|
<div>
|
14
15
|
<b><%= result.total_count %></b> routes in total.
|
@@ -16,9 +17,11 @@
|
|
16
17
|
<span class="green"><b><%= result.hit_routes_count %></b> covered</span> and
|
17
18
|
<span class="red"><b><%= result.pending_routes.size %></b> missed </span>
|
18
19
|
</div>
|
20
|
+
|
19
21
|
<table class="route_list">
|
20
22
|
<thead>
|
21
23
|
<tr>
|
24
|
+
<%# NB: columns are also referenced from datatables config in js %>
|
22
25
|
<th>Name</th>
|
23
26
|
<th>Verb</th>
|
24
27
|
<th>Path</th>
|
data/lib/routes_coverage.rb
CHANGED
@@ -5,7 +5,7 @@ require "routes_coverage/middleware"
|
|
5
5
|
require "routes_coverage/formatters/base"
|
6
6
|
require "routes_coverage/formatters/summary_text"
|
7
7
|
require "routes_coverage/formatters/full_text"
|
8
|
-
require "routes_coverage/formatters/
|
8
|
+
require "routes_coverage/formatters/html"
|
9
9
|
|
10
10
|
module RoutesCoverage
|
11
11
|
class Railtie < ::Rails::Railtie
|
@@ -33,7 +33,7 @@ module RoutesCoverage
|
|
33
33
|
@exclude_namespaces = []
|
34
34
|
@minimum_coverage = 1
|
35
35
|
@round_precision = 1
|
36
|
-
@format = :
|
36
|
+
@format = :html
|
37
37
|
@groups = {}
|
38
38
|
end
|
39
39
|
|
@@ -43,8 +43,8 @@ module RoutesCoverage
|
|
43
43
|
Formatters::FullText
|
44
44
|
when :summary_text
|
45
45
|
Formatters::SummaryText
|
46
|
-
when :simplecov_html
|
47
|
-
Formatters::
|
46
|
+
when :html, :simplecov_html
|
47
|
+
Formatters::Html
|
48
48
|
when Formatters::Base
|
49
49
|
format
|
50
50
|
else
|
@@ -97,7 +97,21 @@ module RoutesCoverage
|
|
97
97
|
]
|
98
98
|
}]
|
99
99
|
|
100
|
-
|
100
|
+
if groups.size > 1
|
101
|
+
ungroupped_routes = all_routes.reject{|r|
|
102
|
+
groups.values.any?{|group_routes|
|
103
|
+
group_routes.all_routes.include? r
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
if ungroupped_routes.any?
|
108
|
+
groups["Ungroupped"] = Result.new(
|
109
|
+
ungroupped_routes,
|
110
|
+
Hash[@@route_hit_count.select{|r,_hits| ungroupped_routes.include? r}],
|
111
|
+
settings
|
112
|
+
)
|
113
|
+
end
|
114
|
+
end
|
101
115
|
|
102
116
|
puts
|
103
117
|
puts settings.formatter_class.new(all_result, groups, settings).format
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: routes_coverage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasily Fedoseyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -83,6 +83,8 @@ files:
|
|
83
83
|
- Rakefile
|
84
84
|
- bin/console
|
85
85
|
- bin/setup
|
86
|
+
- compiled_assets/routes.css
|
87
|
+
- compiled_assets/routes.js
|
86
88
|
- gemfiles/.bundle/config
|
87
89
|
- gemfiles/rails_40.gemfile
|
88
90
|
- gemfiles/rails_40.gemfile.lock
|
@@ -102,9 +104,9 @@ files:
|
|
102
104
|
- lib/routes_coverage/adapters/simplecov.rb
|
103
105
|
- lib/routes_coverage/formatters/base.rb
|
104
106
|
- lib/routes_coverage/formatters/full_text.rb
|
107
|
+
- lib/routes_coverage/formatters/html.rb
|
105
108
|
- lib/routes_coverage/formatters/html_views/layout.erb
|
106
109
|
- lib/routes_coverage/formatters/html_views/route_group.erb
|
107
|
-
- lib/routes_coverage/formatters/simplecov_html.rb
|
108
110
|
- lib/routes_coverage/formatters/summary_text.rb
|
109
111
|
- lib/routes_coverage/middleware.rb
|
110
112
|
- lib/routes_coverage/result.rb
|
@@ -1,97 +0,0 @@
|
|
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 SimpleCovHtml < Base
|
10
|
-
def format
|
11
|
-
#TODO: copy assets, if simplecov does not generate a report along us
|
12
|
-
|
13
|
-
# Dir[File.join(File.dirname(__FILE__), "../public/*")].each do |path|
|
14
|
-
# FileUtils.cp_r(path, asset_output_path)
|
15
|
-
# end
|
16
|
-
|
17
|
-
routes_filename = "routes.html"
|
18
|
-
|
19
|
-
File.open(File.join(output_path, routes_filename), "wb") do |file|
|
20
|
-
file.puts template("layout").result(binding)
|
21
|
-
end
|
22
|
-
|
23
|
-
"Routes coverage is #{result.coverage}% Report generated to #{output_path}/#{routes_filename}"
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def template(name)
|
29
|
-
ERB.new(File.read(File.join(File.dirname(__FILE__), "html_views", "#{name}.erb")))
|
30
|
-
end
|
31
|
-
|
32
|
-
def output_path
|
33
|
-
SimpleCov.coverage_path
|
34
|
-
end
|
35
|
-
|
36
|
-
def asset_output_path
|
37
|
-
return @asset_output_path if defined?(@asset_output_path) && @asset_output_path
|
38
|
-
@asset_output_path = File.join(output_path, "assets", SimpleCov::Formatter::HTMLFormatter::VERSION)
|
39
|
-
FileUtils.mkdir_p(@asset_output_path)
|
40
|
-
@asset_output_path
|
41
|
-
end
|
42
|
-
|
43
|
-
def assets_path(name)
|
44
|
-
File.join("./assets", SimpleCov::Formatter::HTMLFormatter::VERSION, name)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Returns the html for the given source_file
|
48
|
-
def formatted_source_file(source_file)
|
49
|
-
template("source_file").result(binding)
|
50
|
-
end
|
51
|
-
|
52
|
-
# Returns a table containing the given source files
|
53
|
-
def route_group_result(title, result)
|
54
|
-
title_id = title.gsub(/^[^a-zA-Z]+/, "").gsub(/[^a-zA-Z0-9\-\_]/, "")
|
55
|
-
# Silence a warning by using the following variable to assign to itself:
|
56
|
-
# "warning: possibly useless use of a variable in void context"
|
57
|
-
# The variable is used by ERB via binding.
|
58
|
-
title_id = title_id
|
59
|
-
template("route_group").result(binding)
|
60
|
-
end
|
61
|
-
|
62
|
-
def coverage_css_class(covered_percent)
|
63
|
-
if covered_percent > 90
|
64
|
-
"green"
|
65
|
-
elsif covered_percent > 80
|
66
|
-
"yellow"
|
67
|
-
else
|
68
|
-
"red"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def strength_css_class(covered_strength)
|
73
|
-
if covered_strength > 1
|
74
|
-
"green"
|
75
|
-
elsif covered_strength == 1
|
76
|
-
"yellow"
|
77
|
-
else
|
78
|
-
"red"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def hits_css_class hits
|
83
|
-
hits > 0 ? 'green' : 'red'
|
84
|
-
end
|
85
|
-
|
86
|
-
# Return a (kind of) unique id for the source file given. Uses SHA1 on path for the id
|
87
|
-
def id(source_file)
|
88
|
-
Digest::SHA1.hexdigest(source_file.filename)
|
89
|
-
end
|
90
|
-
|
91
|
-
def timeago(time)
|
92
|
-
"<abbr class=\"timeago\" title=\"#{time.iso8601}\">#{time.iso8601}</abbr>"
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|