html-proofer 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/bin/htmlproof +4 -2
- data/html-proofer.gemspec +1 -0
- data/lib/html/proofer.rb +5 -2
- data/lib/html/proofer/check_runner.rb +3 -2
- data/lib/html/proofer/checks/html.rb +7 -3
- data/lib/html/proofer/version.rb +1 -1
- data/spec/html/proofer/fixtures/html/ignore_script_embeds.html +3 -0
- data/spec/html/proofer/fixtures/links/linkWithRedirect.html +2 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/images/existingImageExternal_html.yml +62 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/images/ignoreAltButNotLink_html_alt_ignore_/_/_.yml +45 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_invalid_html.yml +117 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_valid_html.yml +62 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/images/missingImageExternal_html.yml +45 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/attributeWithDash_html.yml +73 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html.yml +56 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_check_external_hash_true_.yml +719 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_only_4xx_true_.yml +56 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenLinkExternal_html.yml +96 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenUnixLinks_html.yml +156 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/checkSSLLinks_html.yml +50 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/ensure_typhoeus_options_html_typhoeus_ssl_verifypeer_false_.yml +40 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/escape_pipes_html.yml +52 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/file_foo_ext_foo_.yml +96 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/githubHash_html.yml +73 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithHttps_html.yml +73 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html.yml +236 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_only_4xx_true_typhoeus_followlocation_false_.yml +318 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_typhoeus_followlocation_false_.yml +318 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_invalid_html.yml +45 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_valid_html.yml +73 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/nodupe_html.yml +182 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/non_standard_characters_html.yml +113 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/redirected_error_html.yml +1044 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/links/utf8Link_html.yml +113 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html.yml +45 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/sorting/status_typhoeus_followlocation_false_error_sort_status_.yml +244 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/www_garbalarba_com_href_swap_/garbalarba/_github_.yml +73 -0
- data/spec/html/proofer/fixtures/vcr_cassettes/www_github_com_foofoofoo_biz.yml +115 -0
- data/spec/html/proofer/html_spec.rb +12 -5
- data/spec/html/proofer/images_spec.rb +3 -3
- data/spec/html/proofer/links_spec.rb +6 -6
- data/spec/html/proofer/scripts_spec.rb +1 -2
- data/spec/html/proofer_spec.rb +3 -3
- data/spec/spec_helper.rb +27 -5
- metadata +78 -2
@@ -0,0 +1,115 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: head
|
5
|
+
uri: foofoofoo.biz
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
|
12
|
+
response:
|
13
|
+
status:
|
14
|
+
code: 0
|
15
|
+
message:
|
16
|
+
headers: {}
|
17
|
+
body:
|
18
|
+
encoding: UTF-8
|
19
|
+
string: ''
|
20
|
+
http_version:
|
21
|
+
adapter_metadata:
|
22
|
+
effective_url: HTTP://foofoofoo.biz/
|
23
|
+
recorded_at: Mon, 06 Jul 2015 05:10:19 GMT
|
24
|
+
- request:
|
25
|
+
method: get
|
26
|
+
uri: foofoofoo.biz
|
27
|
+
body:
|
28
|
+
encoding: US-ASCII
|
29
|
+
string: ''
|
30
|
+
headers:
|
31
|
+
User-Agent:
|
32
|
+
- Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
|
33
|
+
response:
|
34
|
+
status:
|
35
|
+
code: 0
|
36
|
+
message:
|
37
|
+
headers: {}
|
38
|
+
body:
|
39
|
+
encoding: UTF-8
|
40
|
+
string: ''
|
41
|
+
http_version:
|
42
|
+
adapter_metadata:
|
43
|
+
effective_url: HTTP://foofoofoo.biz/
|
44
|
+
recorded_at: Mon, 06 Jul 2015 05:10:19 GMT
|
45
|
+
- request:
|
46
|
+
method: head
|
47
|
+
uri: www.github.com
|
48
|
+
body:
|
49
|
+
encoding: US-ASCII
|
50
|
+
string: ''
|
51
|
+
headers:
|
52
|
+
User-Agent:
|
53
|
+
- Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
|
54
|
+
response:
|
55
|
+
status:
|
56
|
+
code: 200
|
57
|
+
message: OK
|
58
|
+
headers:
|
59
|
+
Server:
|
60
|
+
- GitHub.com
|
61
|
+
Date:
|
62
|
+
- Mon, 06 Jul 2015 05:10:21 GMT
|
63
|
+
Content-Type:
|
64
|
+
- text/html; charset=utf-8
|
65
|
+
Status:
|
66
|
+
- 200 OK
|
67
|
+
Content-Security-Policy:
|
68
|
+
- 'default-src *; script-src assets-cdn.github.com collector-cdn.github.com;
|
69
|
+
object-src assets-cdn.github.com; style-src ''self'' ''unsafe-inline'' ''unsafe-eval''
|
70
|
+
assets-cdn.github.com; img-src ''self'' data: assets-cdn.github.com identicons.github.com
|
71
|
+
www.google-analytics.com collector.githubapp.com *.githubusercontent.com *.gravatar.com
|
72
|
+
*.wp.com; media-src ''none''; frame-src ''self'' render.githubusercontent.com
|
73
|
+
gist.github.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src
|
74
|
+
assets-cdn.github.com; connect-src ''self'' live.github.com wss://live.github.com
|
75
|
+
uploads.github.com status.github.com api.github.com www.google-analytics.com
|
76
|
+
github-cloud.s3.amazonaws.com'
|
77
|
+
Public-Key-Pins:
|
78
|
+
- max-age=300; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg=";
|
79
|
+
includeSubDomains
|
80
|
+
Cache-Control:
|
81
|
+
- no-cache
|
82
|
+
Vary:
|
83
|
+
- X-PJAX
|
84
|
+
- Accept-Encoding
|
85
|
+
X-UA-Compatible:
|
86
|
+
- IE=Edge,chrome=1
|
87
|
+
Set-Cookie:
|
88
|
+
- logged_in=no; domain=.github.com; path=/; expires=Fri, 06 Jul 2035 05:10:21
|
89
|
+
-0000; secure; HttpOnly
|
90
|
+
- _gh_sess=eyJzZXNzaW9uX2lkIjoiYjVmM2Q3ZjFhODQxMWIxNjdhODIyNWQ5ZGI1ZDNlMDkiLCJfY3NyZl90b2tlbiI6IlE5R1lsT3pFWW9Fb2VJWndZVGJUQ1ZodzJCeXZsclBzYmVEc1JvdVU1VE09In0%3D--afddd987025ba23ca6db5388811d74e15126663a;
|
91
|
+
path=/; secure; HttpOnly
|
92
|
+
X-Request-Id:
|
93
|
+
- cfa6252fd906896bc99fa744471f06af
|
94
|
+
X-Runtime:
|
95
|
+
- '0.009622'
|
96
|
+
X-GitHub-Request-Id:
|
97
|
+
- 490F8465:506E:3EED418:559A0DBD
|
98
|
+
Strict-Transport-Security:
|
99
|
+
- max-age=31536000; includeSubdomains; preload
|
100
|
+
X-Content-Type-Options:
|
101
|
+
- nosniff
|
102
|
+
X-XSS-Protection:
|
103
|
+
- 1; mode=block
|
104
|
+
X-Frame-Options:
|
105
|
+
- deny
|
106
|
+
X-Served-By:
|
107
|
+
- a22dbcbd09a98eacdd14ac7804a635dd
|
108
|
+
body:
|
109
|
+
encoding: UTF-8
|
110
|
+
string: ''
|
111
|
+
http_version: '1.1'
|
112
|
+
adapter_metadata:
|
113
|
+
effective_url: https://github.com/
|
114
|
+
recorded_at: Mon, 06 Jul 2015 05:10:21 GMT
|
115
|
+
recorded_with: VCR 2.9.3
|
@@ -22,19 +22,19 @@ describe 'Html test' do
|
|
22
22
|
it 'fails for an invalid tag' do
|
23
23
|
html = "#{FIXTURES_DIR}/html/invalid_tag.html"
|
24
24
|
proofer = run_proofer(html, { :check_html => true })
|
25
|
-
expect(proofer.failed_tests.first).to match(/Tag myfancytag invalid/)
|
25
|
+
expect(proofer.failed_tests.first).to match(/Tag myfancytag invalid \(line 2\)/)
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'fails for an unmatched end tag' do
|
29
29
|
html = "#{FIXTURES_DIR}/html/unmatched_end_tag.html"
|
30
30
|
proofer = run_proofer(html, { :check_html => true })
|
31
|
-
expect(proofer.failed_tests.first).to match(/Unexpected end tag : div/)
|
31
|
+
expect(proofer.failed_tests.first).to match(/Unexpected end tag : div \(line 3\)/)
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'fails for an unescaped ampersand in attribute' do
|
35
35
|
html = "#{FIXTURES_DIR}/html/unescaped_ampersand_in_attribute.html"
|
36
36
|
proofer = run_proofer(html, { :check_html => true })
|
37
|
-
expect(proofer.failed_tests.first).to match(/htmlParseEntityRef: expecting ';'/)
|
37
|
+
expect(proofer.failed_tests.first).to match(/htmlParseEntityRef: expecting ';' \(line 2\)/)
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'fails for mismatch between opening and ending tag' do
|
@@ -46,12 +46,19 @@ describe 'Html test' do
|
|
46
46
|
it 'fails for div inside head' do
|
47
47
|
html = "#{FIXTURES_DIR}/html/div_inside_head.html"
|
48
48
|
proofer = run_proofer(html, { :check_html => true })
|
49
|
-
expect(proofer.failed_tests.first).to match(/Unexpected end tag : head/)
|
49
|
+
expect(proofer.failed_tests.first).to match(/Unexpected end tag : head \(line 5\)/)
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'fails for missing closing quotation mark in href' do
|
53
53
|
html = "#{FIXTURES_DIR}/html/missing_closing_quotes.html"
|
54
54
|
proofer = run_proofer(html, { :check_html => true })
|
55
|
-
expect(proofer.failed_tests.to_s).to match(/Couldn't find end of Start Tag a/)
|
55
|
+
expect(proofer.failed_tests.to_s).to match(/Couldn't find end of Start Tag a \(line 6\)/)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'ignores embeded scripts when asked' do
|
59
|
+
opts = { :check_html => true, :validation => { :ignore_script_embeds => true } }
|
60
|
+
ignorableScript = "#{FIXTURES_DIR}/html/ignore_script_embeds.html"
|
61
|
+
proofer = run_proofer(ignorableScript, opts)
|
62
|
+
expect(proofer.failed_tests).to eq []
|
56
63
|
end
|
57
64
|
end
|
@@ -35,7 +35,7 @@ describe 'Images test' do
|
|
35
35
|
it 'fails for missing external images' do
|
36
36
|
externalImageFilepath = "#{FIXTURES_DIR}/images/missingImageExternal.html"
|
37
37
|
proofer = run_proofer(externalImageFilepath)
|
38
|
-
expect(proofer.failed_tests.first).to match(/failed: 0
|
38
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'fails for missing internal images' do
|
@@ -87,7 +87,7 @@ describe 'Images test' do
|
|
87
87
|
it 'fails for invalid images missing the protocol' do
|
88
88
|
missingProtocolLink = "#{FIXTURES_DIR}/images/image_missing_protocol_invalid.html"
|
89
89
|
proofer = run_proofer(missingProtocolLink)
|
90
|
-
expect(proofer.failed_tests.first).to match(/404
|
90
|
+
expect(proofer.failed_tests.first).to match(/failed: 404/)
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'properly checks relative links' do
|
@@ -105,7 +105,7 @@ describe 'Images test' do
|
|
105
105
|
it 'properly ignores missing alt tags, but not all URLs, when asked' do
|
106
106
|
ignorableLinks = "#{FIXTURES_DIR}/images/ignoreAltButNotLink.html"
|
107
107
|
proofer = run_proofer(ignorableLinks, {:alt_ignore => [/.*/]})
|
108
|
-
expect(proofer.failed_tests.first).to match(/
|
108
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
109
109
|
expect(proofer.failed_tests.first).to_not match /does not have an alt attribute/
|
110
110
|
end
|
111
111
|
|
@@ -42,7 +42,7 @@ describe 'Links test' do
|
|
42
42
|
it 'fails for broken external links' do
|
43
43
|
brokenLinkExternalFilepath = "#{FIXTURES_DIR}/links/brokenLinkExternal.html"
|
44
44
|
proofer = run_proofer(brokenLinkExternalFilepath)
|
45
|
-
expect(proofer.failed_tests.first).to match(/failed: 0
|
45
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'passes for different filename without option' do
|
@@ -55,7 +55,7 @@ describe 'Links test' do
|
|
55
55
|
options = { :ext => '.foo' }
|
56
56
|
brokenLinkExternalFilepath = "#{FIXTURES_DIR}/links/file.foo"
|
57
57
|
proofer = run_proofer(brokenLinkExternalFilepath, options)
|
58
|
-
expect(proofer.failed_tests.first).to match(/failed: 0
|
58
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
59
59
|
end
|
60
60
|
|
61
61
|
it 'fails for broken internal links' do
|
@@ -79,7 +79,7 @@ describe 'Links test' do
|
|
79
79
|
it 'fails on redirects if not following' do
|
80
80
|
linkWithRedirectFilepath = "#{FIXTURES_DIR}/links/linkWithRedirect.html"
|
81
81
|
proofer = run_proofer(linkWithRedirectFilepath, :typhoeus => { :followlocation => false })
|
82
|
-
expect(proofer.failed_tests.first).to match(/failed: 301
|
82
|
+
expect(proofer.failed_tests.first).to match(/failed: 301/)
|
83
83
|
end
|
84
84
|
|
85
85
|
it "does not fail on redirects we're not following" do
|
@@ -199,7 +199,7 @@ describe 'Links test' do
|
|
199
199
|
it 'fails for invalid links missing the protocol' do
|
200
200
|
missingProtocolLink = "#{FIXTURES_DIR}/links/link_missing_protocol_invalid.html"
|
201
201
|
proofer = run_proofer(missingProtocolLink)
|
202
|
-
expect(proofer.failed_tests.first).to match(/
|
202
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
203
203
|
end
|
204
204
|
|
205
205
|
it 'works for valid href within link elements' do
|
@@ -236,7 +236,7 @@ describe 'Links test' do
|
|
236
236
|
|
237
237
|
it 'works for array of links' do
|
238
238
|
proofer = run_proofer(['www.github.com', 'foofoofoo.biz'])
|
239
|
-
expect(proofer.failed_tests.first).to match(/failed: 0
|
239
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
240
240
|
end
|
241
241
|
|
242
242
|
it 'works for broken anchors within pre' do
|
@@ -353,7 +353,7 @@ describe 'Links test' do
|
|
353
353
|
it 'reports failures for the original link, not the redirection' do
|
354
354
|
fixture = "#{FIXTURES_DIR}/links/redirected_error.html"
|
355
355
|
proofer = run_proofer(fixture)
|
356
|
-
expect(proofer.failed_tests.first).to match(/
|
356
|
+
expect(proofer.failed_tests.first).to match(/failed: 404/)
|
357
357
|
end
|
358
358
|
|
359
359
|
it 'does not complain for files with attributes containing dashes' do
|
@@ -5,7 +5,7 @@ describe 'Scripts test' do
|
|
5
5
|
it 'fails for broken external src' do
|
6
6
|
file = "#{FIXTURES_DIR}/scripts/script_broken_external.html"
|
7
7
|
proofer = run_proofer(file)
|
8
|
-
expect(proofer.failed_tests.first).to match(/failed: 0
|
8
|
+
expect(proofer.failed_tests.first).to match(/failed: 0/)
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'works for valid internal src' do
|
@@ -43,5 +43,4 @@ describe 'Scripts test' do
|
|
43
43
|
proofer = run_proofer(ignorableLinks, { :url_ignore => [/\/assets\/.*(js|css|png|svg)/] })
|
44
44
|
expect(proofer.failed_tests).to eq []
|
45
45
|
end
|
46
|
-
|
47
46
|
end
|
data/spec/html/proofer_spec.rb
CHANGED
@@ -65,12 +65,12 @@ describe HTML::Proofer do
|
|
65
65
|
|
66
66
|
it 'understands sorting by status' do
|
67
67
|
output = send_proofer_output("#{FIXTURES_DIR}/sorting/status", :typhoeus => { :followlocation => false }, :error_sort => :status)
|
68
|
-
expect(output.
|
68
|
+
expect(output.gsub(/\s*$/, '')).to eq('''
|
69
69
|
- -1
|
70
70
|
* spec/html/proofer/fixtures/sorting/status/broken_link.html: internally linking to nowhere.fooof, which does not exist (line 3)
|
71
71
|
- 301
|
72
|
-
* spec/html/proofer/fixtures/sorting/status/a_404.html: External link http://upload.wikimedia.org/wikipedia/en/thumb/not_here.png failed: 301
|
73
|
-
* spec/html/proofer/fixtures/sorting/status/broken_link.html: External link http://upload.wikimedia.org/wikipedia/en/thumb/fooooof.png failed: 301
|
72
|
+
* spec/html/proofer/fixtures/sorting/status/a_404.html: External link http://upload.wikimedia.org/wikipedia/en/thumb/not_here.png failed: 301
|
73
|
+
* spec/html/proofer/fixtures/sorting/status/broken_link.html: External link http://upload.wikimedia.org/wikipedia/en/thumb/fooooof.png failed: 301
|
74
74
|
'''.strip)
|
75
75
|
end
|
76
76
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'bundler/setup'
|
2
|
-
|
2
|
+
require 'vcr'
|
3
|
+
require_relative '../lib/html/proofer'
|
3
4
|
|
4
|
-
FIXTURES_DIR =
|
5
|
+
FIXTURES_DIR = 'spec/html/proofer/fixtures'
|
5
6
|
|
6
7
|
RSpec.configure do |config|
|
7
8
|
# Use color in STDOUT
|
@@ -37,16 +38,37 @@ def make_proofer(file, opts)
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def run_proofer(file, opts = {})
|
41
|
+
cassette_name = make_cassette_name(file, opts)
|
40
42
|
proofer = make_proofer(file, opts)
|
41
|
-
|
42
|
-
|
43
|
+
VCR.use_cassette(cassette_name, :record => :new_episodes) do
|
44
|
+
capture_stderr { proofer.run }
|
45
|
+
proofer
|
46
|
+
end
|
43
47
|
end
|
44
48
|
|
45
49
|
def send_proofer_output(file, opts = {})
|
50
|
+
cassette_name = make_cassette_name(file, opts)
|
46
51
|
proofer = make_proofer(file, opts)
|
47
|
-
|
52
|
+
VCR.use_cassette(cassette_name, :record => :new_episodes) do
|
53
|
+
capture_stderr { proofer.run }
|
54
|
+
end
|
48
55
|
end
|
49
56
|
|
50
57
|
def make_bin(cmd, path=nil)
|
51
58
|
`bin/htmlproof #{cmd} #{path}`
|
52
59
|
end
|
60
|
+
|
61
|
+
def make_cassette_name(file, opts)
|
62
|
+
filename = if file.is_a? Array
|
63
|
+
file.join('_')
|
64
|
+
else
|
65
|
+
file.split('/')[-2..-1].join('/')
|
66
|
+
end
|
67
|
+
(filename += opts.inspect) unless opts.empty?
|
68
|
+
filename
|
69
|
+
end
|
70
|
+
|
71
|
+
VCR.configure do |config|
|
72
|
+
config.cassette_library_dir = "#{FIXTURES_DIR}/vcr_cassettes"
|
73
|
+
config.hook_into :typhoeus
|
74
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html-proofer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen Torikian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mercenary
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: vcr
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '2.9'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '2.9'
|
167
181
|
description: Test your rendered HTML files to make sure they're accurate.
|
168
182
|
email:
|
169
183
|
- gjtorikian@gmail.com
|
@@ -205,6 +219,7 @@ files:
|
|
205
219
|
- spec/html/proofer/fixtures/favicon/favicon_present_shortcut.html
|
206
220
|
- spec/html/proofer/fixtures/html/div_inside_head.html
|
207
221
|
- spec/html/proofer/fixtures/html/html5_tags.html
|
222
|
+
- spec/html/proofer/fixtures/html/ignore_script_embeds.html
|
208
223
|
- spec/html/proofer/fixtures/html/invalid_tag.html
|
209
224
|
- spec/html/proofer/fixtures/html/missing_closing_quotes.html
|
210
225
|
- spec/html/proofer/fixtures/html/opening_and_ending_tag_mismatch.html
|
@@ -318,6 +333,36 @@ files:
|
|
318
333
|
- spec/html/proofer/fixtures/sorting/status/broken_link.html
|
319
334
|
- spec/html/proofer/fixtures/sorting/status/missing_redirect.html
|
320
335
|
- spec/html/proofer/fixtures/utils/lang-jp.html
|
336
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/existingImageExternal_html.yml
|
337
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/ignoreAltButNotLink_html_alt_ignore_/_/_.yml
|
338
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_invalid_html.yml
|
339
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_valid_html.yml
|
340
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/missingImageExternal_html.yml
|
341
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/attributeWithDash_html.yml
|
342
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html.yml
|
343
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_check_external_hash_true_.yml
|
344
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_only_4xx_true_.yml
|
345
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenLinkExternal_html.yml
|
346
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenUnixLinks_html.yml
|
347
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/checkSSLLinks_html.yml
|
348
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/ensure_typhoeus_options_html_typhoeus_ssl_verifypeer_false_.yml
|
349
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/escape_pipes_html.yml
|
350
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/file_foo_ext_foo_.yml
|
351
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/githubHash_html.yml
|
352
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithHttps_html.yml
|
353
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html.yml
|
354
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_only_4xx_true_typhoeus_followlocation_false_.yml
|
355
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_typhoeus_followlocation_false_.yml
|
356
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_invalid_html.yml
|
357
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_valid_html.yml
|
358
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/nodupe_html.yml
|
359
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/non_standard_characters_html.yml
|
360
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/redirected_error_html.yml
|
361
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/utf8Link_html.yml
|
362
|
+
- spec/html/proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html.yml
|
363
|
+
- spec/html/proofer/fixtures/vcr_cassettes/sorting/status_typhoeus_followlocation_false_error_sort_status_.yml
|
364
|
+
- spec/html/proofer/fixtures/vcr_cassettes/www_garbalarba_com_href_swap_/garbalarba/_github_.yml
|
365
|
+
- spec/html/proofer/fixtures/vcr_cassettes/www_github_com_foofoofoo_biz.yml
|
321
366
|
- spec/html/proofer/html_spec.rb
|
322
367
|
- spec/html/proofer/images_spec.rb
|
323
368
|
- spec/html/proofer/links_spec.rb
|
@@ -363,6 +408,7 @@ test_files:
|
|
363
408
|
- spec/html/proofer/fixtures/favicon/favicon_present_shortcut.html
|
364
409
|
- spec/html/proofer/fixtures/html/div_inside_head.html
|
365
410
|
- spec/html/proofer/fixtures/html/html5_tags.html
|
411
|
+
- spec/html/proofer/fixtures/html/ignore_script_embeds.html
|
366
412
|
- spec/html/proofer/fixtures/html/invalid_tag.html
|
367
413
|
- spec/html/proofer/fixtures/html/missing_closing_quotes.html
|
368
414
|
- spec/html/proofer/fixtures/html/opening_and_ending_tag_mismatch.html
|
@@ -476,6 +522,36 @@ test_files:
|
|
476
522
|
- spec/html/proofer/fixtures/sorting/status/broken_link.html
|
477
523
|
- spec/html/proofer/fixtures/sorting/status/missing_redirect.html
|
478
524
|
- spec/html/proofer/fixtures/utils/lang-jp.html
|
525
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/existingImageExternal_html.yml
|
526
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/ignoreAltButNotLink_html_alt_ignore_/_/_.yml
|
527
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_invalid_html.yml
|
528
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_valid_html.yml
|
529
|
+
- spec/html/proofer/fixtures/vcr_cassettes/images/missingImageExternal_html.yml
|
530
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/attributeWithDash_html.yml
|
531
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html.yml
|
532
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_check_external_hash_true_.yml
|
533
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_only_4xx_true_.yml
|
534
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenLinkExternal_html.yml
|
535
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/brokenUnixLinks_html.yml
|
536
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/checkSSLLinks_html.yml
|
537
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/ensure_typhoeus_options_html_typhoeus_ssl_verifypeer_false_.yml
|
538
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/escape_pipes_html.yml
|
539
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/file_foo_ext_foo_.yml
|
540
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/githubHash_html.yml
|
541
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithHttps_html.yml
|
542
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html.yml
|
543
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_only_4xx_true_typhoeus_followlocation_false_.yml
|
544
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_typhoeus_followlocation_false_.yml
|
545
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_invalid_html.yml
|
546
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_valid_html.yml
|
547
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/nodupe_html.yml
|
548
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/non_standard_characters_html.yml
|
549
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/redirected_error_html.yml
|
550
|
+
- spec/html/proofer/fixtures/vcr_cassettes/links/utf8Link_html.yml
|
551
|
+
- spec/html/proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html.yml
|
552
|
+
- spec/html/proofer/fixtures/vcr_cassettes/sorting/status_typhoeus_followlocation_false_error_sort_status_.yml
|
553
|
+
- spec/html/proofer/fixtures/vcr_cassettes/www_garbalarba_com_href_swap_/garbalarba/_github_.yml
|
554
|
+
- spec/html/proofer/fixtures/vcr_cassettes/www_github_com_foofoofoo_biz.yml
|
479
555
|
- spec/html/proofer/html_spec.rb
|
480
556
|
- spec/html/proofer/images_spec.rb
|
481
557
|
- spec/html/proofer/links_spec.rb
|