diamond-mechanize 2.2 → 2.3

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.
Files changed (147) hide show
  1. data/Rakefile +49 -0
  2. data/lib/mechanize.rb +1079 -0
  3. data/lib/mechanize/content_type_error.rb +13 -0
  4. data/lib/mechanize/cookie.rb +232 -0
  5. data/lib/mechanize/cookie_jar.rb +194 -0
  6. data/lib/mechanize/download.rb +59 -0
  7. data/lib/mechanize/element_matcher.rb +36 -0
  8. data/lib/mechanize/file.rb +65 -0
  9. data/lib/mechanize/file_connection.rb +17 -0
  10. data/lib/mechanize/file_request.rb +26 -0
  11. data/lib/mechanize/file_response.rb +74 -0
  12. data/lib/mechanize/file_saver.rb +39 -0
  13. data/lib/mechanize/form.rb +543 -0
  14. data/lib/mechanize/form/button.rb +6 -0
  15. data/lib/mechanize/form/check_box.rb +12 -0
  16. data/lib/mechanize/form/field.rb +54 -0
  17. data/lib/mechanize/form/file_upload.rb +21 -0
  18. data/lib/mechanize/form/hidden.rb +3 -0
  19. data/lib/mechanize/form/image_button.rb +19 -0
  20. data/lib/mechanize/form/keygen.rb +34 -0
  21. data/lib/mechanize/form/multi_select_list.rb +94 -0
  22. data/lib/mechanize/form/option.rb +50 -0
  23. data/lib/mechanize/form/radio_button.rb +55 -0
  24. data/lib/mechanize/form/reset.rb +3 -0
  25. data/lib/mechanize/form/select_list.rb +44 -0
  26. data/lib/mechanize/form/submit.rb +3 -0
  27. data/lib/mechanize/form/text.rb +3 -0
  28. data/lib/mechanize/form/textarea.rb +3 -0
  29. data/lib/mechanize/headers.rb +23 -0
  30. data/lib/mechanize/history.rb +82 -0
  31. data/lib/mechanize/http.rb +8 -0
  32. data/lib/mechanize/http/agent.rb +1004 -0
  33. data/lib/mechanize/http/auth_challenge.rb +59 -0
  34. data/lib/mechanize/http/auth_realm.rb +31 -0
  35. data/lib/mechanize/http/content_disposition_parser.rb +188 -0
  36. data/lib/mechanize/http/www_authenticate_parser.rb +155 -0
  37. data/lib/mechanize/monkey_patch.rb +16 -0
  38. data/lib/mechanize/page.rb +440 -0
  39. data/lib/mechanize/page/base.rb +7 -0
  40. data/lib/mechanize/page/frame.rb +27 -0
  41. data/lib/mechanize/page/image.rb +30 -0
  42. data/lib/mechanize/page/label.rb +20 -0
  43. data/lib/mechanize/page/link.rb +98 -0
  44. data/lib/mechanize/page/meta_refresh.rb +68 -0
  45. data/lib/mechanize/parser.rb +173 -0
  46. data/lib/mechanize/pluggable_parsers.rb +144 -0
  47. data/lib/mechanize/redirect_limit_reached_error.rb +19 -0
  48. data/lib/mechanize/redirect_not_get_or_head_error.rb +21 -0
  49. data/lib/mechanize/response_code_error.rb +21 -0
  50. data/lib/mechanize/response_read_error.rb +27 -0
  51. data/lib/mechanize/robots_disallowed_error.rb +28 -0
  52. data/lib/mechanize/test_case.rb +663 -0
  53. data/lib/mechanize/unauthorized_error.rb +3 -0
  54. data/lib/mechanize/unsupported_scheme_error.rb +6 -0
  55. data/lib/mechanize/util.rb +101 -0
  56. data/test/data/htpasswd +1 -0
  57. data/test/data/server.crt +16 -0
  58. data/test/data/server.csr +12 -0
  59. data/test/data/server.key +15 -0
  60. data/test/data/server.pem +15 -0
  61. data/test/htdocs/alt_text.html +10 -0
  62. data/test/htdocs/bad_form_test.html +9 -0
  63. data/test/htdocs/button.jpg +0 -0
  64. data/test/htdocs/canonical_uri.html +9 -0
  65. data/test/htdocs/dir with spaces/foo.html +1 -0
  66. data/test/htdocs/empty_form.html +6 -0
  67. data/test/htdocs/file_upload.html +26 -0
  68. data/test/htdocs/find_link.html +41 -0
  69. data/test/htdocs/form_multi_select.html +16 -0
  70. data/test/htdocs/form_multival.html +37 -0
  71. data/test/htdocs/form_no_action.html +18 -0
  72. data/test/htdocs/form_no_input_name.html +16 -0
  73. data/test/htdocs/form_order_test.html +11 -0
  74. data/test/htdocs/form_select.html +16 -0
  75. data/test/htdocs/form_set_fields.html +14 -0
  76. data/test/htdocs/form_test.html +188 -0
  77. data/test/htdocs/frame_referer_test.html +10 -0
  78. data/test/htdocs/frame_test.html +30 -0
  79. data/test/htdocs/google.html +13 -0
  80. data/test/htdocs/index.html +6 -0
  81. data/test/htdocs/link with space.html +5 -0
  82. data/test/htdocs/meta_cookie.html +11 -0
  83. data/test/htdocs/no_title_test.html +6 -0
  84. data/test/htdocs/noindex.html +9 -0
  85. data/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
  86. data/test/htdocs/relative/tc_relative_links.html +21 -0
  87. data/test/htdocs/robots.html +8 -0
  88. data/test/htdocs/robots.txt +2 -0
  89. data/test/htdocs/tc_bad_charset.html +9 -0
  90. data/test/htdocs/tc_bad_links.html +5 -0
  91. data/test/htdocs/tc_base_link.html +8 -0
  92. data/test/htdocs/tc_blank_form.html +11 -0
  93. data/test/htdocs/tc_charset.html +6 -0
  94. data/test/htdocs/tc_checkboxes.html +19 -0
  95. data/test/htdocs/tc_encoded_links.html +5 -0
  96. data/test/htdocs/tc_field_precedence.html +11 -0
  97. data/test/htdocs/tc_follow_meta.html +8 -0
  98. data/test/htdocs/tc_form_action.html +48 -0
  99. data/test/htdocs/tc_links.html +19 -0
  100. data/test/htdocs/tc_meta_in_body.html +9 -0
  101. data/test/htdocs/tc_pretty_print.html +17 -0
  102. data/test/htdocs/tc_referer.html +16 -0
  103. data/test/htdocs/tc_relative_links.html +19 -0
  104. data/test/htdocs/tc_textarea.html +23 -0
  105. data/test/htdocs/test_click.html +11 -0
  106. data/test/htdocs/unusual______.html +5 -0
  107. data/test/test_mechanize.rb +1164 -0
  108. data/test/test_mechanize_cookie.rb +451 -0
  109. data/test/test_mechanize_cookie_jar.rb +483 -0
  110. data/test/test_mechanize_download.rb +43 -0
  111. data/test/test_mechanize_file.rb +61 -0
  112. data/test/test_mechanize_file_connection.rb +21 -0
  113. data/test/test_mechanize_file_request.rb +19 -0
  114. data/test/test_mechanize_file_saver.rb +21 -0
  115. data/test/test_mechanize_form.rb +875 -0
  116. data/test/test_mechanize_form_check_box.rb +38 -0
  117. data/test/test_mechanize_form_encoding.rb +114 -0
  118. data/test/test_mechanize_form_field.rb +63 -0
  119. data/test/test_mechanize_form_file_upload.rb +20 -0
  120. data/test/test_mechanize_form_image_button.rb +12 -0
  121. data/test/test_mechanize_form_keygen.rb +32 -0
  122. data/test/test_mechanize_form_multi_select_list.rb +84 -0
  123. data/test/test_mechanize_form_option.rb +55 -0
  124. data/test/test_mechanize_form_radio_button.rb +78 -0
  125. data/test/test_mechanize_form_select_list.rb +76 -0
  126. data/test/test_mechanize_form_textarea.rb +52 -0
  127. data/test/test_mechanize_headers.rb +35 -0
  128. data/test/test_mechanize_history.rb +103 -0
  129. data/test/test_mechanize_http_agent.rb +1225 -0
  130. data/test/test_mechanize_http_auth_challenge.rb +39 -0
  131. data/test/test_mechanize_http_auth_realm.rb +49 -0
  132. data/test/test_mechanize_http_content_disposition_parser.rb +118 -0
  133. data/test/test_mechanize_http_www_authenticate_parser.rb +146 -0
  134. data/test/test_mechanize_link.rb +80 -0
  135. data/test/test_mechanize_page.rb +118 -0
  136. data/test/test_mechanize_page_encoding.rb +182 -0
  137. data/test/test_mechanize_page_frame.rb +16 -0
  138. data/test/test_mechanize_page_link.rb +390 -0
  139. data/test/test_mechanize_page_meta_refresh.rb +127 -0
  140. data/test/test_mechanize_parser.rb +289 -0
  141. data/test/test_mechanize_pluggable_parser.rb +52 -0
  142. data/test/test_mechanize_redirect_limit_reached_error.rb +24 -0
  143. data/test/test_mechanize_redirect_not_get_or_head_error.rb +14 -0
  144. data/test/test_mechanize_subclass.rb +22 -0
  145. data/test/test_mechanize_util.rb +103 -0
  146. data/test/test_multi_select.rb +119 -0
  147. metadata +148 -71
@@ -0,0 +1,24 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeRedirectLimitReachedError < Mechanize::TestCase
4
+
5
+ def setup
6
+ super
7
+
8
+ @error = Mechanize::RedirectLimitReachedError.new fake_page, 10
9
+ end
10
+
11
+ def test_message
12
+ assert_equal 'Redirect limit of 10 reached', @error.message
13
+ end
14
+
15
+ def test_redirects
16
+ assert_equal 10, @error.redirects
17
+ end
18
+
19
+ def test_response_code
20
+ assert_equal 200, @error.response_code
21
+ end
22
+
23
+ end
24
+
@@ -0,0 +1,14 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeRedirectNotGetOrHead < Mechanize::TestCase
4
+
5
+ def test_to_s
6
+ page = fake_page
7
+
8
+ error = Mechanize::RedirectNotGetOrHeadError.new(page, :put)
9
+
10
+ assert_match(/ PUT /, error.to_s)
11
+ end
12
+
13
+ end
14
+
@@ -0,0 +1,22 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class TestMechanizeSubclass < Mechanize::TestCase
4
+
5
+ class Parent < Mechanize
6
+ @html_parser = :parser
7
+ @log = :log
8
+ end
9
+
10
+ class Child < Parent
11
+ end
12
+
13
+ def test_subclass_inherits_html_parser
14
+ assert_equal :parser, Child.html_parser
15
+ end
16
+
17
+ def test_subclass_inherits_log
18
+ assert_equal :log, Child.log
19
+ end
20
+
21
+ end
22
+
@@ -0,0 +1,103 @@
1
+ # coding: utf-8
2
+
3
+ require 'mechanize/test_case'
4
+
5
+ class TestMechanizeUtil < Mechanize::TestCase
6
+
7
+ INPUTTED_VALUE = "テスト" # "test" in Japanese UTF-8 encoding
8
+ CONTENT_ENCODING = 'Shift_JIS' # one of Japanese encoding
9
+ ENCODED_VALUE = "\x83\x65\x83\x58\x83\x67" # "test" in Japanese Shift_JIS encoding
10
+
11
+ if Mechanize::Util::NEW_RUBY_ENCODING
12
+ ENCODING_ERRORS = [EncodingError, Encoding::ConverterNotFoundError] # and so on
13
+ ERROR_LOG_MESSAGE = /from_native_charset: Encoding::ConverterNotFoundError: form encoding: "UTF-eight"/
14
+ ENCODED_VALUE.force_encoding(::Encoding::SHIFT_JIS)
15
+ else
16
+ ENCODING_ERRORS = [Iconv::InvalidEncoding, Iconv::IllegalSequence]
17
+ ERROR_LOG_MESSAGE = /from_native_charset: Iconv::InvalidEncoding: form encoding: "UTF-eight"/
18
+ end
19
+
20
+ INVALID_ENCODING = 'UTF-eight'
21
+
22
+ def setup
23
+ super
24
+
25
+ @MU = Mechanize::Util
26
+ @result = "not set"
27
+ end
28
+
29
+ def test_from_native_charset
30
+ @result = @MU.from_native_charset(INPUTTED_VALUE, CONTENT_ENCODING)
31
+ assert_equal ENCODED_VALUE, @result
32
+ end
33
+
34
+ def test_from_native_charset_returns_nil_when_no_string
35
+ @result = @MU.from_native_charset(nil, CONTENT_ENCODING)
36
+ assert_equal nil, @result
37
+ end
38
+
39
+ def test_from_native_charset_doesnot_convert_when_no_encoding
40
+ @result = @MU.from_native_charset(INPUTTED_VALUE, nil)
41
+ refute_equal ENCODED_VALUE, @result
42
+ assert_equal INPUTTED_VALUE, @result
43
+ end
44
+
45
+ def test_from_native_charset_doesnot_convert_when_not_nokogiri
46
+ parser = Mechanize.html_parser
47
+ Mechanize.html_parser = 'Another HTML Parser'
48
+
49
+ @result = @MU.from_native_charset(INPUTTED_VALUE, CONTENT_ENCODING)
50
+ refute_equal ENCODED_VALUE, @result
51
+ assert_equal INPUTTED_VALUE, @result
52
+ ensure
53
+ Mechanize.html_parser = parser
54
+ end
55
+
56
+ def test_from_native_charset_raises_error_with_bad_encoding
57
+ assert_raises(*ENCODING_ERRORS) do
58
+ @MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING)
59
+ end
60
+ end
61
+
62
+ def test_from_native_charset_suppress_encoding_error_when_3rd_arg_is_true
63
+ @MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, true)
64
+
65
+ # HACK no assertion
66
+ end
67
+
68
+ def test_from_native_charset_doesnot_convert_when_encoding_error_raised_and_ignored
69
+ @result = @MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, true)
70
+
71
+ refute_equal ENCODED_VALUE, @result
72
+ assert_equal INPUTTED_VALUE, @result
73
+ end
74
+
75
+ def test_from_native_charset_logs_form_when_encoding_error_raised
76
+ sio = StringIO.new("")
77
+ log = Logger.new(sio)
78
+ log.level = Logger::DEBUG
79
+
80
+ assert_raises(*ENCODING_ERRORS) do
81
+ @MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, nil, log)
82
+ end
83
+
84
+ assert_match ERROR_LOG_MESSAGE, sio.string
85
+ end
86
+
87
+ def test_from_native_charset_logs_form_when_encoding_error_is_ignored
88
+ sio = StringIO.new("")
89
+ log = Logger.new(sio)
90
+ log.level = Logger::DEBUG
91
+
92
+ @MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, true, log)
93
+
94
+ assert_match ERROR_LOG_MESSAGE, sio.string
95
+ end
96
+
97
+ def test_self_html_unescape_entity
98
+ assert_equal '&', @MU::html_unescape('&')
99
+ assert_equal '&', @MU::html_unescape('&amp;')
100
+ end
101
+
102
+ end
103
+
@@ -0,0 +1,119 @@
1
+ require 'mechanize/test_case'
2
+
3
+ class MultiSelectTest < Mechanize::TestCase
4
+ def setup
5
+ super
6
+
7
+ @page = @mech.get("http://localhost/form_multi_select.html")
8
+ @form = @page.forms.first
9
+ end
10
+
11
+ def test_option_with
12
+ o = @form.field_with(:name => 'list').option_with(:value => '1')
13
+ assert_equal '1', o.value
14
+ end
15
+
16
+ def test_options_with
17
+ os = @form.field_with(:name => 'list').options_with(:value => /1|2/)
18
+ assert_equal ['1', '2'].sort, os.map { |x| x.value }.sort
19
+ end
20
+
21
+ def test_select_none
22
+ page = @mech.get("http://localhost/form_multi_select.html")
23
+ form = page.forms.first
24
+ form.field_with(:name => 'list').select_none
25
+ page = @mech.submit(form)
26
+ assert_equal(0, page.links.length)
27
+ end
28
+
29
+ def test_select_all
30
+ page = @mech.get("http://localhost/form_multi_select.html")
31
+ form = page.forms.first
32
+ form.field_with(:name => 'list').select_all
33
+ page = @mech.submit(form)
34
+ assert_equal(6, page.links.length)
35
+ assert_equal(1, page.links_with(:text => 'list:1').length)
36
+ assert_equal(1, page.links_with(:text => 'list:2').length)
37
+ assert_equal(1, page.links_with(:text => 'list:3').length)
38
+ assert_equal(1, page.links_with(:text => 'list:4').length)
39
+ assert_equal(1, page.links_with(:text => 'list:5').length)
40
+ assert_equal(1, page.links_with(:text => 'list:6').length)
41
+ end
42
+
43
+ def test_click_all
44
+ page = @mech.get("http://localhost/form_multi_select.html")
45
+ form = page.forms.first
46
+ form.field_with(:name => 'list').options.each { |o| o.click }
47
+ page = @mech.submit(form)
48
+ assert_equal(5, page.links.length)
49
+ assert_equal(1, page.links_with(:text => 'list:1').length)
50
+ assert_equal(1, page.links_with(:text => 'list:3').length)
51
+ assert_equal(1, page.links_with(:text => 'list:4').length)
52
+ assert_equal(1, page.links_with(:text => 'list:5').length)
53
+ assert_equal(1, page.links_with(:text => 'list:6').length)
54
+ end
55
+
56
+ def test_select_default
57
+ page = @mech.get("http://localhost/form_multi_select.html")
58
+ form = page.forms.first
59
+ page = @mech.submit(form)
60
+ assert_equal(1, page.links.length)
61
+ assert_equal(1, page.links_with(:text => 'list:2').length)
62
+ end
63
+
64
+ def test_select_one
65
+ page = @mech.get("http://localhost/form_multi_select.html")
66
+ form = page.forms.first
67
+ form.list = 'Aaron'
68
+ assert_equal(['Aaron'], form.list)
69
+ page = @mech.submit(form)
70
+ assert_equal(1, page.links.length)
71
+ assert_equal('list:Aaron', page.links.first.text)
72
+ end
73
+
74
+ def test_select_two
75
+ page = @mech.get("http://localhost/form_multi_select.html")
76
+ form = page.forms.first
77
+ form.list = ['1', 'Aaron']
78
+ page = @mech.submit(form)
79
+ assert_equal(2, page.links.length)
80
+ assert_equal(1, page.links_with(:text => 'list:1').length)
81
+ assert_equal(1, page.links_with(:text => 'list:Aaron').length)
82
+ end
83
+
84
+ def test_select_three
85
+ page = @mech.get("http://localhost/form_multi_select.html")
86
+ form = page.forms.first
87
+ form.list = ['1', '2', '3']
88
+ page = @mech.submit(form)
89
+ assert_equal(3, page.links.length)
90
+ assert_equal(1, page.links_with(:text => 'list:1').length)
91
+ assert_equal(1, page.links_with(:text => 'list:2').length)
92
+ assert_equal(1, page.links_with(:text => 'list:3').length)
93
+ end
94
+
95
+ def test_select_three_twice
96
+ page = @mech.get("http://localhost/form_multi_select.html")
97
+ form = page.forms.first
98
+ form.list = ['1', '2', '3']
99
+ form.list = ['1', '2', '3']
100
+ page = @mech.submit(form)
101
+ assert_equal(3, page.links.length)
102
+ assert_equal(1, page.links_with(:text => 'list:1').length)
103
+ assert_equal(1, page.links_with(:text => 'list:2').length)
104
+ assert_equal(1, page.links_with(:text => 'list:3').length)
105
+ end
106
+
107
+ def test_select_with_click
108
+ page = @mech.get("http://localhost/form_multi_select.html")
109
+ form = page.forms.first
110
+ form.list = ['1', 'Aaron']
111
+ form.field_with(:name => 'list').options[3].tick
112
+ assert_equal(['1', 'Aaron', '4'].sort, form.list.sort)
113
+ page = @mech.submit(form)
114
+ assert_equal(3, page.links.length)
115
+ assert_equal(1, page.links_with(:text => 'list:1').length)
116
+ assert_equal(1, page.links_with(:text => 'list:Aaron').length)
117
+ assert_equal(1, page.links_with(:text => 'list:4').length)
118
+ end
119
+ end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diamond-mechanize
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
4
  prerelease:
6
- segments:
7
- - 2
8
- - 2
9
- version: "2.2"
5
+ version: "2.3"
10
6
  platform: ruby
11
7
  authors:
12
8
  - Eric Hodel
@@ -48,18 +44,9 @@ dependencies:
48
44
  requirements:
49
45
  - - ">="
50
46
  - !ruby/object:Gem::Version
51
- hash: 17
52
- segments:
53
- - 1
54
- - 1
55
- - 1
56
47
  version: 1.1.1
57
48
  - - ~>
58
49
  - !ruby/object:Gem::Version
59
- hash: 13
60
- segments:
61
- - 1
62
- - 1
63
50
  version: "1.1"
64
51
  type: :runtime
65
52
  version_requirements: *id001
@@ -71,18 +58,9 @@ dependencies:
71
58
  requirements:
72
59
  - - ">="
73
60
  - !ruby/object:Gem::Version
74
- hash: 7
75
- segments:
76
- - 2
77
- - 3
78
- - 2
79
61
  version: 2.3.2
80
62
  - - ~>
81
63
  - !ruby/object:Gem::Version
82
- hash: 5
83
- segments:
84
- - 2
85
- - 3
86
64
  version: "2.3"
87
65
  type: :runtime
88
66
  version_requirements: *id002
@@ -94,10 +72,6 @@ dependencies:
94
72
  requirements:
95
73
  - - ~>
96
74
  - !ruby/object:Gem::Version
97
- hash: 7
98
- segments:
99
- - 1
100
- - 4
101
75
  version: "1.4"
102
76
  type: :runtime
103
77
  version_requirements: *id003
@@ -109,18 +83,9 @@ dependencies:
109
83
  requirements:
110
84
  - - ">="
111
85
  - !ruby/object:Gem::Version
112
- hash: 25
113
- segments:
114
- - 0
115
- - 1
116
- - 1
117
86
  version: 0.1.1
118
87
  - - ~>
119
88
  - !ruby/object:Gem::Version
120
- hash: 9
121
- segments:
122
- - 0
123
- - 1
124
89
  version: "0.1"
125
90
  type: :runtime
126
91
  version_requirements: *id004
@@ -132,18 +97,9 @@ dependencies:
132
97
  requirements:
133
98
  - - ">="
134
99
  - !ruby/object:Gem::Version
135
- hash: 13
136
- segments:
137
- - 0
138
- - 0
139
- - 9
140
100
  version: 0.0.9
141
101
  - - ~>
142
102
  - !ruby/object:Gem::Version
143
- hash: 11
144
- segments:
145
- - 0
146
- - 0
147
103
  version: "0.0"
148
104
  type: :runtime
