validate-website 0.4.1 → 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/LICENSE +22 -0
- data/README.rdoc +52 -44
- data/Rakefile +20 -6
- data/bin/validate-website +12 -12
- data/lib/validate_website.rb +62 -28
- data/lib/validator.rb +43 -9
- data/man/man1/validate-website.1 +124 -0
- data/spec/data/html4-strict.html +239 -0
- data/spec/data/html5.html +1 -2
- data/spec/validate_website_spec.rb +9 -12
- data/spec/validator_spec.rb +11 -1
- metadata +35 -15
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2009-2010 Laurent Arnoud <laurent@spkdev.net>
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
'Software'), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
CHANGED
@@ -1,8 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
== DESCRIPTION
|
4
|
-
|
5
|
-
Web crawler for checking the validity of your documents.
|
1
|
+
= validate-website - Web crawler for checking the validity of your documents
|
6
2
|
|
7
3
|
== INSTALLATION
|
8
4
|
|
@@ -10,48 +6,60 @@
|
|
10
6
|
|
11
7
|
== SYNOPSIS
|
12
8
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
-
|
9
|
+
validate-website [OPTIONS]
|
10
|
+
|
11
|
+
== DESCRIPTION
|
12
|
+
|
13
|
+
validate-website is a web crawler for checking the markup validity and not
|
14
|
+
found urls.
|
15
|
+
|
16
|
+
== OPTIONS
|
17
|
+
|
18
|
+
-s, --site SITE
|
19
|
+
Website to crawl (Default: http://localhost:3000/)
|
20
|
+
-u, --user-agent USERAGENT
|
21
|
+
Change user agent (Default: Anemone/VERSION)
|
22
|
+
-e, --exclude EXCLUDE
|
23
|
+
Url to exclude (ex: redirect|news)
|
24
|
+
-f, --file FILE
|
25
|
+
Save not well formed or not found (with -n used) urls
|
26
|
+
-a, --authorization USER,PASS
|
27
|
+
Basic http authentification
|
28
|
+
-c, --cookies COOKIES
|
29
|
+
Set defaults cookies
|
30
|
+
-m, --[no-]markup-validation
|
31
|
+
Markup validation (Default: true)
|
32
|
+
-n, --not-found
|
33
|
+
Log not found url (Default: false)
|
34
|
+
-v, --verbose
|
35
|
+
Show detail of validator errors (Default: false).
|
36
|
+
-d, --debug
|
37
|
+
Show anemone log (Default: false)
|
38
|
+
-h, --help
|
39
|
+
Show help message and exit.
|
23
40
|
|
24
|
-
==
|
41
|
+
== EXIT STATUS
|
42
|
+
0::
|
43
|
+
Markup is valid and no 404 found.
|
44
|
+
64::
|
45
|
+
Not valid markup found.
|
46
|
+
65::
|
47
|
+
There are pages not found.
|
48
|
+
66::
|
49
|
+
There are not valid markup and pages not found.
|
25
50
|
|
26
|
-
|
27
|
-
add auth support and html body)
|
28
|
-
rainbow >= 1.0.4 (for console color)
|
51
|
+
== REQUIREMENTS
|
29
52
|
|
30
|
-
|
53
|
+
* spk-anemone, '>= 0.4.0'
|
54
|
+
* rainbow, '>= 1.1'
|
55
|
+
* html5, '= 0.10.0'
|
31
56
|
|
32
|
-
|
33
|
-
|
57
|
+
== CREDITS
|
58
|
+
|
59
|
+
* Thanks tenderlove for Nokogiri, this tool is inspired from markup_validity.
|
60
|
+
* And Chris Kite for Anemone web-spider framework.
|
34
61
|
|
35
62
|
== LICENSE
|
36
|
-
|
37
|
-
|
38
|
-
Copyright (c) 2009 Laurent Arnoud
|
39
|
-
|
40
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
41
|
-
a copy of this software and associated documentation files (the
|
42
|
-
'Software'), to deal in the Software without restriction, including
|
43
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
44
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
45
|
-
permit persons to whom the Software is furnished to do so, subject to
|
46
|
-
the following conditions:
|
47
|
-
|
48
|
-
The above copyright notice and this permission notice shall be
|
49
|
-
included in all copies or substantial portions of the Software.
|
50
|
-
|
51
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
52
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
53
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
54
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
55
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
56
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
57
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
63
|
+
The MIT License
|
64
|
+
|
65
|
+
Copyright (c) 2009-2010 Laurent Arnoud <laurent@spkdev.net>
|
data/Rakefile
CHANGED
@@ -2,14 +2,15 @@ require 'rake/packagetask'
|
|
2
2
|
require 'rake/rdoctask'
|
3
3
|
require 'rake'
|
4
4
|
require 'find'
|
5
|
+
require "rspec/core/rake_task" # RSpec 2.0
|
5
6
|
|
6
7
|
# Globals
|
7
8
|
|
8
9
|
PKG_NAME = 'validate-website'
|
9
|
-
PKG_VERSION = '0.
|
10
|
+
PKG_VERSION = '0.5.0'
|
10
11
|
|
11
|
-
PKG_FILES = ['README.rdoc', 'Rakefile']
|
12
|
-
Find.find('lib/', '
|
12
|
+
PKG_FILES = ['README.rdoc', 'Rakefile', 'LICENSE']
|
13
|
+
Find.find('bin/', 'lib/', 'man/', 'spec/') do |f|
|
13
14
|
if FileTest.directory?(f) and f =~ /\.svn|\.git/
|
14
15
|
Find.prune
|
15
16
|
else
|
@@ -52,19 +53,32 @@ spec = Gem::Specification.new do |s|
|
|
52
53
|
s.summary = 'Web crawler for checking the validity of your documents'
|
53
54
|
s.name = PKG_NAME
|
54
55
|
s.version = PKG_VERSION
|
55
|
-
s.requirements << 'spk-anemone' << 'rainbow'
|
56
|
+
s.requirements << 'spk-anemone' << 'rainbow' << 'html5'
|
56
57
|
s.add_dependency('spk-anemone', '>= 0.4.0')
|
57
58
|
s.add_dependency('rainbow', '>= 1.1')
|
58
|
-
s.
|
59
|
+
s.add_dependency('html5', '= 0.10.0')
|
60
|
+
s.add_development_dependency('rspec', '>= 2.0.0')
|
59
61
|
s.add_development_dependency('fakeweb', '>= 1.3.0')
|
60
62
|
s.require_path = 'lib'
|
61
63
|
s.bindir = 'bin'
|
62
64
|
s.executables << 'validate-website'
|
63
65
|
s.files = PKG_FILES
|
64
|
-
s.description = '
|
66
|
+
s.description = 'validate-website is a web crawler for checking the markup' +
|
67
|
+
'validity and not found urls.'
|
65
68
|
end
|
66
69
|
|
67
70
|
Rake::GemPackageTask.new(spec) do |pkg|
|
68
71
|
pkg.need_zip = true
|
69
72
|
pkg.need_tar = true
|
70
73
|
end
|
74
|
+
|
75
|
+
desc 'Update manpage from asciidoc file'
|
76
|
+
task :manpage do
|
77
|
+
system('a2x -f manpage -D man/man1 doc/validate-website.txt')
|
78
|
+
end
|
79
|
+
|
80
|
+
# RSpec 2.0
|
81
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
82
|
+
spec.pattern = 'spec/*_spec.rb'
|
83
|
+
spec.rspec_opts = ['--backtrace']
|
84
|
+
end
|
data/bin/validate-website
CHANGED
@@ -10,16 +10,16 @@ require 'validate_website'
|
|
10
10
|
validate_website = ValidateWebsite.new(ARGV)
|
11
11
|
options = validate_website.options
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
13
|
+
validate_website.crawl options[:site],
|
14
|
+
:markup_validation => options[:markup_validation],
|
15
|
+
:user_agent => options[:user_agent],
|
16
|
+
:exclude => options[:exclude],
|
17
|
+
:file => options[:file],
|
18
|
+
:authorization => options[:authorization],
|
19
|
+
:not_found => options[:not_found],
|
20
|
+
:cookies => options[:cookies],
|
21
|
+
:accept_cookies => options[:accept_cookies],
|
22
|
+
:verbose => options[:debug],
|
23
|
+
:error_verbose => options[:verbose]
|
24
24
|
|
25
|
-
exit(
|
25
|
+
exit(validate_website.exit_status)
|
data/lib/validate_website.rb
CHANGED
@@ -10,14 +10,22 @@ class ValidateWebsite
|
|
10
10
|
|
11
11
|
include ColorfulMessages
|
12
12
|
|
13
|
+
EXIT_SUCCESS = 0
|
14
|
+
EXIT_FAILURE_MARKUP = 64
|
15
|
+
EXIT_FAILURE_NOT_FOUND = 65
|
16
|
+
EXIT_FAILURE_MARKUP_NOT_FOUND = 66
|
17
|
+
|
13
18
|
def initialize(args=[])
|
19
|
+
@markup_error = nil
|
20
|
+
@not_found_error = nil
|
21
|
+
|
14
22
|
@options = {
|
15
23
|
:site => 'http://localhost:3000/',
|
16
24
|
:markup_validation => true,
|
17
|
-
:
|
25
|
+
:user_agent => Anemone::Core::DEFAULT_OPTS[:user_agent],
|
18
26
|
:exclude => nil,
|
19
27
|
:file => nil,
|
20
|
-
:
|
28
|
+
:authorization => nil,
|
21
29
|
# log not found url (404 status code)
|
22
30
|
:not_found => false,
|
23
31
|
:cookies => nil,
|
@@ -36,30 +44,47 @@ class ValidateWebsite
|
|
36
44
|
def parse(args)
|
37
45
|
opts = OptionParser.new do |o|
|
38
46
|
o.set_summary_indent(' ')
|
39
|
-
o.banner =
|
40
|
-
o.define_head
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
47
|
+
o.banner = 'Usage: validate-website [OPTIONS]'
|
48
|
+
o.define_head 'validate-website - Web crawler for checking the validity'+
|
49
|
+
' of your documents'
|
50
|
+
o.separator ''
|
51
|
+
|
52
|
+
o.on("-s", "--site 'SITE'", String,
|
53
|
+
"Website to crawl (Default: #{@options[:site]})") { |v|
|
54
|
+
@options[:site] = v
|
55
|
+
}
|
56
|
+
o.on("-u", "--user-agent 'USERAGENT'", String,
|
57
|
+
"Change user agent (Default: #{@options[:user_agent]})") { |v|
|
58
|
+
@options[:user_agent] = v
|
59
|
+
}
|
60
|
+
o.on("-e", "--exclude 'EXCLUDE'", String,
|
61
|
+
"Url to exclude (ex: 'redirect|news')") { |v|
|
62
|
+
@options[:exclude] = v
|
63
|
+
}
|
64
|
+
o.on("-f", "--file 'FILE'", String,
|
65
|
+
"Save not well formed or not found urls") { |v| @options[:file] = v }
|
66
|
+
o.on("-a", "--authorization 'USER,PASS'", Array,
|
67
|
+
"Basic http authentification") { |v|
|
68
|
+
@options[:authorization] = v
|
69
|
+
}
|
70
|
+
o.on("-c", "--cookies 'COOKIES'", String,
|
71
|
+
"Set defaults cookies") { |v| @options[:cookies] = v }
|
55
72
|
o.on("-m", "--[no-]markup-validation",
|
56
|
-
"Markup validation (Default: #{@options[:markup_validation]})") { |v|
|
73
|
+
"Markup validation (Default: #{@options[:markup_validation]})") { |v|
|
74
|
+
@options[:markup_validation] = v
|
75
|
+
}
|
57
76
|
o.on("-n", "--not-found",
|
58
|
-
"Log not found url (Default: #{@options[:not_found]})") { |v|
|
77
|
+
"Log not found url (Default: #{@options[:not_found]})") { |v|
|
78
|
+
@options[:not_found] = v
|
79
|
+
}
|
59
80
|
o.on("-v", "--verbose",
|
60
|
-
"Show
|
81
|
+
"Show validator errors (Default: #{@options[:verbose]})") { |v|
|
82
|
+
@options[:verbose] = v
|
83
|
+
}
|
61
84
|
o.on("-d", "--debug",
|
62
|
-
"Show anemone log (Default: #{@options[:debug]})") { |v|
|
85
|
+
"Show anemone log (Default: #{@options[:debug]})") { |v|
|
86
|
+
@options[:debug] = v
|
87
|
+
}
|
63
88
|
|
64
89
|
o.separator ""
|
65
90
|
o.on_tail("-h", "--help", "Show this help message.") { puts o; exit }
|
@@ -79,8 +104,6 @@ class ValidateWebsite
|
|
79
104
|
end
|
80
105
|
|
81
106
|
def crawl(site, opts={})
|
82
|
-
exit_code = 0
|
83
|
-
|
84
107
|
@anemone = Anemone.crawl(site, opts) do |anemone|
|
85
108
|
anemone.skip_links_like Regexp.new(opts[:exclude]) if opts[:exclude]
|
86
109
|
|
@@ -119,22 +142,33 @@ class ValidateWebsite
|
|
119
142
|
if validator.valid?
|
120
143
|
puts success(msg)
|
121
144
|
else
|
122
|
-
|
145
|
+
@markup_error = true
|
123
146
|
puts error(msg)
|
124
|
-
puts error(validator.errors) if opts[:error_verbose]
|
147
|
+
puts error(validator.errors.join(", ")) if opts[:error_verbose]
|
125
148
|
to_file(url)
|
126
149
|
end
|
127
150
|
end
|
128
151
|
end
|
129
152
|
|
130
153
|
if opts[:not_found] && page.not_found?
|
131
|
-
|
154
|
+
@not_found_error = true
|
132
155
|
puts error("%s linked in %s but not exist" % [url, page.referer])
|
133
156
|
to_file(url)
|
134
157
|
end
|
135
158
|
}
|
136
159
|
end
|
137
|
-
|
160
|
+
end
|
161
|
+
|
162
|
+
def exit_status
|
163
|
+
if @markup_error && @not_found_error
|
164
|
+
EXIT_FAILURE_MARKUP_NOT_FOUND
|
165
|
+
elsif @markup_error
|
166
|
+
EXIT_FAILURE_MARKUP
|
167
|
+
elsif @not_found_error
|
168
|
+
EXIT_FAILURE_NOT_FOUND
|
169
|
+
else
|
170
|
+
EXIT_SUCCESS
|
171
|
+
end
|
138
172
|
end
|
139
173
|
|
140
174
|
private
|
data/lib/validator.rb
CHANGED
@@ -6,14 +6,17 @@ class Validator
|
|
6
6
|
def initialize(page)
|
7
7
|
@page = page
|
8
8
|
@dtd = @page.doc.internal_subset
|
9
|
+
init_namespace(@dtd)
|
10
|
+
@errors = []
|
9
11
|
|
10
|
-
if @
|
11
|
-
@dtd_uri
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
if @namespace
|
13
|
+
if @dtd_uri && @page.body.match(@dtd_uri.to_s)
|
14
|
+
document = @page.body.sub(@dtd_uri.to_s, @namespace + '.dtd')
|
15
|
+
else
|
16
|
+
document = @page.body
|
17
|
+
end
|
15
18
|
@doc = Dir.chdir(XHTML_PATH) do
|
16
|
-
Nokogiri::XML(
|
19
|
+
Nokogiri::XML(document) { |cfg|
|
17
20
|
cfg.noent.dtdload.dtdvalid
|
18
21
|
}
|
19
22
|
end
|
@@ -24,15 +27,46 @@ class Validator
|
|
24
27
|
Nokogiri::XML::Schema(File.read(@namespace + '.xsd'))
|
25
28
|
end
|
26
29
|
end
|
27
|
-
|
30
|
+
|
31
|
+
if @xsd
|
32
|
+
# have the xsd so use it
|
33
|
+
@errors = @xsd.validate(@doc)
|
34
|
+
else
|
35
|
+
# dont have xsd fall back to dtd
|
36
|
+
@doc = Dir.chdir(XHTML_PATH) do
|
37
|
+
Nokogiri::HTML.parse(document)
|
38
|
+
end
|
39
|
+
@errors = @doc.errors
|
40
|
+
end
|
41
|
+
elsif @page.body =~ /^\<!DOCTYPE html\>/i
|
42
|
+
# html5 doctype
|
43
|
+
# http://dev.w3.org/html5/spec/Overview.html#the-doctype
|
44
|
+
require 'html5'
|
45
|
+
require 'html5/filters/validator'
|
46
|
+
html5_parser = HTML5::HTMLParser.new(:tokenizer => HTMLConformanceChecker)
|
47
|
+
html5_parser.parse(@page.body)
|
48
|
+
@errors = html5_parser.errors.collect{|e| e[1] }
|
28
49
|
else
|
29
|
-
@errors
|
50
|
+
@errors << 'Unknown Document'
|
30
51
|
end
|
31
52
|
rescue Nokogiri::XML::SyntaxError => e
|
32
|
-
|
53
|
+
# http://nokogiri.org/tutorials/ensuring_well_formed_markup.html
|
54
|
+
@errors << e
|
33
55
|
end
|
34
56
|
|
35
57
|
def valid?
|
36
58
|
@errors.length == 0
|
37
59
|
end
|
60
|
+
|
61
|
+
private
|
62
|
+
def init_namespace(dtd)
|
63
|
+
if dtd.system_id
|
64
|
+
dtd_uri = URI.parse(dtd.system_id)
|
65
|
+
if dtd.system_id && dtd_uri.path
|
66
|
+
@dtd_uri = dtd_uri
|
67
|
+
# http://www.w3.org/TR/xhtml1/#dtds
|
68
|
+
@namespace = File.basename(@dtd_uri.path, '.dtd')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
38
72
|
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
'\" t
|
2
|
+
.\" Title: validate-website
|
3
|
+
.\" Author: [see the "AUTHOR" section]
|
4
|
+
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
|
5
|
+
.\" Date: 10/31/2010
|
6
|
+
.\" Manual: \ \&
|
7
|
+
.\" Source: \ \&
|
8
|
+
.\" Language: English
|
9
|
+
.\"
|
10
|
+
.TH "VALIDATE\-WEBSITE" "1" "10/31/2010" "\ \&" "\ \&"
|
11
|
+
.\" -----------------------------------------------------------------
|
12
|
+
.\" * Define some portability stuff
|
13
|
+
.\" -----------------------------------------------------------------
|
14
|
+
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
15
|
+
.\" http://bugs.debian.org/507673
|
16
|
+
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
|
17
|
+
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
18
|
+
.ie \n(.g .ds Aq \(aq
|
19
|
+
.el .ds Aq '
|
20
|
+
.\" -----------------------------------------------------------------
|
21
|
+
.\" * set default formatting
|
22
|
+
.\" -----------------------------------------------------------------
|
23
|
+
.\" disable hyphenation
|
24
|
+
.nh
|
25
|
+
.\" disable justification (adjust text to left margin only)
|
26
|
+
.ad l
|
27
|
+
.\" -----------------------------------------------------------------
|
28
|
+
.\" * MAIN CONTENT STARTS HERE *
|
29
|
+
.\" -----------------------------------------------------------------
|
30
|
+
.SH "NAME"
|
31
|
+
validate-website \- Web crawler for checking the validity of your documents
|
32
|
+
.SH "SYNOPSIS"
|
33
|
+
.sp
|
34
|
+
\fBvalidate\-website\fR [\fIOPTIONS\fR]
|
35
|
+
.SH "DESCRIPTION"
|
36
|
+
.sp
|
37
|
+
validate\-website is a web crawler for checking the markup validity and not found urls\&.
|
38
|
+
.SH "OPTIONS"
|
39
|
+
.PP
|
40
|
+
\fB\-s\fR, \fB\-\-site\fR \fISITE\fR
|
41
|
+
.RS 4
|
42
|
+
Website to crawl (Default:
|
43
|
+
http://localhost:3000/)
|
44
|
+
.RE
|
45
|
+
.PP
|
46
|
+
\fB\-u\fR, \fB\-\-user\-agent\fR \fIUSERAGENT\fR
|
47
|
+
.RS 4
|
48
|
+
Change user agent (Default: Anemone/VERSION)
|
49
|
+
.RE
|
50
|
+
.PP
|
51
|
+
\fB\-e\fR, \fB\-\-exclude\fR \fIEXCLUDE\fR
|
52
|
+
.RS 4
|
53
|
+
Url to exclude (ex:
|
54
|
+
\fIredirect|news\fR)
|
55
|
+
.RE
|
56
|
+
.PP
|
57
|
+
\fB\-f\fR, \fB\-\-file\fR \fIFILE\fR
|
58
|
+
.RS 4
|
59
|
+
Save not well formed or not found (with \-n used) urls
|
60
|
+
.RE
|
61
|
+
.PP
|
62
|
+
\fB\-a\fR, \fB\-\-authorization\fR \fIUSER,PASS\fR
|
63
|
+
.RS 4
|
64
|
+
Basic http authentification
|
65
|
+
.RE
|
66
|
+
.PP
|
67
|
+
\fB\-c\fR, \fB\-\-cookies\fR \fICOOKIES\fR
|
68
|
+
.RS 4
|
69
|
+
Set defaults cookies
|
70
|
+
.RE
|
71
|
+
.PP
|
72
|
+
\fB\-m\fR, \fB\-\-[no\-]markup\-validation\fR
|
73
|
+
.RS 4
|
74
|
+
Markup validation (Default: true)
|
75
|
+
.RE
|
76
|
+
.PP
|
77
|
+
\fB\-n\fR, \fB\-\-not\-found\fR
|
78
|
+
.RS 4
|
79
|
+
Log not found url (Default: false)
|
80
|
+
.RE
|
81
|
+
.PP
|
82
|
+
\fB\-v\fR, \fB\-\-verbose\fR
|
83
|
+
.RS 4
|
84
|
+
Show detail of validator errors (Default: false)\&.
|
85
|
+
.RE
|
86
|
+
.PP
|
87
|
+
\fB\-d\fR, \fB\-\-debug\fR
|
88
|
+
.RS 4
|
89
|
+
Show anemone log (Default: false)
|
90
|
+
.RE
|
91
|
+
.PP
|
92
|
+
\fB\-h\fR, \fB\-\-help\fR
|
93
|
+
.RS 4
|
94
|
+
Show help message and exit\&.
|
95
|
+
.RE
|
96
|
+
.SH "EXIT STATUS"
|
97
|
+
.PP
|
98
|
+
0
|
99
|
+
.RS 4
|
100
|
+
Markup is valid and no 404 found\&.
|
101
|
+
.RE
|
102
|
+
.PP
|
103
|
+
64
|
104
|
+
.RS 4
|
105
|
+
Not valid markup found\&.
|
106
|
+
.RE
|
107
|
+
.PP
|
108
|
+
65
|
109
|
+
.RS 4
|
110
|
+
There are pages not found\&.
|
111
|
+
.RE
|
112
|
+
.PP
|
113
|
+
66
|
114
|
+
.RS 4
|
115
|
+
There are not valid markup and pages not found\&.
|
116
|
+
.RE
|
117
|
+
.SH "AUTHOR"
|
118
|
+
.sp
|
119
|
+
Laurent Arnoud <laurent@spkdev\&.net>
|
120
|
+
.SH "LICENSE"
|
121
|
+
.sp
|
122
|
+
The MIT License
|
123
|
+
.sp
|
124
|
+
Copyright (c) 2009\-2010 Laurent Arnoud <laurent@spkdev\&.net>
|
@@ -0,0 +1,239 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html lang="fr">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
+
<title>Debian -- Le système d'exploitation universel </title>
|
6
|
+
<link rev="made" href="mailto:webmaster@debian.org">
|
7
|
+
<link rel="shortcut icon" href="favicon.ico">
|
8
|
+
<meta name="Keywords" content="debian, GNU, linux, unix, open source, libre, DFSG">
|
9
|
+
<meta name="Description" content="Debian GNU/Linux est une distribution libre du système d'exploitation GNU/Linux. Elle est développée et mise à jour grâce au travail de nombreux utilisateurs qui offrent leur temps et leurs efforts.">
|
10
|
+
<meta name="Generator" content="WML 2.0.11 (19-Aug-2006)">
|
11
|
+
<meta name="Modified" content="2010-10-22 23:28:09">
|
12
|
+
<link rel="alternate" type="application/rss+xml"
|
13
|
+
title="Annonces de sécurité Debian (titres seulement)" href="security/dsa">
|
14
|
+
<link rel="alternate" type="application/rss+xml"
|
15
|
+
title="Annonces de sécurité Debian (résumés)" href="security/dsa-long">
|
16
|
+
<link href="./debian.css" rel="stylesheet" type="text/css">
|
17
|
+
<link href="./debian-fr.css" rel="stylesheet" type="text/css" media="all">
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="header">
|
21
|
+
<div id="upperheader">
|
22
|
+
<div id="logo">
|
23
|
+
<a href="./"><img src="./logos/openlogo-nd-50.png" width="50" height="61" alt=""></a>
|
24
|
+
<a href="./" rel="start"><img src="Pics/debian.png" width="179" height="61" alt="Projet Debian"></a>
|
25
|
+
</div> <!-- end logo -->
|
26
|
+
</div> <!-- end upperheader -->
|
27
|
+
<!--UdmComment-->
|
28
|
+
<div id="navbar">
|
29
|
+
<p class="hidecss"><a href="#inner">Sauter le menu</a></p>
|
30
|
+
<ul>
|
31
|
+
<li><a href="intro/about">À propos de Debian</a></li>
|
32
|
+
<li><a href="./News/">Actualités</a></li>
|
33
|
+
<li><a href="distrib/">Obtenir Debian</a></li>
|
34
|
+
<li><a href="./support">Assistance</a></li>
|
35
|
+
<li><a href="./devel/">Le coin du développeur</a></li>
|
36
|
+
<li><a href="./sitemap">Plan du site</a></li>
|
37
|
+
<li><a href="http://search.debian.org/">Recherche</a></li>
|
38
|
+
</ul>
|
39
|
+
</div> <!-- end navbar -->
|
40
|
+
</div> <!-- end header -->
|
41
|
+
<!--/UdmComment-->
|
42
|
+
<div id="outer">
|
43
|
+
<div id="inner">
|
44
|
+
<div id="leftcol">
|
45
|
+
<!--UdmComment-->
|
46
|
+
<ul>
|
47
|
+
<li><a href="intro/about">À propos de Debian</a>
|
48
|
+
<ul>
|
49
|
+
<li><a href="./social_contract">Notre contrat social</a></li>
|
50
|
+
<li><a href="./intro/free">Logiciel libre</a></li>
|
51
|
+
<li><a href="./partners/">Partenaires</a></li>
|
52
|
+
<li><a href="./donations">Dons</a></li>
|
53
|
+
<li><a href="./contact">Nous contacter</a></li>
|
54
|
+
</ul>
|
55
|
+
</li>
|
56
|
+
<li><a href="./News/">Actualités</a>
|
57
|
+
<ul>
|
58
|
+
<li><a href="./News/project/">Nouvelles du projet</a></li>
|
59
|
+
<li><a href="./events/">Événements</a></li>
|
60
|
+
</ul>
|
61
|
+
</li>
|
62
|
+
<li><a href="distrib/">Obtenir Debian</a>
|
63
|
+
<ul>
|
64
|
+
<li><a href="CD/vendors/">Vendeurs de CD</a></li>
|
65
|
+
<li><a href="CD/">Images ISO de CD</a></li>
|
66
|
+
<li><a href="distrib/netinst">Installation par le réseau</a></li>
|
67
|
+
<li><a href="distrib/pre-installed">Préinstallée</a></li>
|
68
|
+
</ul>
|
69
|
+
</li>
|
70
|
+
<li><a href="distrib/packages">Paquets Debian</a></li>
|
71
|
+
<li><a href="doc/">Documentation</a>
|
72
|
+
<ul>
|
73
|
+
<li><a href="./releases/">Dernière version</a></li>
|
74
|
+
<li><a href="./releases/stable/installmanual">Manuel d'installation</a></li>
|
75
|
+
<li><a href="doc/books">Livres Debian</a></li>
|
76
|
+
</ul>
|
77
|
+
</li>
|
78
|
+
<li><a href="./support">Assistance</a>
|
79
|
+
<ul>
|
80
|
+
<li><a href="./international/">Debian et l'international</a></li>
|
81
|
+
<li><a href="./security/">Informations sur la sécurité</a></li>
|
82
|
+
<li><a href="Bugs/">Rapports de bogues</a></li>
|
83
|
+
<li><a href="MailingLists/">Listes de diffusion</a></li>
|
84
|
+
<li><a href="http://lists.debian.org/">Archives des listes de diffusion</a></li>
|
85
|
+
<li><a href="./ports/">Portages/Architectures</a></li>
|
86
|
+
</ul>
|
87
|
+
</li>
|
88
|
+
<li><a href="misc/">Divers</a></li>
|
89
|
+
<li><a href="./intro/help">Aider Debian</a></li>
|
90
|
+
<li><a href="./devel/">Le coin du développeur</a></li>
|
91
|
+
<li><a href="./sitemap">Plan du site</a></li>
|
92
|
+
<li><a href="http://search.debian.org/">Recherche</a></li>
|
93
|
+
</ul>
|
94
|
+
<form method="get" action="http://search.debian.org/">
|
95
|
+
<p>
|
96
|
+
<input type="text" name="q" size="12">
|
97
|
+
</p>
|
98
|
+
</form>
|
99
|
+
<p>
|
100
|
+
<a href="./sponsor.html"><img src="sponsor_img.jpg" alt="Le site de notre sponsor" width="102" height="60"></a>
|
101
|
+
</p>
|
102
|
+
<p>
|
103
|
+
<a href="http://validator.w3.org/check/referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" width="88" height="31"></a>
|
104
|
+
</p>
|
105
|
+
<p>
|
106
|
+
<img src="http://jigsaw.w3.org/css-validator/images/vcss"
|
107
|
+
alt="Valid CSS!" width="88" height="31">
|
108
|
+
</p>
|
109
|
+
<!--/UdmComment-->
|
110
|
+
</div> <!-- end leftcol -->
|
111
|
+
<div id="maincol">
|
112
|
+
<a href="./News/2009/20090214"><img src="Pics/lennybanner_indexed.png" alt="Debian 5.0 - Le système d'exploitation universel" width="380" height="310" style="margin-right: 10px; float: left;"></a>
|
113
|
+
<h2>Qu'est-ce que Debian ?</h2>
|
114
|
+
<p><a href="http://www.debian.org/">Debian</a> est un système d'exploitation
|
115
|
+
<a href="intro/free">libre</a> pour votre ordinateur. Un système d'exploitation
|
116
|
+
est la suite des programmes de base et des utilitaires qui permettent à un
|
117
|
+
ordinateur de fonctionner. Debian utilise le noyau
|
118
|
+
<a href="http://www.kernel.org/">Linux</a> (le cœur d'un système d'exploitation),
|
119
|
+
mais la plupart des outils de base du système proviennent du
|
120
|
+
<a href="http://www.gnu.org/">projet GNU</a> ; d'où le nom GNU/Linux.</p>
|
121
|
+
<p>Debian GNU/Linux est bien plus qu'un simple système d'exploitation :
|
122
|
+
il contient plus de 25000
|
123
|
+
<a href="distrib/packages">paquets</a> ; les paquets sont des composants
|
124
|
+
logiciels précompilés conçus pour s'installer facilement sur votre machine.</p>
|
125
|
+
<p><a href="intro/about">Suite...</a>
|
126
|
+
<hr>
|
127
|
+
<h2>Pour commencer</h2>
|
128
|
+
<p>La <a href="releases/stable/">dernière version stable de Debian</a> est
|
129
|
+
la 5.0. La dernière mise à jour de cette version a été publiée
|
130
|
+
le 4 septembre 2010. Vous pouvez aussi accéder aux
|
131
|
+
<a href="releases/">autres versions disponibles de Debian</a>.</p>
|
132
|
+
<p>Si vous souhaitez commencer à utiliser Debian, vous pouvez facilement
|
133
|
+
<a href="distrib/">en obtenir une copie</a>, et ensuite suivre les
|
134
|
+
<a href="releases/stable/installmanual">instructions d'installation</a>
|
135
|
+
pour l'installer.</p>
|
136
|
+
<p>Si vous mettez à niveau votre système depuis une ancienne version vers
|
137
|
+
la dernière version stable publiée, veuillez lire les
|
138
|
+
<a href="releases/stable/releasenotes">notes de publication</a>
|
139
|
+
avant de commencer.</p>
|
140
|
+
<p>Pour obtenir de l'aide concernant l'utilisation ou la configuration
|
141
|
+
de Debian, consultez nos pages sur la <a href="doc/">documentation</a>
|
142
|
+
et l'<a href="support">assistance</a>.</p>
|
143
|
+
<p>Les utilisateurs qui parlent une langue autre que l'anglais peuvent
|
144
|
+
consulter la section sur l'<a href="international/">international</a>.</p>
|
145
|
+
<p>Les personnes ayant un autre système qu'Intel x86 peuvent
|
146
|
+
consulter la section sur les <a href="ports/">portages</a>.</p>
|
147
|
+
<hr>
|
148
|
+
<h2>Actualités</h2>
|
149
|
+
<p><tt>[19 octobre 2010]</tt> <strong><a href="News/2010/20101019">Debian sur le point d'accueillir officiellement les contributeurs non empaqueteurs</a></strong><br>
|
150
|
+
<tt>[7 octobre 2010]</tt> <strong><a href="News/2010/20101007">Debian à la rencontre de la <q>Society for Neuroscience</q></a></strong><br>
|
151
|
+
<tt>[8 septembre 2010]</tt> <strong><a href="News/2010/20100908">Paris Mini-DebConf 2010</a></strong><br>
|
152
|
+
<tt>[5 septembre 2010]</tt> <strong><a href="News/2010/20100905">Le service de rétroportages (« backports ») devient officiel</a></strong><br>
|
153
|
+
<tt>[4 septembre 2010]</tt> <strong><a href="News/2010/20100904">Publication de la mise à jour de Debian GNU/Linux 5.0.6</a></strong><br>
|
154
|
+
<tt>[3 septembre 2010]</tt> <strong><a href="News/2010/20100903">Conférence 2010 de la communauté Debian italienne - du 17 au 19 septembre à Pérouse, Italie</a></strong><br>
|
155
|
+
</p>
|
156
|
+
<p>Pour les communiqués plus anciens, consultez la suite de la page <a href="./News/">actualités</a>.
|
157
|
+
Si vous voulez recevoir un courrier (en anglais) à chaque fois qu'un communiqué paraît, abonnez-vous
|
158
|
+
à la <a href="MailingLists/debian-announce">liste de diffusion debian-announce</a>.</p>
|
159
|
+
<hr>
|
160
|
+
<h2>Annonces de sécurité</h2>
|
161
|
+
<p><tt>[22 octobre 2010]</tt> <strong><a href="security/2010/dsa-2122">DSA-2122 glibc</a></strong> - missing input sanitization <br>
|
162
|
+
<tt>[19 octobre 2010]</tt> <strong><a href="security/2010/dsa-2121">DSA-2121 typo3-src</a></strong> - several vulnerabilities <br>
|
163
|
+
<tt>[12 octobre 2010]</tt> <strong><a href="security/2010/dsa-2120">DSA-2120 postgresql-8.3</a></strong> - privilege escalation <br>
|
164
|
+
<tt>[12 octobre 2010]</tt> <strong><a href="security/2010/dsa-2119">DSA-2119 poppler</a></strong> - several vulnerabilities <br>
|
165
|
+
<tt>[8 octobre 2010]</tt> <strong><a href="security/2010/dsa-2118">DSA-2118 subversion</a></strong> - logic flaw <br>
|
166
|
+
<tt>[4 octobre 2010]</tt> <strong><a href="security/2010/dsa-2117">DSA-2117 apr-util</a></strong> - denial of service <br>
|
167
|
+
<tt>[4 octobre 2010]</tt> <strong><a href="security/2010/dsa-2116">DSA-2116 freetype</a></strong> - integer overflow <br>
|
168
|
+
<tt>[29 septembre 2010]</tt> <strong><a href="security/2010/dsa-2115">DSA-2115 moodle</a></strong> - several vulnerabilities <br>
|
169
|
+
<tt>[26 septembre 2010]</tt> <strong><a href="security/2010/dsa-2114">DSA-2114 git-core</a></strong> - buffer overflow <br>
|
170
|
+
<tt>[20 septembre 2010]</tt> <strong><a href="security/2010/dsa-2113">DSA-2113 drupal6</a></strong> - several vulnerabilities <br>
|
171
|
+
<tt>[20 septembre 2010]</tt> <strong><a href="security/2010/dsa-2112">DSA-2112 bzip2</a></strong> - integer overflow <br>
|
172
|
+
</p>
|
173
|
+
<p>Pour les annonces de sécurité, consultez la <a href="./security/">
|
174
|
+
page sécurité</a>.
|
175
|
+
Si vous voulez recevoir les annonces de sécurité (en anglais) dès leur parution, abonnez-vous
|
176
|
+
à la <a href="http://lists.debian.org/debian-security-announce/">liste de diffusion debian-security-announce</a>.</p>
|
177
|
+
</div> <!-- end maincol -->
|
178
|
+
<div class="clr"></div>
|
179
|
+
</div> <!-- end inner -->
|
180
|
+
<div id="footer">
|
181
|
+
<hr class="hidecss">
|
182
|
+
<!--UdmComment-->
|
183
|
+
<p>
|
184
|
+
Cette page est aussi disponible dans les langues suivantes :
|
185
|
+
</p><p class="navpara">
|
186
|
+
<a href="index.ar.html" title="arabe" hreflang="ar" lang="ar" rel="alternate">عربية (Arabiya)</a>
|
187
|
+
<a href="index.bg.html" title="bulgare" hreflang="bg" lang="bg" rel="alternate">Български (Bəlgarski)</a>
|
188
|
+
<a href="index.ca.html" title="catalan" hreflang="ca" lang="ca" rel="alternate">català</a>
|
189
|
+
<a href="index.cs.html" title="tchèque" hreflang="cs" lang="cs" rel="alternate">česky</a>
|
190
|
+
<a href="index.da.html" title="danois" hreflang="da" lang="da" rel="alternate">dansk</a>
|
191
|
+
<a href="index.de.html" title="allemand" hreflang="de" lang="de" rel="alternate">Deutsch</a>
|
192
|
+
<a href="index.el.html" title="grec" hreflang="el" lang="el" rel="alternate">Ελληνικά (Ellinika)</a>
|
193
|
+
<a href="index.en.html" title="anglais" hreflang="en" lang="en" rel="alternate">English</a>
|
194
|
+
<a href="index.es.html" title="espagnol" hreflang="es" lang="es" rel="alternate">español</a>
|
195
|
+
<a href="index.eo.html" title="espéranto" hreflang="eo" lang="eo" rel="alternate">Esperanto</a>
|
196
|
+
<a href="index.ko.html" title="coréen" hreflang="ko" lang="ko" rel="alternate">한국어 (Hangul)</a>
|
197
|
+
<a href="index.hy.html" title="arménien" hreflang="hy" lang="hy" rel="alternate">Հայերեն (hayeren)</a>
|
198
|
+
<a href="index.hr.html" title="croate" hreflang="hr" lang="hr" rel="alternate">hrvatski</a>
|
199
|
+
<a href="index.it.html" title="italien" hreflang="it" lang="it" rel="alternate">Italiano</a>
|
200
|
+
<a href="index.he.html" title="hébreu" hreflang="he" lang="he" rel="alternate">עברית (ivrit)</a>
|
201
|
+
<a href="index.lt.html" title="lituanien" hreflang="lt" lang="lt" rel="alternate">Lietuvių</a>
|
202
|
+
<a href="index.hu.html" title="hongrois" hreflang="hu" lang="hu" rel="alternate">magyar</a>
|
203
|
+
<a href="index.nl.html" title="néerlandais" hreflang="nl" lang="nl" rel="alternate">Nederlands</a>
|
204
|
+
<a href="index.ja.html" title="japonais" hreflang="ja" lang="ja" rel="alternate">日本語 (Nihongo)</a>
|
205
|
+
<a href="index.nb.html" title="norvégien" hreflang="nb" lang="nb" rel="alternate">norsk (bokmål)</a>
|
206
|
+
<a href="index.pl.html" title="polonais" hreflang="pl" lang="pl" rel="alternate">polski</a>
|
207
|
+
<a href="index.pt.html" title="portugais" hreflang="pt" lang="pt" rel="alternate">Português</a>
|
208
|
+
<a href="index.ro.html" title="roumain" hreflang="ro" lang="ro" rel="alternate">română</a>
|
209
|
+
<a href="index.ru.html" title="russe" hreflang="ru" lang="ru" rel="alternate">Русский (Russkij)</a>
|
210
|
+
<a href="index.sk.html" title="slovaque" hreflang="sk" lang="sk" rel="alternate">slovensky</a>
|
211
|
+
<a href="index.fi.html" title="finnois" hreflang="fi" lang="fi" rel="alternate">suomi</a>
|
212
|
+
<a href="index.sv.html" title="suédois" hreflang="sv" lang="sv" rel="alternate">svenska</a>
|
213
|
+
<a href="index.ta.html" title="tamoul" hreflang="ta" lang="ta" rel="alternate">தமிழ் (Tamil)</a>
|
214
|
+
<a href="index.tr.html" title="turc" hreflang="tr" lang="tr" rel="alternate">Türkçe</a>
|
215
|
+
<a href="index.uk.html" title="ukrainien" hreflang="uk" lang="uk" rel="alternate">українська (ukrajins'ka)</a>
|
216
|
+
<a href="index.zh-cn.html" title="chinois (Chine)" hreflang="zh-CN" lang="zh-CN" rel="alternate">中文(简)</a>
|
217
|
+
<a href="index.zh-hk.html" title="chinois (Hong Kong)" hreflang="zh-HK" lang="zh-HK" rel="alternate">中文(HK)</a>
|
218
|
+
<a href="index.zh-tw.html" title="chinois (Taïwan)" hreflang="zh-TW" lang="zh-TW" rel="alternate">中文(繁)</a>
|
219
|
+
</p><p>
|
220
|
+
Comment configurer la <a href="./intro/cn">langue par défaut du document</a>
|
221
|
+
</p>
|
222
|
+
<!--/UdmComment-->
|
223
|
+
<hr>
|
224
|
+
<!--UdmComment-->
|
225
|
+
<div id="fineprint">
|
226
|
+
<p>Pour signaler un problème sur le site web, envoyez un courriel en anglais à <a href="mailto:debian-www@lists.debian.org">debian-www@lists.debian.org</a> ou en français à <a href="mailto:debian-l10n-french@lists.debian.org">debian-l10n-french@lists.debian.org</a>. Pour obtenir d'autres informations, référez-vous à la <a href="./contact">page contact</a> de Debian.</p>
|
227
|
+
<p>
|
228
|
+
Dernière modification : vendredi 22 octobre 2010 23:28:09 UTC
|
229
|
+
<br>
|
230
|
+
Copyright © 1997-2010
|
231
|
+
<a href="http://www.spi-inc.org/">SPI</a>; voir <a href="./license" rel="copyright">les termes de la licence</a>.<br>
|
232
|
+
Debian est une <a href="./trademark">marque déposée</a> de Software in the Public Interest, Inc.
|
233
|
+
</p>
|
234
|
+
</div>
|
235
|
+
<!--/UdmComment-->
|
236
|
+
</div> <!-- end footer -->
|
237
|
+
</div> <!-- end outer -->
|
238
|
+
</body>
|
239
|
+
</html>
|
data/spec/data/html5.html
CHANGED
@@ -4,6 +4,7 @@ describe ValidateWebsite do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
FakeWeb.clean_registry
|
7
|
+
@validate_website = ValidateWebsite.new
|
7
8
|
end
|
8
9
|
|
9
10
|
context('html') do
|
@@ -13,9 +14,8 @@ describe ValidateWebsite do
|
|
13
14
|
page = FakePage.new(name,
|
14
15
|
:body => open(file).read,
|
15
16
|
:content_type => 'text/html')
|
16
|
-
validate_website
|
17
|
-
validate_website.
|
18
|
-
validate_website.anemone.should have(3).pages
|
17
|
+
@validate_website.crawl(page.url)
|
18
|
+
@validate_website.anemone.should have(3).pages
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -27,27 +27,24 @@ describe ValidateWebsite do
|
|
27
27
|
.tests {background-image: url(/image/pouet_42.png)}
|
28
28
|
.tests {background-image: url(/image/pouet)}",
|
29
29
|
:content_type => 'text/css')
|
30
|
-
validate_website
|
31
|
-
validate_website.
|
32
|
-
validate_website.anemone.should have(5).pages
|
30
|
+
@validate_website.crawl(page.url)
|
31
|
+
@validate_website.anemone.should have(5).pages
|
33
32
|
end
|
34
33
|
|
35
34
|
it "should extract url with single quote" do
|
36
35
|
page = FakePage.new('test.css',
|
37
36
|
:body => ".test {background-image: url('pouet');}",
|
38
37
|
:content_type => 'text/css')
|
39
|
-
validate_website
|
40
|
-
validate_website.
|
41
|
-
validate_website.anemone.should have(2).pages
|
38
|
+
@validate_website.crawl(page.url)
|
39
|
+
@validate_website.anemone.should have(2).pages
|
42
40
|
end
|
43
41
|
|
44
42
|
it "should extract url with double quote" do
|
45
43
|
page = FakePage.new('test.css',
|
46
44
|
:body => ".test {background-image: url(\"pouet\");}",
|
47
45
|
:content_type => 'text/css')
|
48
|
-
validate_website
|
49
|
-
validate_website.
|
50
|
-
validate_website.anemone.should have(2).pages
|
46
|
+
@validate_website.crawl(page.url)
|
47
|
+
@validate_website.anemone.should have(2).pages
|
51
48
|
end
|
52
49
|
end
|
53
50
|
end
|
data/spec/validator_spec.rb
CHANGED
@@ -21,7 +21,6 @@ describe Validator do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "html5 should be valid" do
|
24
|
-
pending("need to work on html5")
|
25
24
|
name = 'html5'
|
26
25
|
file = File.join('spec', 'data', "#{name}.html")
|
27
26
|
page = FakePage.new(name,
|
@@ -31,4 +30,15 @@ describe Validator do
|
|
31
30
|
validator = Validator.new(@html5_page)
|
32
31
|
validator.should be_valid
|
33
32
|
end
|
33
|
+
|
34
|
+
it 'should validate html4' do
|
35
|
+
name = 'html4-strict'
|
36
|
+
file = File.join('spec', 'data', "#{name}.html")
|
37
|
+
page = FakePage.new(name,
|
38
|
+
:body => open(file).read,
|
39
|
+
:content_type => 'text/html')
|
40
|
+
@html4_strict_page = @http.fetch_page(page.url)
|
41
|
+
validator = Validator.new(@html4_strict_page)
|
42
|
+
validator.should be_valid
|
43
|
+
end
|
34
44
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validate-website
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Laurent Arnoud
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-01 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -50,25 +50,41 @@ dependencies:
|
|
50
50
|
type: :runtime
|
51
51
|
version_requirements: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
|
-
name:
|
53
|
+
name: html5
|
54
54
|
prerelease: false
|
55
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - "="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 55
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
- 10
|
64
|
+
- 0
|
65
|
+
version: 0.10.0
|
66
|
+
type: :runtime
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: rspec
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
56
72
|
none: false
|
57
73
|
requirements:
|
58
74
|
- - ">="
|
59
75
|
- !ruby/object:Gem::Version
|
60
|
-
hash:
|
76
|
+
hash: 15
|
61
77
|
segments:
|
62
|
-
-
|
63
|
-
- 3
|
78
|
+
- 2
|
64
79
|
- 0
|
65
|
-
|
80
|
+
- 0
|
81
|
+
version: 2.0.0
|
66
82
|
type: :development
|
67
|
-
version_requirements: *
|
83
|
+
version_requirements: *id004
|
68
84
|
- !ruby/object:Gem::Dependency
|
69
85
|
name: fakeweb
|
70
86
|
prerelease: false
|
71
|
-
requirement: &
|
87
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
72
88
|
none: false
|
73
89
|
requirements:
|
74
90
|
- - ">="
|
@@ -80,8 +96,8 @@ dependencies:
|
|
80
96
|
- 0
|
81
97
|
version: 1.3.0
|
82
98
|
type: :development
|
83
|
-
version_requirements: *
|
84
|
-
description:
|
99
|
+
version_requirements: *id005
|
100
|
+
description: validate-website is a web crawler for checking the markupvalidity and not found urls.
|
85
101
|
email: laurent@spkdev.net
|
86
102
|
executables:
|
87
103
|
- validate-website
|
@@ -92,6 +108,8 @@ extra_rdoc_files: []
|
|
92
108
|
files:
|
93
109
|
- README.rdoc
|
94
110
|
- Rakefile
|
111
|
+
- LICENSE
|
112
|
+
- bin/validate-website
|
95
113
|
- lib/validator.rb
|
96
114
|
- lib/colorful_messages.rb
|
97
115
|
- lib/xhtml/xhtml-blkphras-1.xsd
|
@@ -185,9 +203,10 @@ files:
|
|
185
203
|
- lib/xhtml/xhtml-attribs-1.xsd
|
186
204
|
- lib/xhtml/xhtml-ruby-1.xsd
|
187
205
|
- lib/validate_website.rb
|
188
|
-
-
|
206
|
+
- man/man1/validate-website.1
|
189
207
|
- spec/validator_spec.rb
|
190
208
|
- spec/spec_helper.rb
|
209
|
+
- spec/data/html4-strict.html
|
191
210
|
- spec/data/html5.html
|
192
211
|
- spec/data/xhtml1-strict.html
|
193
212
|
- spec/fakeweb_helper.rb
|
@@ -222,6 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
241
|
requirements:
|
223
242
|
- spk-anemone
|
224
243
|
- rainbow
|
244
|
+
- html5
|
225
245
|
rubyforge_project:
|
226
246
|
rubygems_version: 1.3.7
|
227
247
|
signing_key:
|