validate-website 1.8.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b148e551f237891330dc1ebbbdb8b2c1d60217d41aac7d682293f9b85f7e3d45
4
- data.tar.gz: '068a9f8dde45e751498d69a903d9e23b8f38a68748ef7416863b8a1c73feacec'
3
+ metadata.gz: 5cd3346ce5ce02dd898df5bb28912dcf4c0d682278bdc4e6e2e7b05b4bdf8ef8
4
+ data.tar.gz: 7e10dd580a2da57dec3f648a57cd633fbbd6251493a064a2b4077b7fd910a9dc
5
5
  SHA512:
6
- metadata.gz: 8cba9a25bc027cf5d9a309e6077b3228b8668a8f473b89113d518ddcccca7e86a486a3059d3b74401bd5e7130a28213a4bfa02117de24918d396838d51418672
7
- data.tar.gz: 9d99666a222c2c2dd1de6aa551c9d572d8ef68f30e13bb809924a14502032bd0698ba10ef128acb48a11571bcad8ec41234dac7eb06968e0f8c091bca97643ce
6
+ metadata.gz: fa59986d8a2e40840807c6e43c58cc89fdb359e81cef7c3eb8b307bd08aa4b51c8168f26ea72de9783d1963cb0861e910780eb7e7d138f3f409d2505ee29d010
7
+ data.tar.gz: 0f73aae18879b13d7bbadc24a97cca5ca7178498eb060930b81c0059605c129cb25b27c6277b1724f7f364a125cccb8fdcc4ef03a69ee86fa588fd1bdf6d6edb
data/History.md CHANGED
@@ -1,4 +1,12 @@
1
1
 
2
+ 1.9.0 / 2018-12-25
3
+ ==================
4
+
5
+ * Update deps paint; slop; webmock
6
+ * Remove Ruby 2.1 support
7
+ * Force nonet and disable substitute entities on xhtml parse
8
+ * Use coveralls for code coverage
9
+
2
10
  v1.8.1 / 2018-03-25
3
11
  ===================
4
12
 
data/README.md CHANGED
@@ -11,9 +11,12 @@ Web crawler for checking the validity of your documents
11
11
  ### Debian
12
12
 
13
13
  ~~~ console
14
- apt install ruby-dev libxslt-dev libxml2-dev libtidy5
14
+ apt install ruby-dev libxslt1-dev libxml2-dev
15
15
  ~~~
16
16
 
