validate-website 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'find'
6
6
  # Globals
7
7
 
8
8
  PKG_NAME = 'validate-website'
9
- PKG_VERSION = '0.4.0'
9
+ PKG_VERSION = '0.4.1'
10
10
 
11
11
  PKG_FILES = ['README.rdoc', 'Rakefile']
12
12
  Find.find('lib/', 'bin/', 'spec/') do |f|
data/bin/validate-website CHANGED
@@ -13,7 +13,10 @@ options = validate_website.options
13
13
  exit_code = validate_website.crawl options[:site],
14
14
  :markup_validation => options[:markup_validation],
15
15
  :user_agent => options[:useragent],
16
+ :exclude => options[:exclude],
17
+ :file => options[:file],
16
18
  :authorization => options[:auth],
19
+ :not_found => options[:not_found],
17
20
  :cookies => options[:cookies],
18
21
  :accept_cookies => options[:accept_cookies],
19
22
  :verbose => options[:debug],
@@ -12,8 +12,8 @@ class ValidateWebsite
12
12
 
13
13
  def initialize(args=[])
14
14
  @options = {
15
- :markup_validation => true,
16
15
  :site => 'http://localhost:3000/',
16
+ :markup_validation => true,
17
17
  :useragent => Anemone::Core::DEFAULT_OPTS[:user_agent],
18
18
  :exclude => nil,
19
19
  :file => nil,
@@ -78,10 +78,6 @@ class ValidateWebsite
78
78
  return abs if abs && page.in_domain?(abs)
79
79
  end
80
80
 
81
- def to_file(msg)
82
- open(options[:file], 'a').write("#{msg}\n") if options[:file]
83
- end
84
-
85
81
  def crawl(site, opts={})
86
82
  exit_code = 0
87
83
 
@@ -140,4 +136,9 @@ class ValidateWebsite
140
136
  end
141
137
  exit_code
142
138
  end
139
+
140
+ private
141
+ def to_file(msg)
142
+ open(options[:file], 'a').write("#{msg}\n") if options[:file]
143
+ end
143
144
  end
@@ -0,0 +1,46 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>title</title>
6
+ <!-- meta -->
7
+ <meta name="description" content="" />
8
+ <meta name="keywords" content="" />
9
+ <meta name="author" content="" />
10
+ </head>
11
+ <body>
12
+ <header>
13
+ <nav>
14
+ <ul>
15
+ <li><a href="/my-url1" title="title">my url</a></li>
16
+ <li><a href="/my-url2" title="title">my url</a></li>
17
+ <li><a href="/my-url3" title="title">my url</a></li>
18
+ </ul>
19
+ </nav>
20
+ </header>
21
+
22
+ <div>
23
+ <article>
24
+ <h1>article title</h1>
25
+ <p>texte de my article</p>
26
+ <section>
27
+ <h2>article subtitle</h2>
28
+ <p>text</p>
29
+ <figure>
30
+ <a href="/my-url4"><img src="image.png" alt="my image"></a>
31
+ </figure>
32
+ </section>
33
+ </article>
34
+ </div>
35
+
36
+ <footer>
37
+ <nav>
38
+ <ul>
39
+ <li><a href="/my-url5" title="title">my url</a></li>
40
+ <li><a href="/my-url6" title="title">my url</a></li>
41
+ <li><a href="/my-url7" title="title">my url</a></li>
42
+ </ul>
43
+ </nav>
44
+ </footer>
45
+ </body>
46
+ </html>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml">
5
+ <head>
6
+ <title>title</title>
7
+ </head>
8
+ <body>
9
+ <h1>Title 1</h1>
10
+ <p>Paragraphe.</p>
11
+
12
+ <h2>Title 2</h2>
13
+ <ul>
14
+ <li><a href="/my-url1" title="title">my url</a></li>
15
+ <li><a href="/my-url2" title="title">my url</a></li>
16
+ <li><a href="/my-url1" title="title">my url</a></li>
17
+ </ul>
18
+ </body>
19
+ </html>
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe ValidateWebsite do
4
+
5
+ before(:each) do
6
+ FakeWeb.clean_registry
7
+ end
8
+
9
+ context('html') do
10
+ it "should extract url" do
11
+ name = 'xhtml1-strict'
12
+ file = File.join('spec', 'data', "#{name}.html")
13
+ page = FakePage.new(name,
14
+ :body => open(file).read,
15
+ :content_type => 'text/html')
16
+ validate_website = ValidateWebsite.new
17
+ validate_website.crawl(page.url)
18
+ validate_website.anemone.should have(3).pages
19
+ end
20
+ end
21
+
22
+ context('css') do
23
+ it "should crawl css and extract url" do
24
+ page = FakePage.new('test.css',
25
+ :body => ".test {background-image: url(pouet);}
26
+ .tests {background-image: url(/image/pouet.png)}
27
+ .tests {background-image: url(/image/pouet_42.png)}
28
+ .tests {background-image: url(/image/pouet)}",
29
+ :content_type => 'text/css')
30
+ validate_website = ValidateWebsite.new
31
+ validate_website.crawl(page.url)
32
+ validate_website.anemone.should have(5).pages
33
+ end
34
+
35
+ it "should extract url with single quote" do
36
+ page = FakePage.new('test.css',
37
+ :body => ".test {background-image: url('pouet');}",
38
+ :content_type => 'text/css')
39
+ validate_website = ValidateWebsite.new
40
+ validate_website.crawl(page.url)
41
+ validate_website.anemone.should have(2).pages
42
+ end
43
+
44
+ it "should extract url with double quote" do
45
+ page = FakePage.new('test.css',
46
+ :body => ".test {background-image: url(\"pouet\");}",
47
+ :content_type => 'text/css')
48
+ validate_website = ValidateWebsite.new
49
+ validate_website.crawl(page.url)
50
+ validate_website.anemone.should have(2).pages
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Validator do
4
+ before(:each) do
5
+ FakeWeb.clean_registry
6
+ @http = Anemone::HTTP.new
7
+ end
8
+
9
+ it "xhtml1-strict should be valid" do
10
+ name = 'xhtml1-strict'
11
+ dtd_uri = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
12
+ file = File.join('spec', 'data', "#{name}.html")
13
+ page = FakePage.new(name,
14
+ :body => open(file).read,
15
+ :content_type => 'text/html')
16
+ @xhtml1_page = @http.fetch_page(page.url)
17
+ validator = Validator.new(@xhtml1_page)
18
+ validator.dtd.system_id.should == dtd_uri
19
+ validator.namespace.should == name
20
+ validator.should be_valid
21
+ end
22
+
23
+ it "html5 should be valid" do
24
+ pending("need to work on html5")
25
+ name = 'html5'
26
+ file = File.join('spec', 'data', "#{name}.html")
27
+ page = FakePage.new(name,
28
+ :body => open(file).read,
29
+ :content_type => 'text/html')
30
+ @html5_page = @http.fetch_page(page.url)
31
+ validator = Validator.new(@html5_page)
32
+ validator.should be_valid
33
+ end
34
+ 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: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ version: 0.4.1
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-09-14 00:00:00 +02:00
18
+ date: 2010-10-24 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -186,9 +186,12 @@ files:
186
186
  - lib/xhtml/xhtml-ruby-1.xsd
187
187
  - lib/validate_website.rb
188
188
  - bin/validate-website
189
+ - spec/validator_spec.rb
189
190
  - spec/spec_helper.rb
190
- - spec/css_spec.rb
191
+ - spec/data/html5.html
192
+ - spec/data/xhtml1-strict.html
191
193
  - spec/fakeweb_helper.rb
194
+ - spec/validate_website_spec.rb
192
195
  has_rdoc: true
193
196
  homepage: http://github.com/spk/validate-website
194
197
  licenses: []
data/spec/css_spec.rb DELETED
@@ -1,53 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe ValidateWebsite do
4
-
5
- before(:each) do
6
- FakeWeb.clean_registry
7
- end
8
-
9
- it "should crawl css and extract url" do
10
- pages = []
11
- pages << FakePage.new('test.css',
12
- :body => ".test {background-image: url(pouet);}
13
- .tests {background-image: url(/image/pouet.png)}
14
- .tests {background-image: url(/image/pouet_42.png)}
15
- .tests {background-image: url(/image/pouet)}",
16
- :content_type => 'text/css')
17
- pages << FakePage.new('pouet',
18
- :content_type => 'image/png')
19
- pages << FakePage.new('image/pouet',
20
- :content_type => 'image/png')
21
- pages << FakePage.new('image/pouet.png',
22
- :content_type => 'image/png')
23
- pages << FakePage.new('image/pouet_42.png',
24
- :content_type => 'image/png')
25
- validate_website = ValidateWebsite.new
26
- validate_website.crawl(pages[0].url)
27
- validate_website.anemone.should have(5).pages
28
- end
29
-
30
- it "should extract url with single quote" do
31
- pages = []
32
- pages << FakePage.new('test.css',
33
- :body => ".test {background-image: url('pouet');}",
34
- :content_type => 'text/css')
35
- pages << FakePage.new('pouet',
36
- :content_type => 'image/png')
37
- validate_website = ValidateWebsite.new
38
- validate_website.crawl(pages[0].url)
39
- validate_website.anemone.should have(2).pages
40
- end
41
-
42
- it "should extract url with double quote" do
43
- pages = []
44
- pages << FakePage.new('test.css',
45
- :body => ".test {background-image: url(\"pouet\");}",
46
- :content_type => 'text/css')
47
- pages << FakePage.new('pouet',
48
- :content_type => 'image/png')
49
- validate_website = ValidateWebsite.new
50
- validate_website.crawl(pages[0].url)
51
- validate_website.anemone.should have(2).pages
52
- end
53
- end