validate-website 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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
- == validate-website
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
- validate-website --help
14
- validate-website -s "http://localhost:4567/"
15
- -u "Mozilla 5.0" \ # user agent
16
- -f not-well-formed.txt \ # log file
17
- --auth=user,pass \ # http auth
18
- -e 'redirect|news' \ # exclude regex
19
- -n # log not found (404)
20
- -c "name=val;name2=val2"
21
- -v # verbose: show detail of validator errors
22
- -d # debug: show anemone log
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
- == REQUIREMENTS:
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
- spk-anemone >= 0.2.4 (forked from chriskite/anemone,
27
- add auth support and html body)
28
- rainbow >= 1.0.4 (for console color)
51
+ == REQUIREMENTS
29
52
 
30
- == CREDITS:
53
+ * spk-anemone, '>= 0.4.0'
54
+ * rainbow, '>= 1.1'
55
+ * html5, '= 0.10.0'
31
56
 
32
- Thanks tenderlove for Nokogiri,
33
- this library is inspired from markup_validity
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
- (The MIT License)
37
-
38
- Copyright (c) 2009 Laurent Arnoud (spk)
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.4.1'
10
+ PKG_VERSION = '0.5.0'
10
11
 
11
- PKG_FILES = ['README.rdoc', 'Rakefile']
12
- Find.find('lib/', 'bin/', 'spec/') do |f|
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.add_development_dependency('rspec', '>= 1.3.0')
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 = 'Web crawler for checking the validity of your documents'
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
- exit_code = validate_website.crawl options[:site],
14
- :markup_validation => options[:markup_validation],
15
- :user_agent => options[:useragent],
16
- :exclude => options[:exclude],
17
- :file => options[:file],
18
- :authorization => options[:auth],
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]
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(exit_code)
25
+ exit(validate_website.exit_status)
@@ -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
- :useragent => Anemone::Core::DEFAULT_OPTS[:user_agent],
25
+ :user_agent => Anemone::Core::DEFAULT_OPTS[:user_agent],
18
26
  :exclude => nil,
19
27
  :file => nil,
