link-checker 0.4.0 → 0.5.0
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/VERSION +1 -1
- data/bin/check-links +1 -0
- data/lib/link_checker.rb +23 -12
- data/link-checker.gemspec +1 -1
- data/spec/link-checker_spec.rb +33 -15
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/bin/check-links
CHANGED
@@ -5,6 +5,7 @@ require 'trollop'
|
|
5
5
|
|
6
6
|
options = Trollop::options do
|
7
7
|
opt :no_warnings, "Don't warn about redirects to valid links"
|
8
|
+
opt :warnings_are_errors, "Treat any warning as an error and produce an error return code"
|
8
9
|
end
|
9
10
|
|
10
11
|
exit LinkChecker.new(:options => options, :target => ARGV[0]).check_uris
|
data/lib/link_checker.rb
CHANGED
@@ -43,7 +43,6 @@ class LinkChecker
|
|
43
43
|
when Net::HTTPRedirection then
|
44
44
|
return self.check_uri(URI(response['location']), true)
|
45
45
|
else
|
46
|
-
@return_code = 1
|
47
46
|
return Error.new(:uri_string => uri.to_s, :response => response)
|
48
47
|
end
|
49
48
|
end
|
@@ -89,9 +88,10 @@ class LinkChecker
|
|
89
88
|
begin
|
90
89
|
uri = URI(uri_string)
|
91
90
|
response = self.class.check_uri(uri)
|
92
|
-
|
91
|
+
response.uri_string = uri_string
|
92
|
+
response
|
93
93
|
rescue => error
|
94
|
-
|
94
|
+
Error.new(:error => error.to_s, :uri_string => uri_string)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
report_results(source_name, results)
|
@@ -99,10 +99,16 @@ class LinkChecker
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def report_results(file, results)
|
102
|
-
|
103
|
-
warnings = results.select{|result| result
|
102
|
+
errors = results.select{|result| result.class.eql? Error}
|
103
|
+
warnings = results.select{|result| result.class.eql? Redirect}
|
104
|
+
@return_code = 1 unless errors.empty?
|
105
|
+
if @options[:warnings_are_errors]
|
106
|
+
@return_code = 1 unless warnings.empty?
|
107
|
+
errors = errors + warnings
|
108
|
+
warnings = []
|
109
|
+
end
|
104
110
|
Thread.exclusive do
|
105
|
-
if
|
111
|
+
if errors.empty?
|
106
112
|
message = "Checked: #{file}"
|
107
113
|
if warnings.empty? || @options[:no_warnings]
|
108
114
|
puts message.green
|
@@ -111,22 +117,27 @@ class LinkChecker
|
|
111
117
|
end
|
112
118
|
unless @options[:no_warnings]
|
113
119
|
warnings.each do |warning|
|
114
|
-
puts " Warning: #{warning
|
115
|
-
puts " Redirected to: #{warning
|
120
|
+
puts " Warning: #{warning.uri_string}".yellow
|
121
|
+
puts " Redirected to: #{warning.final_destination_uri_string}".yellow
|
116
122
|
end
|
117
123
|
end
|
118
124
|
else
|
119
125
|
puts "Problem: #{file}".red
|
120
|
-
|
121
|
-
puts " Link: #{
|
122
|
-
|
126
|
+
errors.each do |error|
|
127
|
+
puts " Link: #{error.uri_string}".red
|
128
|
+
case error
|
129
|
+
when Redirect
|
130
|
+
puts " Redirected to: #{error.final_destination_uri_string}".red
|
131
|
+
when Error
|
132
|
+
puts " Response: #{error.error.to_s}".red
|
133
|
+
end
|
123
134
|
end
|
124
135
|
end
|
125
136
|
end
|
126
137
|
end
|
127
138
|
|
128
139
|
class Result
|
129
|
-
|
140
|
+
attr_accessor :uri_string
|
130
141
|
def initialize(params)
|
131
142
|
@uri_string = params[:uri_string]
|
132
143
|
end
|
data/link-checker.gemspec
CHANGED
data/spec/link-checker_spec.rb
CHANGED
@@ -75,7 +75,8 @@ describe LinkChecker do
|
|
75
75
|
before(:each) do
|
76
76
|
LinkChecker.any_instance.stub(:html_file_paths) {
|
77
77
|
['spec/test-site/public/blog/2012/10/02/a-list-of-links/index.html'] }
|
78
|
-
LinkChecker.stub(:external_link_uri_strings).and_return(
|
78
|
+
LinkChecker.stub(:external_link_uri_strings).and_return(
|
79
|
+
['http://something.com', 'http://something-else.com'])
|
79
80
|
end
|
80
81
|
|
81
82
|
it "prints green when the links are good." do
|
@@ -83,7 +84,7 @@ describe LinkChecker do
|
|
83
84
|
LinkChecker::Good.new(:uri_string => 'http://something.com')
|
84
85
|
end
|
85
86
|
$stdout.should_receive(:puts).with(/Checked/i).once
|
86
|
-
LinkChecker.new(:target => @site_path).check_uris
|
87
|
+
LinkChecker.new(:target => @site_path).check_uris.should == 0 # Return value: good
|
87
88
|
end
|
88
89
|
|
89
90
|
it "prints red when the links are bad." do
|
@@ -94,9 +95,9 @@ describe LinkChecker do
|
|
94
95
|
)
|
95
96
|
end
|
96
97
|
$stdout.should_receive(:puts).with(/Problem/i).once
|
97
|
-
$stdout.should_receive(:puts).with(/Link/i).
|
98
|
-
$stdout.should_receive(:puts).with(/Response/i).
|
99
|
-
LinkChecker.new(:target => @site_path).check_uris
|
98
|
+
$stdout.should_receive(:puts).with(/Link/i).twice
|
99
|
+
$stdout.should_receive(:puts).with(/Response/i).twice
|
100
|
+
LinkChecker.new(:target => @site_path).check_uris.should == 1 # Return value: error
|
100
101
|
end
|
101
102
|
|
102
103
|
it "prints yellow warnings when the links redirect." do
|
@@ -107,22 +108,38 @@ describe LinkChecker do
|
|
107
108
|
)
|
108
109
|
end
|
109
110
|
$stdout.should_receive(:puts).with(/Checked/i).once
|
110
|
-
$stdout.should_receive(:puts).with(/Warning/i).
|
111
|
-
$stdout.should_receive(:puts).with(/Redirected/i).
|
112
|
-
LinkChecker.new(:target => @site_path).check_uris
|
111
|
+
$stdout.should_receive(:puts).with(/Warning/i).twice
|
112
|
+
$stdout.should_receive(:puts).with(/Redirected/i).twice
|
113
|
+
LinkChecker.new(:target => @site_path).check_uris.should == 0 # Return value: good
|
114
|
+
end
|
115
|
+
|
116
|
+
it "prints errors when there are warnings with the --warnings_are_errors option." do
|
117
|
+
LinkChecker.stub(:check_uri) do
|
118
|
+
LinkChecker::Redirect.new(
|
119
|
+
:uri_string => 'http://something.com',
|
120
|
+
:final_destination_uri_string => 'http://something-else.com'
|
121
|
+
)
|
122
|
+
end
|
123
|
+
$stdout.should_receive(:puts).with(/Problem/i).once
|
124
|
+
$stdout.should_receive(:puts).with(/Link/i).twice
|
125
|
+
$stdout.should_receive(:puts).with(/Redirected/i).twice
|
126
|
+
LinkChecker.new(
|
127
|
+
:target => @site_path,
|
128
|
+
:options => { :warnings_are_errors => true }
|
129
|
+
).check_uris.should == 1 # Return value: error
|
113
130
|
end
|
114
131
|
|
115
132
|
it "does not print warnings when the links redirect with the --no-warnings option." do
|
116
133
|
LinkChecker.stub(:check_uri) do
|
117
134
|
LinkChecker::Redirect.new(
|
118
135
|
:uri_string => 'http://something.com',
|
119
|
-
:
|
136
|
+
:final_destination_uri_string => 'http://something-else.com'
|
120
137
|
)
|
121
138
|
end
|
122
139
|
$stdout.should_receive(:puts).with(/Checked/i).once
|
123
|
-
$stdout.should_receive(:puts).with(/Warning/i).
|
124
|
-
$stdout.should_receive(:puts).with(/Redirected/i).
|
125
|
-
LinkChecker.new(:target => @site_path).check_uris
|
140
|
+
$stdout.should_receive(:puts).with(/Warning/i).twice
|
141
|
+
$stdout.should_receive(:puts).with(/Redirected/i).twice
|
142
|
+
LinkChecker.new(:target => @site_path).check_uris.should == 0 # Return value: good
|
126
143
|
end
|
127
144
|
|
128
145
|
end
|
@@ -130,10 +147,11 @@ describe LinkChecker do
|
|
130
147
|
describe "prints output for invalid links and" do
|
131
148
|
|
132
149
|
it "declares them to be bad." do
|
133
|
-
LinkChecker.stub(:external_link_uri_strings).and_return(
|
150
|
+
LinkChecker.stub(:external_link_uri_strings).and_return(
|
151
|
+
['hQQp://!!!.com', 'hOOp://???.com'])
|
134
152
|
$stdout.should_receive(:puts).with(/Problem/i).once
|
135
|
-
$stdout.should_receive(:puts).with(/Link/i).
|
136
|
-
$stdout.should_receive(:puts).with(/Response/i).
|
153
|
+
$stdout.should_receive(:puts).with(/Link/i).twice
|
154
|
+
$stdout.should_receive(:puts).with(/Response/i).twice
|
137
155
|
thread = LinkChecker.new(:target => @site_path).start_link_check_thread('<html></html>', 'source.html')
|
138
156
|
thread.join
|
139
157
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: link-checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -558,7 +558,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
558
558
|
version: '0'
|
559
559
|
segments:
|
560
560
|
- 0
|
561
|
-
hash:
|
561
|
+
hash: -2838258292777551333
|
562
562
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
563
563
|
none: false
|
564
564
|
requirements:
|