diamond-mechanize 2.2 → 2.3

Sign up to get free protection for your applications and to get access to all the features.
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