20
- :auth => nil,
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 = "Usage: validate-website [OPTIONS]"
40
- o.define_head "validate-website - Web crawler for checking the validity of your documents"
41
- o.separator ""
42
-
43
- o.on("-s", "--site=val", String,
44
- "Default: #{@options[:site]}") { |v| @options[:site] = v }
45
- o.on("-u", "--useragent=val", String,
46
- "Default: #{@options[:useragent]}") { |v| @options[:useragent] = v }
47
- o.on("-e", "--exclude=val", String,
48
- "Url to exclude") { |v| @options[:exclude] = v }
49
- o.on("-f", "--file=val", String,
50
- "Save not well formed urls") { |v| @options[:file] = v }
51
- o.on("--auth=[user,pass]", Array,
52
- "Basic http authentification") { |v| @options[:auth] = v }
53
- o.on("-c", "--cookies=val", "Set defaults cookies") { |v| @options[:cookies] = v }
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| @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| @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 detail of validator errors (Default: #{@options[:verbose]})") { |v| @options[:verbose] = v }
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| @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
- exit_code = 1
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
- exit_code = 1
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
- exit_code
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 @dtd.system_id
11
- @dtd_uri = URI.parse(@dtd.system_id)
12
- # http://www.w3.org/TR/xhtml1/#dtds
13
- @namespace = File.basename(@dtd_uri.path, '.dtd')
14
- fixed_dtd = @page.body.sub(@dtd_uri.to_s, @namespace + '.dtd')
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(fixed_dtd) { |cfg|
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
- @errors = @xsd ? @xsd.validate(@doc) : ["Don't have this xsd"]
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 = ['DTD unknown']
50
+ @errors << 'Unknown Document'
30
51
  end
31
52
  rescue Nokogiri::XML::SyntaxError => e
32
- @errors = [e]
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&nbsp;coin&nbsp;du&nbsp;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">À&nbsp;propos&nbsp;de&nbsp;Debian</a>
48
+ <ul>
49
+ <li><a href="./social_contract">Notre&nbsp;contrat&nbsp;social</a></li>
50
+ <li><a href="./intro/free">Logiciel&nbsp;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&nbsp;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&nbsp;Debian</a></li>
71
+ <li><a href="doc/">Documentation</a>
72
+ <ul>
73
+ <li><a href="./releases/">Dernière&nbsp;version</a></li>
74
+ <li><a href="./releases/stable/installmanual">Manuel&nbsp;d'installation</a></li>
75
+ <li><a href="doc/books">Livres&nbsp;Debian</a></li>
76
+ </ul>
77
+ </li>
78
+ <li><a href="./support">Assistance</a>
79
+ <ul>
80
+ <li><a href="./international/">Debian&nbsp;et&nbsp;l'international</a></li>
81
+ <li><a href="./security/">Informations&nbsp;sur&nbsp;la&nbsp;sécurité</a></li>
82
+ <li><a href="Bugs/">Rapports de bogues</a></li>
83
+ <li><a href="MailingLists/">Listes&nbsp;de&nbsp;diffusion</a></li>
84
+ <li><a href="http://lists.debian.org/">Archives&nbsp;des&nbsp;listes&nbsp;de&nbsp;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&nbsp;coin&nbsp;du&nbsp;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&nbsp;?</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&oelig;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>&nbsp;; d'où le nom GNU/Linux.</p>
121
+ <p>Debian GNU/Linux est bien plus qu'un simple système d'exploitation&nbsp;:
122
+ il contient plus de 25000
123
+ <a href="distrib/packages">paquets</a>&nbsp;; 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&nbsp;:
185
+ </p><p class="navpara">
186
+ <a href="index.ar.html" title="arabe" hreflang="ar" lang="ar" rel="alternate">&#1593;&#1585;&#1576;&#1610;&#1577;&nbsp;(Arabiya)</a>
187
+ <a href="index.bg.html" title="bulgare" hreflang="bg" lang="bg" rel="alternate">&#1041;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;&nbsp;(B&#601;lgarski)</a>
188
+ <a href="index.ca.html" title="catalan" hreflang="ca" lang="ca" rel="alternate">catal&agrave;</a>
189
+ <a href="index.cs.html" title="tchèque" hreflang="cs" lang="cs" rel="alternate">&#269;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">&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;&nbsp;(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&ntilde;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">&#54620;&#44397;&#50612;&nbsp;(Hangul)</a>
197
+ <a href="index.hy.html" title="arménien" hreflang="hy" lang="hy" rel="alternate">&#1344;&#1377;&#1397;&#1381;&#1408;&#1381;&#1398;&nbsp;(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">&#1506;&#1489;&#1512;&#1497;&#1514;&nbsp;(ivrit)</a>
201
+ <a href="index.lt.html" title="lituanien" hreflang="lt" lang="lt" rel="alternate">Lietuvi&#371;</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">&#26085;&#26412;&#35486;&nbsp;(Nihongo)</a>
205
+ <a href="index.nb.html" title="norvégien" hreflang="nb" lang="nb" rel="alternate">norsk&nbsp;(bokm&aring;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&ecirc;s</a>
208
+ <a href="index.ro.html" title="roumain" hreflang="ro" lang="ro" rel="alternate">rom&acirc;n&#259;</a>
209
+ <a href="index.ru.html" title="russe" hreflang="ru" lang="ru" rel="alternate">&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;&nbsp;(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">&#2980;&#2990;&#3007;&#2996;&#3021;&nbsp;(Tamil)</a>
214
+ <a href="index.tr.html" title="turc" hreflang="tr" lang="tr" rel="alternate">T&uuml;rk&ccedil;e</a>
215
+ <a href="index.uk.html" title="ukrainien" hreflang="uk" lang="uk" rel="alternate">&#1091;&#1082;&#1088;&#1072;&#1111;&#1085;&#1089;&#1100;&#1082;&#1072;&nbsp;(ukrajins'ka)</a>
216
+ <a href="index.zh-cn.html" title="chinois (Chine)" hreflang="zh-CN" lang="zh-CN" rel="alternate">&#20013;&#25991;(&#31616;)</a>
217
+ <a href="index.zh-hk.html" title="chinois (Hong Kong)" hreflang="zh-HK" lang="zh-HK" rel="alternate">&#20013;&#25991;(HK)</a>
218
+ <a href="index.zh-tw.html" title="chinois (Taïwan)" hreflang="zh-TW" lang="zh-TW" rel="alternate">&#20013;&#25991;(&#32321;)</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&nbsp;: vendredi 22 octobre 2010 23:28:09 UTC
229
+ <br>
230
+ Copyright &copy; 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
@@ -1,9 +1,8 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
2
+ <html>
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <title>title</title>
6
- <!-- meta -->
7
6
  <meta name="description" content="" />
8
7
  <meta name="keywords" content="" />
9
8
  <meta name="author" content="" />
@@ -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 = ValidateWebsite.new
17
- validate_website.crawl(page.url)
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 = ValidateWebsite.new
31
- validate_website.crawl(page.url)
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 = ValidateWebsite.new
40
- validate_website.crawl(page.url)
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 = ValidateWebsite.new
49
- validate_website.crawl(page.url)
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
@@ -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: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
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-10-24 00:00:00 +02:00
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: rspec
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: 27
76
+ hash: 15
61
77
  segments:
62
- - 1
63
- - 3
78
+ - 2
64
79
  - 0
65
- version: 1.3.0
80
+ - 0
81
+ version: 2.0.0
66
82
  type: :development
67
- version_requirements: *id003
83
+ version_requirements: *id004
68
84
  - !ruby/object:Gem::Dependency
69
85
  name: fakeweb
70
86
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::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: *id004
84
- description: Web crawler for checking the validity of your documents
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
- - bin/validate-website
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: