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 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: