mechanize 2.7.7 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mechanize might be problematic. Click here for more details.

Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci-test.yml +24 -4
  3. data/.yardopts +8 -0
  4. data/{CHANGELOG.rdoc → CHANGELOG.md} +81 -66
  5. data/Gemfile +1 -6
  6. data/{LICENSE.rdoc → LICENSE.txt} +4 -0
  7. data/README.md +79 -0
  8. data/Rakefile +18 -3
  9. data/lib/mechanize.rb +1 -0
  10. data/lib/mechanize/chunked_termination_error.rb +1 -0
  11. data/lib/mechanize/content_type_error.rb +1 -0
  12. data/lib/mechanize/cookie.rb +1 -13
  13. data/lib/mechanize/cookie_jar.rb +2 -10
  14. data/lib/mechanize/directory_saver.rb +1 -0
  15. data/lib/mechanize/download.rb +1 -0
  16. data/lib/mechanize/element_matcher.rb +1 -0
  17. data/lib/mechanize/element_not_found_error.rb +1 -0
  18. data/lib/mechanize/file.rb +1 -0
  19. data/lib/mechanize/file_connection.rb +5 -3
  20. data/lib/mechanize/file_request.rb +1 -0
  21. data/lib/mechanize/file_response.rb +3 -0
  22. data/lib/mechanize/file_saver.rb +1 -0
  23. data/lib/mechanize/form.rb +1 -9
  24. data/lib/mechanize/form/button.rb +1 -0
  25. data/lib/mechanize/form/check_box.rb +1 -0
  26. data/lib/mechanize/form/field.rb +1 -0
  27. data/lib/mechanize/form/file_upload.rb +1 -0
  28. data/lib/mechanize/form/hidden.rb +1 -0
  29. data/lib/mechanize/form/image_button.rb +1 -0
  30. data/lib/mechanize/form/keygen.rb +1 -0
  31. data/lib/mechanize/form/multi_select_list.rb +1 -0
  32. data/lib/mechanize/form/option.rb +1 -0
  33. data/lib/mechanize/form/radio_button.rb +1 -0
  34. data/lib/mechanize/form/reset.rb +1 -0
  35. data/lib/mechanize/form/select_list.rb +1 -0
  36. data/lib/mechanize/form/submit.rb +1 -0
  37. data/lib/mechanize/form/text.rb +1 -0
  38. data/lib/mechanize/form/textarea.rb +1 -0
  39. data/lib/mechanize/headers.rb +1 -0
  40. data/lib/mechanize/history.rb +1 -0
  41. data/lib/mechanize/http.rb +1 -0
  42. data/lib/mechanize/http/agent.rb +16 -8
  43. data/lib/mechanize/http/auth_challenge.rb +1 -0
  44. data/lib/mechanize/http/auth_realm.rb +1 -0
  45. data/lib/mechanize/http/auth_store.rb +1 -0
  46. data/lib/mechanize/http/content_disposition_parser.rb +14 -2
  47. data/lib/mechanize/http/www_authenticate_parser.rb +3 -3
  48. data/lib/mechanize/image.rb +1 -0
  49. data/lib/mechanize/page.rb +1 -0
  50. data/lib/mechanize/page/base.rb +1 -0
  51. data/lib/mechanize/page/frame.rb +1 -0
  52. data/lib/mechanize/page/image.rb +1 -0
  53. data/lib/mechanize/page/label.rb +1 -0
  54. data/lib/mechanize/page/link.rb +8 -1
  55. data/lib/mechanize/page/meta_refresh.rb +1 -0
  56. data/lib/mechanize/parser.rb +1 -0
  57. data/lib/mechanize/pluggable_parsers.rb +1 -0
  58. data/lib/mechanize/prependable.rb +1 -0
  59. data/lib/mechanize/redirect_limit_reached_error.rb +1 -0
  60. data/lib/mechanize/redirect_not_get_or_head_error.rb +1 -0
  61. data/lib/mechanize/response_code_error.rb +2 -1
  62. data/lib/mechanize/response_read_error.rb +1 -0
  63. data/lib/mechanize/robots_disallowed_error.rb +1 -0
  64. data/lib/mechanize/test_case.rb +32 -27
  65. data/lib/mechanize/test_case/bad_chunking_servlet.rb +1 -0
  66. data/lib/mechanize/test_case/basic_auth_servlet.rb +1 -0
  67. data/lib/mechanize/test_case/content_type_servlet.rb +1 -0
  68. data/lib/mechanize/test_case/digest_auth_servlet.rb +1 -0
  69. data/lib/mechanize/test_case/file_upload_servlet.rb +1 -0
  70. data/lib/mechanize/test_case/form_servlet.rb +1 -0
  71. data/lib/mechanize/test_case/gzip_servlet.rb +1 -0
  72. data/lib/mechanize/test_case/header_servlet.rb +1 -0
  73. data/lib/mechanize/test_case/http_refresh_servlet.rb +1 -0
  74. data/lib/mechanize/test_case/infinite_redirect_servlet.rb +1 -0
  75. data/lib/mechanize/test_case/infinite_refresh_servlet.rb +1 -0
  76. data/lib/mechanize/test_case/many_cookies_as_string_servlet.rb +1 -0
  77. data/lib/mechanize/test_case/many_cookies_servlet.rb +1 -0
  78. data/lib/mechanize/test_case/modified_since_servlet.rb +1 -0
  79. data/lib/mechanize/test_case/ntlm_servlet.rb +1 -0
  80. data/lib/mechanize/test_case/one_cookie_no_spaces_servlet.rb +1 -0
  81. data/lib/mechanize/test_case/one_cookie_servlet.rb +1 -0
  82. data/lib/mechanize/test_case/quoted_value_cookie_servlet.rb +1 -0
  83. data/lib/mechanize/test_case/redirect_servlet.rb +1 -0
  84. data/lib/mechanize/test_case/referer_servlet.rb +1 -0
  85. data/lib/mechanize/test_case/refresh_with_empty_url.rb +1 -0
  86. data/lib/mechanize/test_case/refresh_without_url.rb +1 -0
  87. data/lib/mechanize/test_case/response_code_servlet.rb +1 -0
  88. data/lib/mechanize/test_case/robots_txt_servlet.rb +1 -0
  89. data/lib/mechanize/test_case/send_cookies_servlet.rb +1 -0
  90. data/lib/mechanize/test_case/server.rb +1 -0
  91. data/lib/mechanize/test_case/servlets.rb +1 -0
  92. data/lib/mechanize/test_case/verb_servlet.rb +1 -0
  93. data/lib/mechanize/unauthorized_error.rb +1 -0
  94. data/lib/mechanize/unsupported_scheme_error.rb +1 -0
  95. data/lib/mechanize/util.rb +2 -1
  96. data/lib/mechanize/version.rb +2 -1
  97. data/lib/mechanize/xml_file.rb +1 -0
  98. data/mechanize.gemspec +38 -31
  99. data/test/htdocs/dir with spaces/foo.html +1 -0
  100. data/test/test_mechanize.rb +5 -4
  101. data/test/test_mechanize_cookie_jar.rb +2 -0
  102. data/test/test_mechanize_download.rb +1 -0
  103. data/test/test_mechanize_file.rb +1 -0
  104. data/test/test_mechanize_file_connection.rb +21 -3
  105. data/test/test_mechanize_file_response.rb +6 -0
  106. data/test/test_mechanize_http_agent.rb +47 -7
  107. data/test/test_mechanize_http_content_disposition_parser.rb +27 -0
  108. data/test/test_mechanize_link.rb +24 -0
  109. metadata +134 -52
  110. data/README.rdoc +0 -77