149
105
  version_requirements: *id005
@@ -155,18 +111,9 @@ dependencies:
155
111
  requirements:
156
112
  - - ">="
157
113
  - !ruby/object:Gem::Version
158
- hash: 9
159
- segments:
160
- - 0
161
- - 5
162
- - 1
163
114
  version: 0.5.1
164
115
  - - ~>
165
116
  - !ruby/object:Gem::Version
166
- hash: 1
167
- segments:
168
- - 0
169
- - 5
170
117
  version: "0.5"
171
118
  type: :runtime
172
119
  version_requirements: *id006
@@ -178,10 +125,6 @@ dependencies:
178
125
  requirements:
179
126
  - - ~>
180
127
  - !ruby/object:Gem::Version
181
- hash: 15
182
- segments:
183
- - 2
184
- - 6
185
128
  version: "2.6"
186
129
  type: :development
187
130
  version_requirements: *id007
@@ -193,10 +136,6 @@ dependencies:
193
136
  requirements:
194
137
  - - ~>
195
138
  - !ruby/object:Gem::Version
196
- hash: 27
197
- segments:
198
- - 2
199
- - 12
200
139
  version: "2.12"
201
140
  type: :development
202
141
  version_requirements: *id008
@@ -231,6 +170,152 @@ files:
231
170
  - GUIDE.rdoc
