html-proofer 0.7.1 → 0.7.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fa01f2fbf361d53b5bc7c30c7fdcaacad554e84
4
- data.tar.gz: 23f37d393567e70fb4a79a31c2195a51717a41f8
3
+ metadata.gz: 0bda5b3c0387493f6b642dc807b34fff181e1089
4
+ data.tar.gz: b813373ac7949a41141f81252244612d5e307b71
5
5
  SHA512:
6
- metadata.gz: f846092b5f8913117b36fa518fd4e0531eb1731b813411a688a38f71be09a7ed0d0836aecd08cd4f6ea822592f00e640b65b56b289cfcde3e47db713c35f0225
7
- data.tar.gz: 59eeb08a90578ec99c02dd85eec81b43e41a6bf57dd7d1c6676d7fa193c99288ae9baac43ef18f0885f186c71b65acb324d55ec0a631d924de2317c4d39006a1
6
+ metadata.gz: 5a02eb1565f8e2b70216de62489190835e4317e8d8e23db4f11724bcdec0a8984e552b5ab4e45713ac99e892a51bed55e3cdba45ff26c3db4eed499a1e6a6eba
7
+ data.tar.gz: 8ec26851a516a22f6885a576300e224e6b96d078251676ca0a7771413106e31d8637b86e23e18be11726464729a1dd29a8ef42c7327787a2b6e39db0614ab5da
data/README.md CHANGED
@@ -19,7 +19,7 @@ And then execute:
19
19
  Or install it yourself as:
20
20
 
21
21
  $ gem install html-proofer
22
-
22
+
23
23
  **NOTE:** When installation speed matters, set `NOKOGIRI_USE_SYSTEM_LIBRARIES` to `true` in your environment. This is useful for increasing the speed of your Continuous Integration builds.
24
24
 
25
25
  ## Usage
@@ -104,7 +104,7 @@ The `HTML::Proofer` constructor takes an optional hash of additional options:
104
104
 
105
105
  * `:ext`: the extension (including the `.`) of your HTML files (default: `.html`)
106
106
  * `:href_swap`: a hash containing key-value pairs of `RegExp => String`. It transforms links that match `RegExp` into `String` via `gsub`.
107
- * `:href_ignore`: an array of Strings or RegExps containing `href`s that are safe to ignore (`mailto` is always ignored)
107
+ * `:href_ignore`: an array of Strings or RegExps containing `href`s that are safe to ignore (certain URIs, like `mailto` and `tel`, are always ignored)
108
108
  * `:disable_external`: if `true`, does not run the external link checker, which can take a lot of time (default: `false`)
109
109
  * `:verbose`: if `true`, outputs extra information as the checking happens. Useful for debugging. (default: `false`)
110
110
 
@@ -153,4 +153,3 @@ class MailToOctocat < ::HTML::Proofer::Checks::Check
153
153
  end
154
154
  end