@@ -135,6 +135,30 @@ class TestMechanizeLink < Mechanize::TestCase
135
135
  assert_equal 'http://foo.bar/%20baz', link.uri.to_s
136
136
  end
137
137
 
138
+ def test_uri_weird_with_fragment
139
+ doc = Nokogiri::HTML::Document.new
140
+
141
+ node = Nokogiri::XML::Node.new('foo', doc)
142
+ node['href'] = 'http://foo.bar/ baz#уважение'
143
+
144
+ link = Mechanize::Page::Link.new(node, nil, nil)
145
+
146
+ assert_equal '%D1%83%D0%B2%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5', link.uri.fragment
147
+ end
148
+
149
+ def test_bad_uri_raise_compatible_exception
150
+ doc = Nokogiri::HTML::Document.new
151
+
152
+ node = Nokogiri::XML::Node.new('foo', doc)
153
+ node['href'] = 'http://http:foo.bar/ baz'
154
+
155
+ link = Mechanize::Page::Link.new(node, nil, nil)
156
+
157
+ assert_raises URI::InvalidURIError do
158
+ link.uri
159
+ end
160
+ end
161
+
138
162
  def test_resolving_full_uri
139
163
  page = @mech.get("http://localhost/frame_test.html")
140
164
  link = page.link_with(:text => "Form Test")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mechanize
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.7
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Hodel
@@ -12,144 +12,156 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-02-01 00:00:00.000000000 Z
15
+ date: 2021-04-01 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
- name: net-http-digest_auth
18
+ name: addressable
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.1.1
24
21
  - - "~>"
25
22
  - !ruby/object:Gem::Version
26
- version: '1.1'
23
+ version: '2.7'
27
24
  type: :runtime
28
25
  prerelease: false
29
26
  version_requirements: !ruby/object:Gem::Requirement
30
27
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.1.1
34
28
  - - "~>"
35
29
  - !ruby/object:Gem::Version
36
- version: '1.1'
30
+ version: '2.7'
37
31
  - !ruby/object:Gem::Dependency
38
- name: mime-types
32
+ name: domain_name
39
33
  requirement: !ruby/object:Gem::Requirement
40
34
  requirements:
41
35
  - - ">="
42
36
  - !ruby/object:Gem::Version
43
- version: 1.17.2
37
+ version: 0.5.20190701
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.5'
44
41
  type: :runtime
45
42
  prerelease: false
46
43
  version_requirements: !ruby/object:Gem::Requirement
47
44
  requirements:
48
45
  - - ">="
49
46
  - !ruby/object:Gem::Version
50
- version: 1.17.2
47
+ version: 0.5.20190701
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '0.5'
51
51
  - !ruby/object:Gem::Dependency
52
- name: net-http-persistent
52
+ name: http-cookie
53
53
  requirement: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 2.5.2
57
+ version: 1.0.3
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.0'
58
61
  type: :runtime
59
62
  prerelease: false
60
63
  version_requirements: !ruby/object:Gem::Requirement
61
64
  requirements:
62
65
  - - ">="
63
66
  - !ruby/object:Gem::Version
64
- version: 2.5.2
67
+ version: 1.0.3
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
65
71
  - !ruby/object:Gem::Dependency
66
- name: http-cookie
72
+ name: mime-types
67
73
  requirement: !ruby/object:Gem::Requirement
68
74
  requirements:
69
75
  - - "~>"
70
76
  - !ruby/object:Gem::Version
71
- version: '1.0'
77
+ version: '3.0'
72
78
  type: :runtime
73
79
  prerelease: false
74
80
  version_requirements: !ruby/object:Gem::Requirement
75
81
  requirements:
76
82
  - - "~>"
77
83
  - !ruby/object:Gem::Version
78
- version: '1.0'
84
+ version: '3.0'
79
85
  - !ruby/object:Gem::Dependency
80
- name: nokogiri
86
+ name: net-http-digest_auth
81
87
  requirement: !ruby/object:Gem::Requirement
82
88
  requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.4.1
83
92
  - - "~>"
84
93
  - !ruby/object:Gem::Version
85
- version: '1.6'
94
+ version: '1.4'
86
95
  type: :runtime
87
96
  prerelease: false
88
97
  version_requirements: !ruby/object:Gem::Requirement
89
98
  requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: 1.4.1
90
102
  - - "~>"
91
103
  - !ruby/object:Gem::Version
92
- version: '1.6'
104
+ version: '1.4'
93
105
  - !ruby/object:Gem::Dependency
94
- name: ntlm-http
106
+ name: net-http-persistent
95
107
  requirement: !ruby/object:Gem::Requirement
96
108
  requirements:
97
109
  - - ">="
98
110
  - !ruby/object:Gem::Version
99
- version: 0.1.1
100
- - - "~>"
111
+ version: 2.5.2
112
+ - - "<"
101
113
  - !ruby/object:Gem::Version
102
- version: '0.1'
114
+ version: 5.0.dev
103
115
  type: :runtime
104
116
  prerelease: false
105
117
  version_requirements: !ruby/object:Gem::Requirement
106
118
  requirements:
107
119
  - - ">="
108
120
  - !ruby/object:Gem::Version
109
- version: 0.1.1
110
- - - "~>"
121
+ version: 2.5.2
122
+ - - "<"
111
123
  - !ruby/object:Gem::Version
112
- version: '0.1'
124
+ version: 5.0.dev
113
125
  - !ruby/object:Gem::Dependency
114
- name: webrobots
126
+ name: nokogiri
115
127
  requirement: !ruby/object:Gem::Requirement
116
128
  requirements:
117
- - - "<"
118
- - !ruby/object:Gem::Version
119
- version: '0.2'
120
129
  - - ">="
121
130
  - !ruby/object:Gem::Version
122
- version: 0.0.9
131
+ version: 1.11.2
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '1.11'
123
135
  type: :runtime
124
136
  prerelease: false
125
137
  version_requirements: !ruby/object:Gem::Requirement
126
138
  requirements:
127
- - - "<"
128
- - !ruby/object:Gem::Version
129
- version: '0.2'
130
139
  - - ">="
131
140
  - !ruby/object:Gem::Version
132
- version: 0.0.9
141
+ version: 1.11.2
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.11'
133
145
  - !ruby/object:Gem::Dependency
134
- name: domain_name
146
+ name: rubyntlm
135
147
  requirement: !ruby/object:Gem::Requirement
136
148
  requirements:
137
149
  - - ">="
138
150
  - !ruby/object:Gem::Version
139
- version: 0.5.1
151
+ version: 0.6.3
140
152
  - - "~>"
141
153
  - !ruby/object:Gem::Version
142
- version: '0.5'
154
+ version: '0.6'
143
155
  type: :runtime
144
156
  prerelease: false
145
157
  version_requirements: !ruby/object:Gem::Requirement
146
158
  requirements:
147
159
  - - ">="
148
160
  - !ruby/object:Gem::Version
149
- version: 0.5.1
161
+ version: 0.6.3
150
162
  - - "~>"
151
163
  - !ruby/object:Gem::Version
152
- version: '0.5'
164
+ version: '0.6'
153
165
  - !ruby/object:Gem::Dependency
154
166
  name: webrick
155
167
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +176,76 @@ dependencies:
164
176
  - - "~>"
165
177
  - !ruby/object:Gem::Version
166
178
  version: '1.7'
179
+ - !ruby/object:Gem::Dependency
180
+ name: webrobots
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: 0.1.2
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 0.1.2
193
+ - !ruby/object:Gem::Dependency
194
+ name: minitest
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '5.14'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '5.14'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rake
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '13.0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '13.0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rdoc
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '6.3'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '6.3'
235
+ - !ruby/object:Gem::Dependency
236
+ name: rubocop
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '1.12'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '1.12'
167
249
  description: |-
168
250
  The Mechanize library is used for automating interaction with websites.
169
251
  Mechanize automatically stores and sends cookies, follows redirects,
@@ -181,19 +263,19 @@ extensions: []
181
263
  extra_rdoc_files:
182
264
  - GUIDE.rdoc
183
265
  - EXAMPLES.rdoc
184
- - LICENSE.rdoc
185
- - CHANGELOG.rdoc
186
- - README.rdoc
266
+ - README.md
267
+ - CHANGELOG.md
187
268
  files:
188
269
  - ".autotest"
189
270
  - ".github/workflows/ci-test.yml"
190
271
  - ".gitignore"
191
- - CHANGELOG.rdoc
272
+ - ".yardopts"
273
+ - CHANGELOG.md
192
274
  - EXAMPLES.rdoc
193
275
  - GUIDE.rdoc
194
276
  - Gemfile