17
+ If you want complete local validation look [tidy
18
+ packages](https://binaries.html-tidy.org/)
19
+
17
20
  ### RubyGems
18
21
 
19
22
  ~~~ console
@@ -27,6 +30,15 @@ validate-website [OPTIONS]
27
30
  validate-website-static [OPTIONS]
28
31
  ~~~
29
32
 
33
+ ## Examples
34
+
35
+ ~~~ console
36
+ validate-website -v -s https://www.ruby-lang.org/
37
+ validate-website -v -x tidy -s https://www.ruby-lang.org/
38
+ validate-website -v -x nu -s https://www.ruby-lang.org/
39
+ validate-website -h
40
+ ~~~
41
+
30
42
  ## Description
31
43
 
32
44
  validate-website is a web crawler for checking the markup validity with XML
@@ -139,5 +151,5 @@ Copyright (c) 2009-2018 Laurent Arnoud <laurent@spkdev.net>
139
151
  [![Version](https://img.shields.io/gem/v/validate-website.svg)](https://rubygems.org/gems/validate-website)
140
152
  [![Documentation](https://img.shields.io/badge/doc-rubydoc-blue.svg)](http://www.rubydoc.info/gems/validate-website)
141
153
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](http://opensource.org/licenses/MIT "MIT")
142
- [![Code Climate](https://img.shields.io/codeclimate/github/spk/validate-website.svg)](https://codeclimate.com/github/spk/validate-website)
154
+ [![Coverage Status](https://img.shields.io/coveralls/github/spk/validate-website.svg)](https://coveralls.io/github/spk/validate-website?branch=master)
143
155
  [![Inline docs](https://inch-ci.org/github/spk/validate-website.svg?branch=master)](http://inch-ci.org/github/spk/validate-website)
data/Rakefile CHANGED
@@ -2,7 +2,9 @@ require 'rake/testtask'
2
2
  require 'rubocop/rake_task'
3
3
  require 'asciidoctor'
4
4
 
5
- task default: %i[test rubocop]
5
+ default = %i[test]
6
+ default << :rubocop unless RUBY_ENGINE == 'rbx'
7
+ task default: default
6
8
 
7
9
  desc 'Update manpage from asciidoc file'
8
10
  task :manpage do
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: utf-8
3
2
 
4
3
  require 'validate_website/runner'
5
4
  exit_status = ValidateWebsite::Runner.run_crawl(ARGV)
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: utf-8
3
2
 
4
3
  require 'validate_website/runner'
5
4
  exit_status = ValidateWebsite::Runner.run_static(ARGV)
@@ -38,57 +38,57 @@ module ValidateWebsite
38
38
  end
39
39
 
40
40
  def self.default_args
41
- Slop.parse do |o|
42
- yield o if block_given?
43
- markup_syntax(o)
44
- boolean_options(o)
45
- ignore_html5_options(o)
46
- verbose_option(o)
47
- version_help(o)
41
+ Slop.parse do |opt|
42
+ yield opt if block_given?
43
+ markup_syntax(opt)
44
+ boolean_options(opt)
45
+ ignore_html5_options(opt)
46
+ verbose_option(opt)
47
+ version_help(opt)
48
48
  end
49
49
  end
50
50
 
51
- def self.ignore_html5_options(o)
52
- o.regexp('-i', '--ignore',
53
- 'Validation errors to ignore (ex: "valign|autocorrect")')
54
- o.string('-x', '--html5-validator',
55
- 'Change default html5 validator engine (ex: tidy or nu)',
56
- default: DEFAULT_OPTIONS[:html5_validator])
57
- o.string('-5', '--html5-validator-service-url',
58
- 'Change default html5 validator service URL for "nu" engine')
51
+ def self.ignore_html5_options(opt)
52
+ opt.regexp('-i', '--ignore',
53
+ 'Validation errors to ignore (ex: "valign|autocorrect")')
54
+ opt.string('-x', '--html5-validator',
55
+ 'Change default html5 validator engine (ex: tidy or nu)',
56
+ default: DEFAULT_OPTIONS[:html5_validator])
57
+ opt.string('-5', '--html5-validator-service-url',
58
+ 'Change default html5 validator service URL for "nu" engine')
59
59
  end
60
60
 
61
- def self.markup_syntax(o)
62
- o.bool('-m', '--markup',
63
- "Markup validation (default: #{DEFAULT_OPTIONS[:markup]})",
64
- default: DEFAULT_OPTIONS[:markup])
65
- o.bool('--css-syntax',
66
- "Css validation (default: #{DEFAULT_OPTIONS[:css_syntax]})",
67
- default: DEFAULT_OPTIONS[:css_syntax])
61
+ def self.markup_syntax(opt)
62
+ opt.bool('-m', '--markup',
63
+ "Markup validation (default: #{DEFAULT_OPTIONS[:markup]})",
64
+ default: DEFAULT_OPTIONS[:markup])
65
+ opt.bool('--css-syntax',
66
+ "Css validation (default: #{DEFAULT_OPTIONS[:css_syntax]})",
67
+ default: DEFAULT_OPTIONS[:css_syntax])
68
68
  end
69
69
 
70
- def self.boolean_options(o)
71
- o.bool('-n', '--not-found',
72
- "Log not found url (default: #{DEFAULT_OPTIONS[:not_found]})",
73
- default: DEFAULT_OPTIONS[:not_found])
74
- o.bool('--color',
75
- "Show colored output (default: #{DEFAULT_OPTIONS[:color]})",
76
- default: DEFAULT_OPTIONS[:color])
70
+ def self.boolean_options(opt)
71
+ opt.bool('-n', '--not-found',
72
+ "Log not found url (default: #{DEFAULT_OPTIONS[:not_found]})",
73
+ default: DEFAULT_OPTIONS[:not_found])
74
+ opt.bool('--color',
75
+ "Show colored output (default: #{DEFAULT_OPTIONS[:color]})",
76
+ default: DEFAULT_OPTIONS[:color])
77
77
  end
78
78
 
79
- def self.verbose_option(o)
80
- o.bool('-v', '--verbose',
81
- "Show validator errors (default: #{DEFAULT_OPTIONS[:verbose]})",
82
- default: DEFAULT_OPTIONS[:verbose])
79
+ def self.verbose_option(opt)
80
+ opt.bool('-v', '--verbose',
81
+ "Show validator errors (default: #{DEFAULT_OPTIONS[:verbose]})",
82
+ default: DEFAULT_OPTIONS[:verbose])
83
83
  end
84
84
 
85
- def self.version_help(o)
86
- o.on('--version', 'Display version.') do
85
+ def self.version_help(opt)
86
+ opt.on('--version', 'Display version.') do
87
87
  puts ValidateWebsite::VERSION
88
88
  exit
89
89
  end
90
- o.on('-h', '--help', 'Display this help message.') do
91
- puts o
90
+ opt.on('-h', '--help', 'Display this help message.') do
91
+ puts opt
92
92
  exit
93
93
  end
94
94
  end
@@ -97,15 +97,15 @@ module ValidateWebsite
97
97
  # @params [ARGV]
98
98
  # @return [Hash]
99
99
  def self.command_line_parse_crawl(_args)
100
- default_args do |o|
101
- o.string('-s', '--site',
102
- "Website to crawl (default: #{DEFAULT_OPTIONS[:site]})",
103
- default: DEFAULT_OPTIONS[:site])
104
- o.string('-u', '--user-agent',
105
- 'Change user agent',
106
- default: DEFAULT_OPTIONS[:user_agent])
107
- o.regexp('-e', '--exclude', 'Url to exclude (ex: "redirect|news")')
108
- o.string('-c', '--cookies', 'Set defaults cookies')
100
+ default_args do |opt|
101
+ opt.string('-s', '--site',
102
+ "Website to crawl (default: #{DEFAULT_OPTIONS[:site]})",
103
+ default: DEFAULT_OPTIONS[:site])
104
+ opt.string('-u', '--user-agent',
105
+ 'Change user agent',
106
+ default: DEFAULT_OPTIONS[:user_agent])
107
+ opt.regexp('-e', '--exclude', 'Url to exclude (ex: "redirect|news")')
108
+ opt.string('-c', '--cookies', 'Set defaults cookies')
109
109
  end
110
110
  end
111
111
 
@@ -113,14 +113,14 @@ module ValidateWebsite
113
113
  # @params [ARGV]
114
114
  # @return [Hash]
115
115
  def self.command_line_parse_static(_args)
116
- default_args do |o|
117
- o.string('-s', '--site',
118
- "Website to crawl (default: #{DEFAULT_OPTIONS[:site]})",
119
- default: DEFAULT_OPTIONS[:site])
120
- o.string('-p', '--pattern',
121
- "Filename pattern (default: #{DEFAULT_OPTIONS[:pattern]})",
122
- default: DEFAULT_OPTIONS[:pattern])
123
- o.regexp('-e', '--exclude', 'Url to exclude (ex: "redirect|news")')
116
+ default_args do |opt|
117
+ opt.string('-s', '--site',
118
+ "Website to crawl (default: #{DEFAULT_OPTIONS[:site]})",
119
+ default: DEFAULT_OPTIONS[:site])
120
+ opt.string('-p', '--pattern',
121
+ "Filename pattern (default: #{DEFAULT_OPTIONS[:pattern]})",
122
+ default: DEFAULT_OPTIONS[:pattern])
123
+ opt.regexp('-e', '--exclude', 'Url to exclude (ex: "redirect|news")')
124
124
  end
125
125
  end
126
126
  end
@@ -20,11 +20,11 @@ module ValidateWebsite
20
20
  @site = @options[:site]
21
21
 
22
22
  files = Dir.glob(@options[:pattern])
23
- files.each do |f|
24
- next unless File.file?(f)
25
- next if @options[:exclude].is_a?(Regexp) && @options[:exclude].match(f)
23
+ files.each do |file|
24
+ next unless File.file?(file)
25
+ next if @options[:exclude] && @options[:exclude].match(file)
26
26
  @history_count += 1
27
- check_static_file(f)
27
+ check_static_file(file)
28
28
  end
29
29
  print_status_line(files.size, 0, @not_founds_count, @errors_count)
30
30
  end
@@ -47,15 +47,15 @@ module ValidateWebsite
47
47
 
48
48
  private
49
49
 
50
- def check_static_file(f)
51
- page = StaticLink.new(f, @site).page
52
- check_page(f, page)
50
+ def check_static_file(file)
51
+ page = StaticLink.new(file, @site).page
52
+ check_page(file, page)
53
53
  check_css_syntax(page) if page.css? && options[:css_syntax]
54
54
  end
55
55
 
56
- def check_page(f, page)
56
+ def check_page(file, page)
57
57
  if page.html? && options[:markup]
58
- validate(page.doc, page.body, f, options[:ignore])
58
+ validate(page.doc, page.body, file, options[:ignore])
59
59
  end
60
60
  check_static_not_found(page.links) if options[:not_found]
61
61
  end
@@ -15,7 +15,7 @@ module ValidateWebsite
15
15
  attr_accessor :html5_validator_service_url
16
16
  end
17
17
 
18
- XHTML_PATH = File.expand_path('../../../data/schemas', __FILE__)
18
+ XHTML_PATH = File.expand_path('../../data/schemas', __dir__)
19
19
 
20
20
  @xsd_schemas ||= {}
21
21
 
@@ -139,7 +139,7 @@ module ValidateWebsite
139
139
 
140
140
  def xhtml_doc
141
141
  Dir.chdir(XHTML_PATH) do
142
- Nokogiri::XML(document) { |cfg| cfg.noent.dtdload.dtdvalid }
142
+ Nokogiri::XML(document) { |cfg| cfg.nonoent.dtdload.dtdvalid.nonet }
143
143
  end
144
144
  end
145
145
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Version file for ValidateWebsite
4
4
  module ValidateWebsite
5
- VERSION = '1.8.1'.freeze
5
+ VERSION = '1.9.0'.freeze
6
6
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper', __FILE__)
1
+ require File.expand_path('test_helper', __dir__)
2
2
 
3
3
  describe ValidateWebsite::Core do
4
4
  describe 'invalid options' do
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper', __FILE__)
1
+ require File.expand_path('test_helper', __dir__)
2
2
 
3
3
  # rubocop:disable Metrics/BlockLength
4
4
  describe ValidateWebsite::Crawl do
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper', __FILE__)
1
+ require File.expand_path('test_helper', __dir__)
2
2
 
3
3
  # rubocop:disable Metrics/BlockLength
4
4
  describe ValidateWebsite::Static do
@@ -1,11 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ begin
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+ rescue LoadError
7
+ STDERR.puts 'coveralls not loaded'
8
+ end
9
+
3
10
  require 'minitest/autorun'
11
+ require 'minitest/focus'
4
12
  require 'spidr'
5
13
 
6
14
  require 'validate_website/core'
7
15
 
8
- require File.expand_path('../webmock_helper', __FILE__)
16
+ require File.expand_path('webmock_helper', __dir__)
9
17
 
10
18
  TEST_DOMAIN = 'http://www.example.com/'.freeze
11
19
  ENV['LC_ALL'] = 'C.UTF-8' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper', __FILE__)
1
+ require File.expand_path('test_helper', __dir__)
2
2
 
3
3
  # rubocop:disable Metrics/BlockLength
4
4
  describe ValidateWebsite::Validator do
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validate-website
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Arnoud
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-25 00:00:00.000000000 Z
11
+ date: 2018-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: spidr
14
+ name: crass
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
19
+ version: '1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.6'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: crass
28
+ name: paint
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1'
33
+ version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1'
40
+ version: '2'
41
41
  - !ruby/object:Gem::Dependency
42
- name: paint
42
+ name: slop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1'
47
+ version: '4.6'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1'
54
+ version: '4.6'
55
55
  - !ruby/object:Gem::Dependency
56
- name: w3c_validators
56
+ name: spidr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: '0.6'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: '0.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: tidy_ffi
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,33 +81,33 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.1'
83
83
  - !ruby/object:Gem::Dependency
84
- name: slop
84
+ name: w3c_validators
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '4.2'
89
+ version: '1.3'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '4.2'
96
+ version: '1.3'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rake
98
+ name: asciidoctor
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '12'
103
+ version: '1.5'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '12'
110
+ version: '1.5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: minitest
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -123,47 +123,61 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '5'
125
125
  - !ruby/object:Gem::Dependency
126
- name: webmock
126
+ name: minitest-focus
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '2.3'
131
+ version: '1'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '2.3'
138
+ version: '1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '12'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '12'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: rubocop
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 0.49.0
159
+ version: 0.58.0
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 0.49.0
166
+ version: 0.58.0
153
167
  - !ruby/object:Gem::Dependency
154
- name: asciidoctor
168
+ name: webmock
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: '1.5'
173
+ version: '3.4'
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: '1.5'
180
+ version: '3.4'
167
181
  description: validate-website is a web crawler for checking the markup validity with
168
182
  XML Schema / DTD and not found urls.
169
183
  email: laurent@spkdev.net
@@ -259,7 +273,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
259
273
  requirements:
260
274
  - - ">="
261
275
  - !ruby/object:Gem::Version
262
- version: 2.1.0
276
+ version: 2.2.0
263
277
  required_rubygems_version: !ruby/object:Gem::Requirement
264
278
  requirements:
265
279
  - - ">="