155
155
  ```
156
-
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = "html-proofer"
6
- gem.version = "0.7.1"
6
+ gem.version = "0.7.2"
7
7
  gem.authors = ["Garen Torikian"]
8
8
  gem.email = ["gjtorikian@gmail.com"]
9
9
  gem.description = %q{Test your rendered HTML files to make sure they're accurate.}
@@ -18,6 +18,10 @@ module HTML
18
18
  end
19
19
  end
20
20
 
21
+ # fix up missing protocols
22
+ @href.insert 0, "http:" if @href =~ /^\/\//
23
+ @src.insert 0, "http:" if @src =~ /^\/\//
24
+
21
25
  end
22
26
 
23
27
  def url
@@ -72,7 +76,7 @@ module HTML
72
76
  end
73
77
 
74
78
  uri = URI.parse url
75
- %w( mailto ).include?(uri.scheme)
79
+ %w( mailto tel ).include?(uri.scheme)
76
80
  rescue URI::BadURIError
77
81
  false
78
82
  rescue URI::InvalidURIError
@@ -17,6 +17,13 @@ class Links < ::HTML::Proofer::Checks::Check
17
17
  def run
18
18
  @html.css('a').each do |l|
19
19
  link = Link.new l, "link", self
20
+
21
+ # is it even a valid URL?
22
+ unless link.valid?
23
+ self.add_issue "#{link.href} is an invalid URL"
24
+ next
25
+ end
26
+
20
27
  next if link.ignore?
21
28
 
22
29
  # is there even a href?
@@ -25,12 +32,6 @@ class Links < ::HTML::Proofer::Checks::Check
25
32
  next
26
33
  end
27
34
 
28
- # is it even a valid URL?
29
- unless link.valid?
30
- self.add_issue "#{link.href} is an invalid URL"
31
- next
32
- end
33
-
34
35
  # does the file even exist?
35
36
  if link.remote?
36
37
  add_to_external_urls link.href
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <a href="mailto:">Mail me</a>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <a href="tel:">Tel me</a>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -2,8 +2,8 @@
2
2
 
3
3
  <body>
4
4
 
5
- <p>Blah blah blah. <img alt="A broken image" src="http://upload.wikimedia.org/wikipedia/en/thumb/2/22/Heckert_GNU_white.svg/256px-Heckert_GNU_white.svg.png" /> </p>
5
+ <p>Blah blah blah. <img alt="An existing image" src="http://upload.wikimedia.org/wikipedia/en/thumb/2/22/Heckert_GNU_white.svg/256px-Heckert_GNU_white.svg.png" /> </p>
6
6
 
7
7
  </body>
8
8
 
9
- </html>
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <p>Blah blah blah. <img alt="An existing image" src="//upload.wikimedia.org/wikipedia/en/thumb/fooooof.png" /> </p>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <p>Blah blah blah. <img alt="An existing image" src="//upload.wikimedia.org/wikipedia/en/thumb/2/22/Heckert_GNU_white.svg/256px-Heckert_GNU_white.svg.png" /> </p>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <p>Blah blah blah. <a href="//fofofo.biz.woo">An unreal link!</a></p>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <p>Blah blah blah. <a href="//github.com/octocat/Spoon-Knife/issues">An HTTPS link!</a></p>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <a href="mailto:whatever@whoever.com">Mail me</a>.
6
+
7
+ </body>
8
+
9
+ </html>
@@ -0,0 +1,9 @@
1
+ <html>
2
+
3
+ <body>
4
+
5
+ <a href="tel:441234567,88">+44-1234-567 ext.88</a>
6
+
7
+ </body>
8
+
9
+ </html>
@@ -64,4 +64,16 @@ describe "Image tests" do
64
64
  output = capture_stderr { HTML::Proofer.new(dataURIImage).run }
65
65
  output.should == ""
66
66
  end
67
+
68
+ it "works for valid images missing the protocol" do
69
+ missingProtocolLink = "#{FIXTURES_DIR}/image_missing_protocol_valid.html"
70
+ output = capture_stderr { HTML::Proofer.new(missingProtocolLink).run }
71
+ output.should == ""
72
+ end
73
+
74
+ it "fails for invalid images missing the protocol" do
75
+ missingProtocolLink = "#{FIXTURES_DIR}/image_missing_protocol_invalid.html"
76
+ output = capture_stderr { HTML::Proofer.new(missingProtocolLink).run }
77
+ output.should match /404 No error/
78
+ end
67
79
  end
@@ -97,4 +97,40 @@ describe "Links tests" do
97
97
  output = capture_stderr { HTML::Proofer.new(multipleProblems).run }
98
98
  output.should match /linking to internal hash #anadaasdadsadschor that does not exist/
99
99
  end
100
+
101
+ it 'ignores valid mailto links' do
102
+ ignorableLinks = "#{FIXTURES_DIR}/mailto_link.html"
103
+ output = capture_stderr { HTML::Proofer.new(ignorableLinks).run }
104
+ output.should == ""
105
+ end
106
+
107
+ it "fails for blank mailto links" do
108
+ blankMailToLink = "#{FIXTURES_DIR}/blank_mailto_link.html"
109
+ output = capture_stderr { HTML::Proofer.new(blankMailToLink).run }
110
+ output.should match /mailto: is an invalid URL/
111
+ end
112
+
113
+ it 'ignores valid tel links' do
114
+ ignorableLinks = "#{FIXTURES_DIR}/tel_link.html"
115
+ output = capture_stderr { HTML::Proofer.new(ignorableLinks).run }
116
+ output.should == ""
117
+ end
118
+
119
+ it "fails for blank tel links" do
120
+ blankTelLink = "#{FIXTURES_DIR}/blank_tel_link.html"
121
+ output = capture_stderr { HTML::Proofer.new(blankTelLink).run }
122
+ output.should match /tel: is an invalid URL/
123
+ end
124
+
125
+ it "works for valid links missing the protocol" do
126
+ missingProtocolLink = "#{FIXTURES_DIR}/link_missing_protocol_valid.html"
127
+ output = capture_stderr { HTML::Proofer.new(missingProtocolLink).run }
128
+ output.should == ""
129
+ end
130
+
131
+ it "fails for invalid links missing the protocol" do
132
+ missingProtocolLink = "#{FIXTURES_DIR}/link_missing_protocol_invalid.html"
133
+ output = capture_stderr { HTML::Proofer.new(missingProtocolLink).run }
134
+ output.should match /Couldn't resolve host name/
135
+ end
100
136
  end
metadata CHANGED
@@ -1,139 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-proofer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-13 00:00:00.000000000 Z
11
+ date: 2014-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.3.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.6.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.6.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: colored
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: typhoeus
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.6.7
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.6.7
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yell
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: html-pipeline
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.8'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: escape_utils
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '1.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 2.13.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 2.13.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rake
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  description: Test your rendered HTML files to make sure they're accurate.
@@ -144,8 +144,8 @@ executables:
144
144
  extensions: []
145
145
  extra_rdoc_files: []
146
146
  files:
147
- - .gitignore
148
- - .travis.yml
147
+ - ".gitignore"
148
+ - ".travis.yml"
149
149
  - Gemfile
150
150
  - LICENSE.txt
151
151
  - README.md
@@ -159,6 +159,8 @@ files:
159
159
  - lib/html/proofer/checks/images.rb
160
160
  - lib/html/proofer/checks/links.rb
161
161
  - spec/html/proofer/fixtures/Screen Shot 2012-08-09 at 7.51.18 AM.png
162
+ - spec/html/proofer/fixtures/blank_mailto_link.html
163
+ - spec/html/proofer/fixtures/blank_tel_link.html
162
164
  - spec/html/proofer/fixtures/brokenHashExternal.html
163
165
  - spec/html/proofer/fixtures/brokenHashInternal.html
164
166
  - spec/html/proofer/fixtures/brokenInternalLink.html
@@ -175,11 +177,16 @@ files:
175
177
  - spec/html/proofer/fixtures/ignorableImages.html
176
178
  - spec/html/proofer/fixtures/ignorableLinks.html
177
179
  - spec/html/proofer/fixtures/ignorableLinksViaOptions.html
180
+ - spec/html/proofer/fixtures/image_missing_protocol_invalid.html
181
+ - spec/html/proofer/fixtures/image_missing_protocol_valid.html
178
182
  - spec/html/proofer/fixtures/index.html
179
183
  - spec/html/proofer/fixtures/linkToFolder.html
180
184
  - spec/html/proofer/fixtures/linkTranslatedViaHrefSwap.html
181
185
  - spec/html/proofer/fixtures/linkWithHttps.html
182
186
  - spec/html/proofer/fixtures/linkWithRedirect.html
187
+ - spec/html/proofer/fixtures/link_missing_protocol_invalid.html
188
+ - spec/html/proofer/fixtures/link_missing_protocol_valid.html
189
+ - spec/html/proofer/fixtures/mailto_link.html
183
190
  - spec/html/proofer/fixtures/missingImageAlt.html
184
191
  - spec/html/proofer/fixtures/missingImageAltText.html
185
192
  - spec/html/proofer/fixtures/missingImageExternal.html
@@ -195,6 +202,7 @@ files:
195
202
  - spec/html/proofer/fixtures/resources/books/nestedRelativeImages.html
196
203
  - spec/html/proofer/fixtures/rootLink.html
197
204
  - spec/html/proofer/fixtures/rootRelativeImages.html
205
+ - spec/html/proofer/fixtures/tel_link.html
198
206
  - spec/html/proofer/fixtures/terribleImageName.html
199
207
  - spec/html/proofer/fixtures/workingDataURIImage.html
200
208
  - spec/html/proofer/images_spec.rb
@@ -211,17 +219,17 @@ require_paths:
211
219
  - lib
212
220
  required_ruby_version: !ruby/object:Gem::Requirement
213
221
  requirements:
214
- - - '>='
222
+ - - ">="
215
223
  - !ruby/object:Gem::Version
216
224
  version: '0'
217
225
  required_rubygems_version: !ruby/object:Gem::Requirement
218
226
  requirements:
219
- - - '>='
227
+ - - ">="
220
228
  - !ruby/object:Gem::Version
221
229
  version: '0'
222
230
  requirements: []
223
231
  rubyforge_project:
224
- rubygems_version: 2.0.3
232
+ rubygems_version: 2.2.2
225
233
  signing_key:
226
234
  specification_version: 4
227
235
  summary: A set of tests to validate your HTML output. These tests check if your image
@@ -229,6 +237,8 @@ summary: A set of tests to validate your HTML output. These tests check if your
229
237
  and so on. It's intended to be an all-in-one checker for your documentation output.
230
238
  test_files:
231
239
  - spec/html/proofer/fixtures/Screen Shot 2012-08-09 at 7.51.18 AM.png
240
+ - spec/html/proofer/fixtures/blank_mailto_link.html
241
+ - spec/html/proofer/fixtures/blank_tel_link.html
232
242
  - spec/html/proofer/fixtures/brokenHashExternal.html
233
243
  - spec/html/proofer/fixtures/brokenHashInternal.html
234
244
  - spec/html/proofer/fixtures/brokenInternalLink.html
@@ -245,11 +255,16 @@ test_files:
245
255
  - spec/html/proofer/fixtures/ignorableImages.html
246
256
  - spec/html/proofer/fixtures/ignorableLinks.html
247
257
  - spec/html/proofer/fixtures/ignorableLinksViaOptions.html
258
+ - spec/html/proofer/fixtures/image_missing_protocol_invalid.html
259
+ - spec/html/proofer/fixtures/image_missing_protocol_valid.html
248
260
  - spec/html/proofer/fixtures/index.html
249
261
  - spec/html/proofer/fixtures/linkToFolder.html
250
262
  - spec/html/proofer/fixtures/linkTranslatedViaHrefSwap.html
251
263
  - spec/html/proofer/fixtures/linkWithHttps.html
252
264
  - spec/html/proofer/fixtures/linkWithRedirect.html
265
+ - spec/html/proofer/fixtures/link_missing_protocol_invalid.html
266
+ - spec/html/proofer/fixtures/link_missing_protocol_valid.html
267
+ - spec/html/proofer/fixtures/mailto_link.html
253
268
  - spec/html/proofer/fixtures/missingImageAlt.html
254
269
  - spec/html/proofer/fixtures/missingImageAltText.html
255
270
  - spec/html/proofer/fixtures/missingImageExternal.html
@@ -265,6 +280,7 @@ test_files:
265
280
  - spec/html/proofer/fixtures/resources/books/nestedRelativeImages.html
266
281
  - spec/html/proofer/fixtures/rootLink.html
267
282
  - spec/html/proofer/fixtures/rootRelativeImages.html
283
+ - spec/html/proofer/fixtures/tel_link.html
268
284
  - spec/html/proofer/fixtures/terribleImageName.html
269
285
  - spec/html/proofer/fixtures/workingDataURIImage.html
270
286
  - spec/html/proofer/images_spec.rb