195
- - LICENSE.rdoc
196
- - README.rdoc
277
+ - LICENSE.txt
278
+ - README.md
197
279
  - Rakefile
198
280
  - examples/flickr_upload.rb
199
281
  - examples/mech-dump.rb
@@ -399,14 +481,14 @@ metadata: {}
399
481
  post_install_message:
400
482
  rdoc_options:
401
483
  - "--main"
402
- - README.rdoc
484
+ - README.md
403
485
  require_paths:
404
486
  - lib
405
487
  required_ruby_version: !ruby/object:Gem::Requirement
406
488
  requirements:
407
489
  - - ">="
408
490
  - !ruby/object:Gem::Version
409
- version: 1.9.2
491
+ version: 2.5.0
410
492
  required_rubygems_version: !ruby/object:Gem::Requirement
411
493
  requirements:
412
494
  - - ">="
data/README.rdoc DELETED
@@ -1,77 +0,0 @@
1
- = Mechanize {<img src="https://secure.travis-ci.org/sparklemotion/mechanize.svg?rvm=2.3.3" />}[http://travis-ci.org/sparklemotion/mechanize]
2
-
3
- * http://docs.seattlerb.org/mechanize
4
- * https://github.com/sparklemotion/mechanize
5
-
6
- == Description
7
-
8
- The Mechanize library is used for automating interaction with websites.
9
- Mechanize automatically stores and sends cookies, follows redirects,
10
- and can follow links and submit forms. Form fields can be populated and
11
- submitted. Mechanize also keeps track of the sites that you have visited as
12
- a history.
13
-
14
- == Dependencies
15
-
16
- * ruby 1.9.2 or newer
17
- * nokogiri[https://github.com/sparklemotion/nokogiri]
18
-
19
- == Support:
20
-
21
- The bug tracker is available here:
22
-
23
- * https://github.com/sparklemotion/mechanize/issues
24
-
25
- == Examples
26
-
27
- If you are just starting, check out the GUIDE[http://docs.seattlerb.org/mechanize/GUIDE_rdoc.html] or
28
- the EXAMPLES[http://docs.seattlerb.org/mechanize/EXAMPLES_rdoc.html] file.
29
-
30
- == Developers
31
-
32
- Use bundler to install dependencies:
33
-
34
- bundle install
35
-
36
- Run all tests with:
37
-
38
- rake test
39
-
40
- You can also use +autotest+ from the ZenTest gem to run tests.
41
-
42
- See also Mechanize::TestCase to read about the built-in testing
43
- infrastructure.
44
-
45
- == Authors
46
-
47
- Copyright (c) 2005 by Michael Neumann (mneumann@ntecs.de)
48
-
49
- Copyright (c) 2006-2011:
50
-
51
- * {Aaron Patterson}[http://tenderlovemaking.com] (aaron.patterson@gmail.com)
52
- * {Mike Dalessio}[http://mike.daless.io] (mike@csa.net)
53
-
54
- Copyright (c) 2011-2015:
55
-
56
- * {Eric Hodel}[http://blog.segment7.net] (drbrain@segment7.net)
57
- * {Akinori MUSHA}[http://blog.akinori.org] (knu@idaemons.org)
58
- * {Lee Jarvis}[http://twitter.com/lee_jarvis] (ljjarvis@gmail.com)
59
-
60
- This library comes with a shameless plug for employing me
61
- (Aaron[http://tenderlovemaking.com/]) programming Ruby, my favorite language!
62
-
63
- == Acknowledgments
64
-
65
- This library was heavily influenced by its namesake in the Perl world. A big
66
- thanks goes to {Andy Lester}[http://petdance.com],
67
- the author of the original Perl module WWW::Mechanize which is available
68
- here[http://search.cpan.org/dist/WWW-Mechanize/]. Ruby Mechanize would not be around without you!
69
-
70
- Thank you to Michael Neumann for starting the Ruby version. Thanks to everyone
71
- who's helped out in various ways. Finally, thank you to the people using this
72
- library!
73
-
74
- == License
75
-
76
- This library is distributed under the MIT license. Please see the LICENSE[http://docs.seattlerb.org/mechanize/LICENSE_rdoc.html] file.
77
-