232
171
  - LICENSE.rdoc
233
172
  - README.rdoc
173
+ - lib/mechanize/content_type_error.rb
174
+ - lib/mechanize/cookie.rb
175
+ - lib/mechanize/cookie_jar.rb
176
+ - lib/mechanize/download.rb
177
+ - lib/mechanize/element_matcher.rb
178
+ - lib/mechanize/file.rb
179
+ - lib/mechanize/file_connection.rb
180
+ - lib/mechanize/file_request.rb
181
+ - lib/mechanize/file_response.rb
182
+ - lib/mechanize/file_saver.rb
183
+ - lib/mechanize/form/button.rb
184
+ - lib/mechanize/form/check_box.rb
185
+ - lib/mechanize/form/field.rb
186
+ - lib/mechanize/form/file_upload.rb
187
+ - lib/mechanize/form/hidden.rb
188
+ - lib/mechanize/form/image_button.rb
189
+ - lib/mechanize/form/keygen.rb
190
+ - lib/mechanize/form/multi_select_list.rb
191
+ - lib/mechanize/form/option.rb
192
+ - lib/mechanize/form/radio_button.rb
193
+ - lib/mechanize/form/reset.rb
194
+ - lib/mechanize/form/select_list.rb
195
+ - lib/mechanize/form/submit.rb
196
+ - lib/mechanize/form/text.rb
197
+ - lib/mechanize/form/textarea.rb
198
+ - lib/mechanize/form.rb
199
+ - lib/mechanize/headers.rb
200
+ - lib/mechanize/history.rb
201
+ - lib/mechanize/http/agent.rb
202
+ - lib/mechanize/http/auth_challenge.rb
203
+ - lib/mechanize/http/auth_realm.rb
204
+ - lib/mechanize/http/content_disposition_parser.rb
205
+ - lib/mechanize/http/www_authenticate_parser.rb
206
+ - lib/mechanize/http.rb
207
+ - lib/mechanize/monkey_patch.rb
208
+ - lib/mechanize/page/base.rb
209
+ - lib/mechanize/page/frame.rb
210
+ - lib/mechanize/page/image.rb
211
+ - lib/mechanize/page/label.rb
212
+ - lib/mechanize/page/link.rb
213
+ - lib/mechanize/page/meta_refresh.rb
214
+ - lib/mechanize/page.rb
215
+ - lib/mechanize/parser.rb
216
+ - lib/mechanize/pluggable_parsers.rb
217
+ - lib/mechanize/redirect_limit_reached_error.rb
218
+ - lib/mechanize/redirect_not_get_or_head_error.rb
219
+ - lib/mechanize/response_code_error.rb
220
+ - lib/mechanize/response_read_error.rb
221
+ - lib/mechanize/robots_disallowed_error.rb
222
+ - lib/mechanize/test_case.rb
223
+ - lib/mechanize/unauthorized_error.rb
224
+ - lib/mechanize/unsupported_scheme_error.rb
225
+ - lib/mechanize/util.rb
226
+ - lib/mechanize.rb
227
+ - Rakefile
228
+ - test/data/htpasswd
229
+ - test/data/server.crt
230
+ - test/data/server.csr
231
+ - test/data/server.key
232
+ - test/data/server.pem
233
+ - test/htdocs/alt_text.html
234
+ - test/htdocs/bad_form_test.html
235
+ - test/htdocs/button.jpg
236
+ - test/htdocs/canonical_uri.html
237
+ - test/htdocs/dir with spaces/foo.html
238
+ - test/htdocs/empty_form.html
239
+ - test/htdocs/file_upload.html
240
+ - test/htdocs/find_link.html
241
+ - test/htdocs/form_multi_select.html
242
+ - test/htdocs/form_multival.html
243
+ - test/htdocs/form_no_action.html
244
+ - test/htdocs/form_no_input_name.html
245
+ - test/htdocs/form_order_test.html
246
+ - test/htdocs/form_select.html
247
+ - test/htdocs/form_set_fields.html
248
+ - test/htdocs/form_test.html
249
+ - test/htdocs/frame_referer_test.html
250
+ - test/htdocs/frame_test.html
251
+ - test/htdocs/google.html
252
+ - test/htdocs/index.html
253
+ - test/htdocs/link with space.html
254
+ - test/htdocs/meta_cookie.html
255
+ - test/htdocs/no_title_test.html
256
+ - test/htdocs/noindex.html
257
+ - test/htdocs/rails_3_encoding_hack_form_test.html
258
+ - test/htdocs/relative/tc_relative_links.html
259
+ - test/htdocs/robots.html
260
+ - test/htdocs/robots.txt
261
+ - test/htdocs/tc_bad_charset.html
262
+ - test/htdocs/tc_bad_links.html
263
+ - test/htdocs/tc_base_link.html
264
+ - test/htdocs/tc_blank_form.html
265
+ - test/htdocs/tc_charset.html
266
+ - test/htdocs/tc_checkboxes.html
267
+ - test/htdocs/tc_encoded_links.html
268
+ - test/htdocs/tc_field_precedence.html
269
+ - test/htdocs/tc_follow_meta.html
270
+ - test/htdocs/tc_form_action.html
271
+ - test/htdocs/tc_links.html
272
+ - test/htdocs/tc_meta_in_body.html
273
+ - test/htdocs/tc_pretty_print.html
274
+ - test/htdocs/tc_referer.html
275
+ - test/htdocs/tc_relative_links.html
276
+ - test/htdocs/tc_textarea.html
277
+ - test/htdocs/test_click.html
278
+ - test/htdocs/unusual______.html
279
+ - test/test_mechanize.rb
280
+ - test/test_mechanize_cookie.rb
281
+ - test/test_mechanize_cookie_jar.rb
282
+ - test/test_mechanize_download.rb
283
+ - test/test_mechanize_file.rb
284
+ - test/test_mechanize_file_connection.rb
285
+ - test/test_mechanize_file_request.rb
286
+ - test/test_mechanize_file_saver.rb
287
+ - test/test_mechanize_form.rb
288
+ - test/test_mechanize_form_check_box.rb
289
+ - test/test_mechanize_form_encoding.rb
290
+ - test/test_mechanize_form_field.rb
291
+ - test/test_mechanize_form_file_upload.rb
292
+ - test/test_mechanize_form_image_button.rb
293
+ - test/test_mechanize_form_keygen.rb
294
+ - test/test_mechanize_form_multi_select_list.rb
295
+ - test/test_mechanize_form_option.rb
296
+ - test/test_mechanize_form_radio_button.rb
297
+ - test/test_mechanize_form_select_list.rb
298
+ - test/test_mechanize_form_textarea.rb
299
+ - test/test_mechanize_headers.rb
300
+ - test/test_mechanize_history.rb
301
+ - test/test_mechanize_http_agent.rb
302
+ - test/test_mechanize_http_auth_challenge.rb
303
+ - test/test_mechanize_http_auth_realm.rb
304
+ - test/test_mechanize_http_content_disposition_parser.rb
305
+ - test/test_mechanize_http_www_authenticate_parser.rb
306
+ - test/test_mechanize_link.rb
307
+ - test/test_mechanize_page.rb
308
+ - test/test_mechanize_page_encoding.rb
309
+ - test/test_mechanize_page_frame.rb
310
+ - test/test_mechanize_page_link.rb
311
+ - test/test_mechanize_page_meta_refresh.rb
312
+ - test/test_mechanize_parser.rb
313
+ - test/test_mechanize_pluggable_parser.rb
314
+ - test/test_mechanize_redirect_limit_reached_error.rb
315
+ - test/test_mechanize_redirect_not_get_or_head_error.rb
316
+ - test/test_mechanize_subclass.rb
317
+ - test/test_mechanize_util.rb
318
+ - test/test_multi_select.rb
234
319
  homepage: http://mechanize.rubyforge.org
235
320
  licenses: []
236
321
 
@@ -245,25 +330,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
245
330
  requirements:
246
331
  - - ">="
247
332
  - !ruby/object:Gem::Version
248
- hash: 57
249
- segments:
250
- - 1
251
- - 8
252
- - 7
253
333
  version: 1.8.7
254
334
  required_rubygems_version: !ruby/object:Gem::Requirement
255
335
  none: false
256
336
  requirements:
257
337
  - - ">="
258
338
  - !ruby/object:Gem::Version
259
- hash: 3
260
- segments:
261
- - 0
262
339
  version: "0"
263
340
  requirements: []
264
341
 
265
342
  rubyforge_project: mechanize
266
- rubygems_version: 1.8.5
343
+ rubygems_version: 1.8.13
267
344
  signing_key:
268
345
  specification_version: 3
269
346
  summary: The Mechanize library is used for automating interaction with websites