w3clove 0.3.2 → 0.3.3
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.
- data/bin/w3clove +1 -1
- data/lib/w3clove/page.rb +6 -2
- data/lib/w3clove/templates/w3clove.html.erb +50 -10
- data/lib/w3clove/version.rb +1 -1
- data/spec/page_spec.rb +48 -5
- metadata +3 -3
data/bin/w3clove
CHANGED
@@ -7,7 +7,7 @@ begin
|
|
7
7
|
if ARGV.length == 2
|
8
8
|
W3Clove::Validator.check(ARGV[0], ARGV[1])
|
9
9
|
else
|
10
|
-
puts "USAGE:
|
10
|
+
puts "USAGE: w3clove url_of_xml_sitemap output_file.html"
|
11
11
|
end
|
12
12
|
rescue
|
13
13
|
puts "There was an error processing your request"
|
data/lib/w3clove/page.rb
CHANGED
@@ -31,7 +31,9 @@ module W3Clove
|
|
31
31
|
# If it has no validation errors, it will be an empty array.
|
32
32
|
# It an exception occurs, it will be nil.
|
33
33
|
def errors
|
34
|
-
@errors ||= validations.errors
|
34
|
+
@errors ||= validations.errors
|
35
|
+
.select {|e| e.message_id && !e.message_id.empty?}
|
36
|
+
.map do |e|
|
35
37
|
W3Clove::Message.new(e.message_id, e.line, e.message, :error)
|
36
38
|
end
|
37
39
|
rescue Exception => e
|
@@ -44,7 +46,9 @@ module W3Clove
|
|
44
46
|
# If it has no validation warnings, it will be an empty array.
|
45
47
|
# It an exception occurs, it will be nil.
|
46
48
|
def warnings
|
47
|
-
@warnings ||= validations.warnings
|
49
|
+
@warnings ||= validations.warnings
|
50
|
+
.select {|w| w.message_id && !w.message_id.empty?}
|
51
|
+
.map do |w|
|
48
52
|
W3Clove::Message.new(w.message_id, w.line, w.message, :warning)
|
49
53
|
end
|
50
54
|
rescue Exception => e
|
@@ -23,6 +23,8 @@
|
|
23
23
|
border: 1px solid black;
|
24
24
|
background-color: white;
|
25
25
|
}
|
26
|
+
a { text-decoration: none; color: black;}
|
27
|
+
a:hover { text-decoration: underline; }
|
26
28
|
</style>
|
27
29
|
</head>
|
28
30
|
<body>
|
@@ -31,16 +33,28 @@
|
|
31
33
|
</div>
|
32
34
|
|
33
35
|
<div id="main">
|
34
|
-
<h1>Report for <%= @url %></h1>
|
36
|
+
<h1>Report for <a href='<%= @url %>'><%= @url %></a></h1>
|
35
37
|
|
36
38
|
<h2>SITEMAP SUMMARY</h2>
|
37
39
|
<p>TOTAL: <%= errors.length %> errors, <%= warnings.length %> warnings.</p>
|
38
|
-
|
39
40
|
<% if errors.length > 0 %>
|
40
41
|
<h2>POPULAR ERRORS</h2>
|
41
42
|
<ul>
|
42
43
|
<% errors.group_by {|e| e.message_id}.sort_by {|m,e| e.length}.reverse.each do |message_id, errors| %>
|
43
|
-
|
44
|
+
<% if message_id == 'html5' %>
|
45
|
+
<li><%= errors.length %> HTML5 errors found</li>
|
46
|
+
<ul>
|
47
|
+
<% errors.select{|e| e.message_id == 'html5'}
|
48
|
+
.group_by {|e| e.text}
|
49
|
+
.sort_by {|m,e| e.length}
|
50
|
+
.reverse.each do |text, errors| %>
|
51
|
+
<li><%= errors.length %> times: <strong><%= text %></strong></li>
|
52
|
+
<% end %>
|
53
|
+
</ul>
|
54
|
+
<% elsif message_id %>
|
55
|
+
<li>error <a href="http://validator.w3.org/docs/errors.html#ve-<%= message_id %>"><%= message_id %></a>
|
56
|
+
happens <%= errors.length %> times</li>
|
57
|
+
<% end %>
|
44
58
|
<% end %>
|
45
59
|
</ul>
|
46
60
|
<% end %>
|
@@ -49,7 +63,20 @@
|
|
49
63
|
<h2>POPULAR WARNINGS</h2>
|
50
64
|
<ul>
|
51
65
|
<% warnings.group_by {|w| w.message_id}.sort_by {|m,w| w.length}.reverse.each do |message_id, warnings| %>
|
52
|
-
|
66
|
+
<% if message_id == 'html5' %>
|
67
|
+
<li><%= warnings.length %> HTML5 warnings found</li>
|
68
|
+
<ul>
|
69
|
+
<% warnings.select{|w| w.message_id == 'html5'}
|
70
|
+
.group_by {|w| w.text}
|
71
|
+
.sort_by {|m,w| w.length}
|
72
|
+
.reverse.each do |text, warnings| %>
|
73
|
+
<li><%= warnings.length %> times: <strong><%= text %></strong></li>
|
74
|
+
<% end %>
|
75
|
+
</ul>
|
76
|
+
<% elsif message_id %>
|
77
|
+
<li>warning <a href="http://validator.w3.org/docs/errors.html#ve-<%= message_id %>"><%= message_id %></a>
|
78
|
+
found <%= warnings.length %> times</li>
|
79
|
+
<% end %>
|
53
80
|
<% end %>
|
54
81
|
</ul>
|
55
82
|
<% end %>
|
@@ -59,24 +86,36 @@
|
|
59
86
|
<h2>DETAILS PER PAGE</h2>
|
60
87
|
<% processed_pages.each do |page| %>
|
61
88
|
<div class='page'>
|
62
|
-
<h3><%= page.url %></h3>
|
89
|
+
<h3><a href='<%= page.url %>'><%= page.url %></a></h3>
|
63
90
|
<p class='page_summary'>
|
64
91
|
<%= "#{page.errors.length} errors, #{page.warnings.length} warnings" %>
|
65
92
|
</p>
|
66
93
|
|
67
94
|
<ul class="page_errors">
|
68
|
-
<% page.errors.each do |error| %>
|
95
|
+
<% page.errors.sort_by {|e| e.line.to_i}.each do |error| %>
|
69
96
|
<li>
|
70
|
-
|
97
|
+
<% if error.message_id == 'html5' %>
|
98
|
+
HTML5 error on line <%= error.line %>:
|
99
|
+
<% else %>
|
100
|
+
Error <a href="http://validator.w3.org/docs/errors.html#ve-<%= error.message_id %>"><%= error.message_id %></a>
|
101
|
+
on line <%= error.line %>:
|
102
|
+
<% end %>
|
103
|
+
|
71
104
|
<%= error.text %>
|
72
105
|
</li>
|
73
106
|
<% end %>
|
74
107
|
</ul>
|
75
108
|
|
76
109
|
<ul class="page_warnings">
|
77
|
-
<% page.warnings.each do |warning| %>
|
110
|
+
<% page.warnings.sort_by {|w| w.line.to_i}.each do |warning| %>
|
78
111
|
<li>
|
79
|
-
|
112
|
+
<% if warning.message_id == 'html5' %>
|
113
|
+
HTML5 warning on line <%= warning.line %>:
|
114
|
+
<% else %>
|
115
|
+
Warning <a href="http://validator.w3.org/docs/errors.html#ve-<%= warning.message_id %>"><%= warning.message_id %></a>
|
116
|
+
on line <%= warning.line %>:
|
117
|
+
<% end %>
|
118
|
+
|
80
119
|
<%= warning.text %>
|
81
120
|
</li>
|
82
121
|
<% end %>
|
@@ -87,7 +126,8 @@
|
|
87
126
|
</div>
|
88
127
|
|
89
128
|
<div id="footer">
|
90
|
-
<strong>w3clove</strong>@2011 <a href='http://jaimeiniesta.com'>Jaime Iniesta</a>.
|
129
|
+
<strong>w3clove</strong>@2011 <a href='http://jaimeiniesta.com'>Jaime Iniesta</a>.
|
130
|
+
Get w3clove from <a href="http://github.com/jaimeiniesta/w3clove">github</a>.
|
91
131
|
</div>
|
92
132
|
</body>
|
93
133
|
</html>
|
data/lib/w3clove/version.rb
CHANGED
data/spec/page_spec.rb
CHANGED
@@ -5,7 +5,10 @@ require_relative 'spec_helper'
|
|
5
5
|
describe W3Clove::Page do
|
6
6
|
before(:each) do
|
7
7
|
@page = W3Clove::Page.new('http://www.ryanair.com/es/')
|
8
|
-
MarkupValidator.any_instance
|
8
|
+
MarkupValidator.any_instance
|
9
|
+
.stubs(:validate_uri)
|
10
|
+
.with('http://www.ryanair.com/es/')
|
11
|
+
.returns(stubbed_validator_results)
|
9
12
|
end
|
10
13
|
|
11
14
|
it "should have an URL" do
|
@@ -19,7 +22,10 @@ describe W3Clove::Page do
|
|
19
22
|
|
20
23
|
it "should be valid when it has no errors, even if it has warnings" do
|
21
24
|
page = W3Clove::Page.new('http://example.com/no_errors_but_warnings')
|
22
|
-
MarkupValidator.any_instance
|
25
|
+
MarkupValidator.any_instance
|
26
|
+
.stubs(:validate_uri)
|
27
|
+
.with('http://example.com/no_errors_but_warnings')
|
28
|
+
.returns(stubbed_validator_results(false))
|
23
29
|
page.errors.should be_empty
|
24
30
|
page.warnings.should_not be_empty
|
25
31
|
page.should be_valid
|
@@ -27,7 +33,10 @@ describe W3Clove::Page do
|
|
27
33
|
|
28
34
|
it "should not be valid if an exception happened when validating" do
|
29
35
|
page = W3Clove::Page.new('http://example.com/timeout')
|
30
|
-
MarkupValidator.any_instance
|
36
|
+
MarkupValidator.any_instance
|
37
|
+
.stubs(:validate_uri)
|
38
|
+
.with('http://example.com/timeout')
|
39
|
+
.raises(TimeoutError)
|
31
40
|
page.errors.should be_nil
|
32
41
|
page.should_not be_valid
|
33
42
|
end
|
@@ -80,7 +89,10 @@ describe W3Clove::Page do
|
|
80
89
|
|
81
90
|
it "should recover from timeouts when checking for errors" do
|
82
91
|
page = W3Clove::Page.new('http://example.com/timeout')
|
83
|
-
MarkupValidator.any_instance
|
92
|
+
MarkupValidator.any_instance
|
93
|
+
.stubs(:validate_uri)
|
94
|
+
.with('http://example.com/timeout')
|
95
|
+
.raises(TimeoutError)
|
84
96
|
lambda { page.errors }.should_not raise_error
|
85
97
|
page.errors.should be_nil
|
86
98
|
page.exception.should == 'Timeout::Error'
|
@@ -88,10 +100,41 @@ describe W3Clove::Page do
|
|
88
100
|
|
89
101
|
it "should recover from timeouts when checking for warnings" do
|
90
102
|
page = W3Clove::Page.new('http://example.com/timeout')
|
91
|
-
MarkupValidator.any_instance
|
103
|
+
MarkupValidator.any_instance
|
104
|
+
.stubs(:validate_uri)
|
105
|
+
.with('http://example.com/timeout')
|
106
|
+
.raises(TimeoutError)
|
92
107
|
lambda { page.warnings }.should_not raise_error
|
93
108
|
page.warnings.should be_nil
|
94
109
|
page.exception.should == 'Timeout::Error'
|
95
110
|
end
|
111
|
+
|
112
|
+
it "should not record empty errors returned by the validator" do
|
113
|
+
mocked_validator = W3Clove::MockedValidator.new
|
114
|
+
mocked_validator.add_error('25', '92', message_text('25'))
|
115
|
+
mocked_validator.add_error('', '', '')
|
116
|
+
mocked_validator.add_error(nil, nil, nil)
|
117
|
+
MarkupValidator.any_instance
|
118
|
+
.stubs(:validate_uri)
|
119
|
+
.with('http://example.com/emptyerrors')
|
120
|
+
.returns(mocked_validator)
|
121
|
+
page = W3Clove::Page.new('http://example.com/emptyerrors')
|
122
|
+
page.errors.length.should == 1
|
123
|
+
page.errors.first.message_id.should == '25'
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should not record empty warnings returned by the validator" do
|
127
|
+
mocked_validator = W3Clove::MockedValidator.new
|
128
|
+
mocked_validator.add_warning('25', '92', message_text('25'))
|
129
|
+
mocked_validator.add_warning('', '', '')
|
130
|
+
mocked_validator.add_warning(nil, nil, nil)
|
131
|
+
MarkupValidator.any_instance
|
132
|
+
.stubs(:validate_uri)
|
133
|
+
.with('http://example.com/emptyerrors')
|
134
|
+
.returns(mocked_validator)
|
135
|
+
page = W3Clove::Page.new('http://example.com/emptyerrors')
|
136
|
+
page.warnings.length.should == 1
|
137
|
+
page.warnings.first.message_id.should == '25'
|
138
|
+
end
|
96
139
|
end
|
97
140
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 3
|
9
|
+
version: 0.3.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jaime Iniesta
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-03-
|
17
|
+
date: 2011-03-25 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|