validate-website 1.8.1 → 1.9.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.
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
  - - ">="