html-proofer 0.0.1 → 0.0.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/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
|