html-proofer 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +23 -1
- data/README.md +6 -4
- data/Rakefile +2 -0
- data/lib/html-proofer.rb +1 -0
- data/lib/html/proofer.rb +13 -21
- data/lib/html/proofer/check.rb +15 -9
- data/lib/html/proofer/checks/images.rb +1 -1
- data/lib/html/proofer/checks/links.rb +16 -4
- data/lib/html/proofer/version.rb +1 -1
- data/spec/html/proofer/fixtures/brokenLinkWithNumber.html +8 -0
- data/spec/html/proofer/fixtures/linkWithHttps.html +9 -0
- data/spec/html/proofer/fixtures/linkWithRedirect.html +9 -0
- data/spec/html/proofer/fixtures/missingImageAltText.html +9 -0
- data/spec/html/proofer/images_spec.rb +19 -13
- data/spec/html/proofer/links_spec.rb +32 -12
- data/spec/spec_helper.rb +13 -3
- metadata +12 -2
data/Gemfile.lock
CHANGED
@@ -1,14 +1,33 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
html-proofer (0.0.
|
4
|
+
html-proofer (0.0.2)
|
5
|
+
colored (~> 1.2)
|
5
6
|
nokogiri (~> 1.5.6)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: http://rubygems.org/
|
9
10
|
specs:
|
11
|
+
activesupport (3.2.12)
|
12
|
+
i18n (~> 0.6)
|
13
|
+
multi_json (~> 1.0)
|
14
|
+
colored (1.2)
|
10
15
|
diff-lcs (1.2.1)
|
16
|
+
escape_utils (0.3.2)
|
17
|
+
gemoji (1.4.0)
|
18
|
+
github-markdown (0.5.3)
|
19
|
+
html-pipeline (0.0.8)
|
20
|
+
activesupport (>= 2)
|
21
|
+
escape_utils (~> 0.2)
|
22
|
+
gemoji (~> 1.0)
|
23
|
+
github-markdown (~> 0.5)
|
24
|
+
nokogiri (~> 1.4)
|
25
|
+
rinku (~> 1.7)
|
26
|
+
sanitize (~> 2.0)
|
27
|
+
i18n (0.6.4)
|
28
|
+
multi_json (1.6.1)
|
11
29
|
nokogiri (1.5.6)
|
30
|
+
rinku (1.7.2)
|
12
31
|
rspec (2.13.0)
|
13
32
|
rspec-core (~> 2.13.0)
|
14
33
|
rspec-expectations (~> 2.13.0)
|
@@ -17,10 +36,13 @@ GEM
|
|
17
36
|
rspec-expectations (2.13.0)
|
18
37
|
diff-lcs (>= 1.1.3, < 2.0)
|
19
38
|
rspec-mocks (2.13.0)
|
39
|
+
sanitize (2.0.3)
|
40
|
+
nokogiri (>= 1.4.4, < 1.6)
|
20
41
|
|
21
42
|
PLATFORMS
|
22
43
|
ruby
|
23
44
|
|
24
45
|
DEPENDENCIES
|
46
|
+
html-pipeline (~> 0.0.7)
|
25
47
|
html-proofer!
|
26
48
|
rspec (~> 2.13.0)
|
data/README.md
CHANGED
@@ -20,8 +20,8 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
Require the gem; generate some HTML;
|
24
|
-
your out folder:
|
23
|
+
Require the gem; generate some HTML; create a new instance of the `HTML::Proofer` on
|
24
|
+
your out folder; then `run` it:
|
25
25
|
|
26
26
|
```ruby
|
27
27
|
require 'html/proofer'
|
@@ -51,9 +51,11 @@ tester = HTML::Proofer.new("./out")
|
|
51
51
|
tester.run
|
52
52
|
```
|
53
53
|
|
54
|
-
The `HTML::Proofer` constructor takes
|
54
|
+
The `HTML::Proofer` constructor takes an optional hash of additional options:
|
55
55
|
|
56
|
-
* `:ext`: the extension (including the `.`) of your HTML files (default: `.html)
|
56
|
+
* `:ext`: the extension (including the `.`) of your HTML files (default: `.html`)
|
57
|
+
* `:href_swap`: a hash containing key-value pairs of `RegExp => String`. It transforms links that match `RegExp` into `String` via `gsub`.
|
58
|
+
* `:href_ignore`: an array of Strings containing `href`s that are safe to ignore (default: `mailto`)
|
57
59
|
|
58
60
|
## What's Tested?
|
59
61
|
|
data/Rakefile
ADDED
data/lib/html-proofer.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'html/proofer'
|
data/lib/html/proofer.rb
CHANGED
@@ -3,17 +3,23 @@ require 'html/proofer/checks'
|
|
3
3
|
|
4
4
|
module HTML
|
5
5
|
class Proofer
|
6
|
-
def initialize(src, opts
|
6
|
+
def initialize(src, opts={})
|
7
7
|
@srcDir = src
|
8
|
-
@options = opts
|
8
|
+
@options = {:ext => ".html"}.merge(opts)
|
9
9
|
end
|
10
10
|
|
11
11
|
def run
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
get_checks.each do |klass|
|
13
|
+
issues = []
|
14
|
+
puts "Running #{klass.name.split(/:/).pop()} check... \n\n"
|
15
|
+
|
16
|
+
Find.find(@srcDir) do |path|
|
17
|
+
if File.extname(path) == @options[:ext]
|
18
|
+
html = HTML::Proofer.create_nokogiri(path)
|
19
|
+
check = klass.new(path, html, @options)
|
20
|
+
check.run
|
21
|
+
self.print_issues(check.issues)
|
22
|
+
end
|
17
23
|
end
|
18
24
|
end
|
19
25
|
end
|
@@ -26,20 +32,6 @@ module HTML
|
|
26
32
|
HTML::Proofer::Checks::Check.subclasses
|
27
33
|
end
|
28
34
|
|
29
|
-
def run_checks(path, html)
|
30
|
-
issues = []
|
31
|
-
|
32
|
-
get_checks.each do |klass|
|
33
|
-
puts "Running #{klass.name.split(/:/).pop()} check... "
|
34
|
-
|
35
|
-
check = klass.new(path, html)
|
36
|
-
check.run
|
37
|
-
|
38
|
-
issues.concat(check.issues)
|
39
|
-
end
|
40
|
-
issues
|
41
|
-
end
|
42
|
-
|
43
35
|
def print_issues(issues)
|
44
36
|
return if issues.empty?
|
45
37
|
issues.each do |issue|
|
data/lib/html/proofer/check.rb
CHANGED
@@ -11,10 +11,13 @@ class HTML::Proofer::Checks
|
|
11
11
|
|
12
12
|
attr_reader :issues
|
13
13
|
|
14
|
-
def initialize(path, html)
|
14
|
+
def initialize(path, html, opts={})
|
15
15
|
@path = path
|
16
16
|
@html = html
|
17
|
+
@options = opts
|
17
18
|
@issues = []
|
19
|
+
|
20
|
+
@additional_href_ignores = @options[:href_ignore] || []
|
18
21
|
end
|
19
22
|
|
20
23
|
def run
|
@@ -38,6 +41,15 @@ class HTML::Proofer::Checks
|
|
38
41
|
false
|
39
42
|
end
|
40
43
|
|
44
|
+
def ignore_href?(href)
|
45
|
+
uri = URI.parse(href)
|
46
|
+
%w( mailto ).include?(uri.scheme) || @additional_href_ignores.include?(href)
|
47
|
+
rescue URI::BadURIError
|
48
|
+
false
|
49
|
+
rescue URI::InvalidURIError
|
50
|
+
false
|
51
|
+
end
|
52
|
+
|
41
53
|
def validate_url(href)
|
42
54
|
# Parse
|
43
55
|
url = nil
|
@@ -47,9 +59,6 @@ class HTML::Proofer::Checks
|
|
47
59
|
return Result.new(href, 'invalid URI')
|
48
60
|
end
|
49
61
|
|
50
|
-
# Skip non-HTTP URLs
|
51
|
-
#return nil if url.scheme !~ /^https?$/
|
52
|
-
|
53
62
|
# Get status
|
54
63
|
res = nil
|
55
64
|
5.times do |i|
|
@@ -61,11 +70,9 @@ class HTML::Proofer::Checks
|
|
61
70
|
return nil
|
62
71
|
end
|
63
72
|
|
73
|
+
next if res.code =~ /^5..$/
|
74
|
+
|
64
75
|
if res.code =~ /^3..$/
|
65
|
-
if i == 4
|
66
|
-
return nil
|
67
|
-
end
|
68
|
-
|
69
76
|
# Find proper location
|
70
77
|
location = res['Location']
|
71
78
|
if location !~ /^https?:\/\//
|
@@ -75,7 +82,6 @@ class HTML::Proofer::Checks
|
|
75
82
|
base_url.fragment = nil
|
76
83
|
location = base_url.to_s + location
|
77
84
|
end
|
78
|
-
puts location
|
79
85
|
url = URI.parse(location)
|
80
86
|
elsif res.code == '200'
|
81
87
|
return true
|
@@ -18,7 +18,7 @@ class Images < ::HTML::Proofer::Checks::Check
|
|
18
18
|
end
|
19
19
|
|
20
20
|
# check alt tag
|
21
|
-
self.add_issue("#{@path}".blue + ": image #{src} does not have an alt attribute") unless img['alt']
|
21
|
+
self.add_issue("#{@path}".blue + ": image #{src} does not have an alt attribute") unless img['alt'] and !img['alt'].empty?
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -7,6 +7,14 @@ class Links < ::HTML::Proofer::Checks::Check
|
|
7
7
|
href = a['href']
|
8
8
|
|
9
9
|
if href && href.length > 0
|
10
|
+
if @options[:href_swap]
|
11
|
+
@options[:href_swap].each do |link, replace|
|
12
|
+
href = href.gsub(link, replace)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
return if ignore_href?(href)
|
17
|
+
|
10
18
|
if href.include? '#'
|
11
19
|
href_split = href.split('#')
|
12
20
|
end
|
@@ -24,26 +32,30 @@ class Links < ::HTML::Proofer::Checks::Check
|
|
24
32
|
else
|
25
33
|
href_html = HTML::Proofer.create_nokogiri(href_location)
|
26
34
|
found_hash_match = false
|
27
|
-
unless href_html
|
35
|
+
unless hash_check(href_html, href_hash)
|
28
36
|
self.add_issue("#{@path}".blue + ": linking to #{href}, but #{href_hash} does not exist")
|
29
37
|
end
|
30
38
|
end
|
31
39
|
# it is an internal link, with an internal hash
|
32
40
|
else
|
33
|
-
unless @html
|
41
|
+
unless hash_check(@html, href_hash)
|
34
42
|
self.add_issue("#{@path}".blue + ": linking to an internal hash called #{href_hash} that does not exist")
|
35
43
|
end
|
36
44
|
end
|
37
45
|
# internal link, no hash
|
38
46
|
else
|
39
|
-
self.add_issue("#{@path}".blue + ": linking to #{href}, which does not exist") unless File.exist?(File.join(File.dirname(@path), href))
|
47
|
+
self.add_issue("#{@path}".blue + ": internally linking to #{href}, which does not exist") unless File.exist?(File.join(File.dirname(@path), href))
|
40
48
|
end
|
41
49
|
else
|
42
|
-
self.add_issue("#{@path}".blue + ": linking to #{href}, which does not exist") unless validate_url(href)
|
50
|
+
self.add_issue("#{@path}".blue + ": externally linking to #{href}, which does not exist") unless validate_url(href)
|
43
51
|
end
|
44
52
|
else
|
45
53
|
self.add_issue("#{@path}".blue + ": link has no href attribute") unless a['name'] || a['id']
|
46
54
|
end
|
47
55
|
end
|
48
56
|
end
|
57
|
+
|
58
|
+
def hash_check(html, href_hash)
|
59
|
+
html.xpath("//*[@id='#{href_hash}']", "//*[@name='#{href_hash}']").length > 0
|
60
|
+
end
|
49
61
|
end
|
data/lib/html/proofer/version.rb
CHANGED
@@ -1,46 +1,52 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
include HTML::Proofer::Checks
|
3
2
|
|
4
|
-
describe "Image" do
|
3
|
+
describe "Image tests" do
|
5
4
|
it "passes for existing external images" do
|
6
5
|
externalImageFilepath = "#{FIXTURES_DIR}/existingImageExternal.html"
|
7
|
-
@imageCheck =
|
6
|
+
@imageCheck = Images.new(externalImageFilepath, HTML::Proofer.create_nokogiri(externalImageFilepath))
|
8
7
|
@imageCheck.run
|
9
8
|
@imageCheck.issues[0].should eq(nil)
|
10
9
|
end
|
11
10
|
|
12
11
|
it "fails for image without alt attribute" do
|
13
12
|
missingAltFilepath = "#{FIXTURES_DIR}/missingImageAlt.html"
|
14
|
-
@imageCheck =
|
13
|
+
@imageCheck = Images.new(missingAltFilepath, HTML::Proofer.create_nokogiri(missingAltFilepath))
|
15
14
|
@imageCheck.run
|
16
|
-
@imageCheck.issues[0].should eq("
|
15
|
+
@imageCheck.issues[0].should eq("spec/html/proofer/fixtures/missingImageAlt.html".blue + ": image ./gpl.png does not have an alt attribute")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "fails for image with an empty alt attribute" do
|
19
|
+
missingAltFilepath = "#{FIXTURES_DIR}/missingImageAltText.html"
|
20
|
+
@imageCheck = Images.new(missingAltFilepath, HTML::Proofer.create_nokogiri(missingAltFilepath))
|
21
|
+
@imageCheck.run
|
22
|
+
@imageCheck.issues[0].should eq("spec/html/proofer/fixtures/missingImageAltText.html".blue + ": image ./gpl.png does not have an alt attribute")
|
17
23
|
end
|
18
24
|
|
19
25
|
it "fails for image without a dir prefix" do
|
20
26
|
missingImageDirPrefixFilepath = "#{FIXTURES_DIR}/missingImageDirPrefix.html"
|
21
|
-
@imageCheck =
|
27
|
+
@imageCheck = Images.new(missingImageDirPrefixFilepath, HTML::Proofer.create_nokogiri(missingImageDirPrefixFilepath))
|
22
28
|
@imageCheck.run
|
23
|
-
@imageCheck.issues[0].should eq("
|
29
|
+
@imageCheck.issues[0].should eq("spec/html/proofer/fixtures/missingImageDirPrefix.html".blue + ": internal image /gpl.png does not exist")
|
24
30
|
end
|
25
31
|
|
26
32
|
it "fails for missing external images" do
|
27
33
|
externalImageFilepath = "#{FIXTURES_DIR}/missingImageExternal.html"
|
28
|
-
@imageCheck =
|
34
|
+
@imageCheck = Images.new(externalImageFilepath, HTML::Proofer.create_nokogiri(externalImageFilepath))
|
29
35
|
@imageCheck.run
|
30
|
-
@imageCheck.issues[0].should eq("
|
36
|
+
@imageCheck.issues[0].should eq("spec/html/proofer/fixtures/missingImageExternal.html".blue + ": external image http://www.whatthehell does not exist")
|
31
37
|
end
|
32
38
|
|
33
39
|
it "fails for missing internal images" do
|
34
40
|
internalImageFilepath = "#{FIXTURES_DIR}/missingImageInternal.html"
|
35
|
-
@imageCheck =
|
41
|
+
@imageCheck = Images.new(internalImageFilepath, HTML::Proofer.create_nokogiri(internalImageFilepath))
|
36
42
|
@imageCheck.run
|
37
|
-
@imageCheck.issues[0].should eq("
|
43
|
+
@imageCheck.issues[0].should eq("spec/html/proofer/fixtures/missingImageInternal.html".blue + ": internal image ./doesnotexist.png does not exist")
|
38
44
|
end
|
39
45
|
|
40
46
|
it "fails for image with no src" do
|
41
47
|
imageSrcFilepath = "#{FIXTURES_DIR}/missingImageSrc.html"
|
42
|
-
@imageCheck =
|
48
|
+
@imageCheck = Images.new(imageSrcFilepath, HTML::Proofer.create_nokogiri(imageSrcFilepath))
|
43
49
|
@imageCheck.run
|
44
|
-
@imageCheck.issues[0].should eq("
|
50
|
+
@imageCheck.issues[0].should eq("spec/html/proofer/fixtures/missingImageSrc.html".blue + ": image has no src attribute")
|
45
51
|
end
|
46
52
|
end
|
@@ -1,40 +1,60 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
include HTML::Proofer::Checks
|
3
2
|
|
4
|
-
describe "Links" do
|
3
|
+
describe "Links tests" do
|
5
4
|
|
6
5
|
it "fails for broken external hash (even if the file exists)" do
|
7
6
|
brokenHashExternalFilepath = "#{FIXTURES_DIR}/brokenHashExternal.html"
|
8
|
-
@linkCheck =
|
7
|
+
@linkCheck = Links.new(brokenHashExternalFilepath, HTML::Proofer.create_nokogiri(brokenHashExternalFilepath))
|
9
8
|
@linkCheck.run
|
10
|
-
@linkCheck.issues[1].should eq("spec/html/proofer/fixtures/brokenHashExternal.html
|
9
|
+
@linkCheck.issues[1].should eq("spec/html/proofer/fixtures/brokenHashExternal.html".blue + ": linking to ./missingImageAlt.html#asdfasfdkafl, but asdfasfdkafl does not exist")
|
11
10
|
end
|
12
11
|
|
13
12
|
it "fails for broken internal hash" do
|
14
13
|
brokenHashInternalFilepath = "#{FIXTURES_DIR}/brokenHashInternal.html"
|
15
|
-
@linkCheck =
|
14
|
+
@linkCheck = Links.new(brokenHashInternalFilepath, HTML::Proofer.create_nokogiri(brokenHashInternalFilepath))
|
16
15
|
@linkCheck.run
|
17
|
-
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/brokenHashInternal.html
|
16
|
+
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/brokenHashInternal.html".blue + ": linking to an internal hash called noHash that does not exist")
|
18
17
|
end
|
19
18
|
|
20
19
|
it "fails for broken external links" do
|
21
20
|
brokenLinkExternalFilepath = "#{FIXTURES_DIR}/brokenLinkExternal.html"
|
22
|
-
@linkCheck =
|
21
|
+
@linkCheck = Links.new(brokenLinkExternalFilepath, HTML::Proofer.create_nokogiri(brokenLinkExternalFilepath))
|
23
22
|
@linkCheck.run
|
24
|
-
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/brokenLinkExternal.html
|
23
|
+
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/brokenLinkExternal.html".blue + ": externally linking to http://www.asdo3IRJ395295jsingrkrg4.com, which does not exist")
|
25
24
|
end
|
26
25
|
|
27
26
|
it "fails for broken internal links" do
|
28
27
|
brokenLinkInternalFilepath = "#{FIXTURES_DIR}/brokenLinkInternal.html"
|
29
|
-
@linkCheck =
|
28
|
+
@linkCheck = Links.new(brokenLinkInternalFilepath, HTML::Proofer.create_nokogiri(brokenLinkInternalFilepath))
|
30
29
|
@linkCheck.run
|
31
|
-
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/brokenLinkInternal.html
|
30
|
+
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/brokenLinkInternal.html".blue + ": internally linking to ./notreal.html, which does not exist")
|
32
31
|
end
|
33
32
|
|
34
33
|
it "fails for link with no href" do
|
35
34
|
missingLinkHrefFilepath = "#{FIXTURES_DIR}/missingLinkHref.html"
|
36
|
-
@linkCheck =
|
35
|
+
@linkCheck = Links.new(missingLinkHrefFilepath, HTML::Proofer.create_nokogiri(missingLinkHrefFilepath))
|
37
36
|
@linkCheck.run
|
38
|
-
@linkCheck.issues[0].should eq("
|
37
|
+
@linkCheck.issues[0].should eq("spec/html/proofer/fixtures/missingLinkHref.html".blue + ": link has no href attribute")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should follow redirects" do
|
41
|
+
linkWithRedirectFilepath = "#{FIXTURES_DIR}/linkWithRedirect.html"
|
42
|
+
@linkCheck = Links.new(linkWithRedirectFilepath, HTML::Proofer.create_nokogiri(linkWithRedirectFilepath))
|
43
|
+
@linkCheck.run
|
44
|
+
@linkCheck.issues[0].should eq(nil)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should understand https" do
|
48
|
+
linkWithHttpsFilepath = "#{FIXTURES_DIR}/linkWithHttps.html"
|
49
|
+
@linkCheck = Links.new(linkWithHttpsFilepath, HTML::Proofer.create_nokogiri(linkWithHttpsFilepath))
|
50
|
+
@linkCheck.run
|
51
|
+
@linkCheck.issues[0].should eq(nil)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "fails for broken hash links with status code numbers" do
|
55
|
+
brokenLinkWithNumberFilepath = "#{FIXTURES_DIR}/brokenLinkWithNumber.html"
|
56
|
+
@linkCheck = Links.new(brokenLinkWithNumberFilepath, HTML::Proofer.create_nokogiri(brokenLinkWithNumberFilepath))
|
57
|
+
@linkCheck.run
|
58
|
+
@linkCheck.issues[0].should eq(nil)
|
39
59
|
end
|
40
60
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,17 @@
|
|
1
1
|
require 'bundler/setup'
|
2
|
-
require_relative "../lib/html
|
3
|
-
require_relative "../lib/html/proofer/checks.rb"
|
2
|
+
require_relative "../lib/html-proofer"
|
4
3
|
|
5
4
|
require File.expand_path('../../lib/html/proofer/version.rb', __FILE__)
|
6
5
|
|
7
|
-
FIXTURES_DIR = "spec/html/proofer/fixtures"
|
6
|
+
FIXTURES_DIR = "spec/html/proofer/fixtures"
|
7
|
+
|
8
|
+
RSpec.configure do |config|
|
9
|
+
# Use color in STDOUT
|
10
|
+
config.color_enabled = true
|
11
|
+
|
12
|
+
# Use color not only in STDOUT but also in pagers and files
|
13
|
+
config.tty = true
|
14
|
+
|
15
|
+
# Use the specified formatter
|
16
|
+
config.formatter = :documentation # :progress, :html, :textmate
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html-proofer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -87,7 +87,9 @@ files:
|
|
87
87
|
- Gemfile.lock
|
88
88
|
- LICENSE.txt
|
89
89
|
- README.md
|
90
|
+
- Rakefile
|
90
91
|
- html-proofer.gemspec
|
92
|
+
- lib/html-proofer.rb
|
91
93
|
- lib/html/proofer.rb
|
92
94
|
- lib/html/proofer/check.rb
|
93
95
|
- lib/html/proofer/checks.rb
|
@@ -98,9 +100,13 @@ files:
|
|
98
100
|
- spec/html/proofer/fixtures/brokenHashInternal.html
|
99
101
|
- spec/html/proofer/fixtures/brokenLinkExternal.html
|
100
102
|
- spec/html/proofer/fixtures/brokenLinkInternal.html
|
103
|
+
- spec/html/proofer/fixtures/brokenLinkWithNumber.html
|
101
104
|
- spec/html/proofer/fixtures/existingImageExternal.html
|
102
105
|
- spec/html/proofer/fixtures/gpl.png
|
106
|
+
- spec/html/proofer/fixtures/linkWithHttps.html
|
107
|
+
- spec/html/proofer/fixtures/linkWithRedirect.html
|
103
108
|
- spec/html/proofer/fixtures/missingImageAlt.html
|
109
|
+
- spec/html/proofer/fixtures/missingImageAltText.html
|
104
110
|
- spec/html/proofer/fixtures/missingImageDirPrefix.html
|
105
111
|
- spec/html/proofer/fixtures/missingImageExternal.html
|
106
112
|
- spec/html/proofer/fixtures/missingImageInternal.html
|
@@ -141,9 +147,13 @@ test_files:
|
|
141
147
|
- spec/html/proofer/fixtures/brokenHashInternal.html
|
142
148
|
- spec/html/proofer/fixtures/brokenLinkExternal.html
|
143
149
|
- spec/html/proofer/fixtures/brokenLinkInternal.html
|
150
|
+
- spec/html/proofer/fixtures/brokenLinkWithNumber.html
|
144
151
|
- spec/html/proofer/fixtures/existingImageExternal.html
|
145
152
|
- spec/html/proofer/fixtures/gpl.png
|
153
|
+
- spec/html/proofer/fixtures/linkWithHttps.html
|
154
|
+
- spec/html/proofer/fixtures/linkWithRedirect.html
|
146
155
|
- spec/html/proofer/fixtures/missingImageAlt.html
|
156
|
+
- spec/html/proofer/fixtures/missingImageAltText.html
|
147
157
|
- spec/html/proofer/fixtures/missingImageDirPrefix.html
|
148
158
|
- spec/html/proofer/fixtures/missingImageExternal.html
|
149
159
|
- spec/html/proofer/fixtures/missingImageInternal.html
|