diamond-mechanize 2.1

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 (154) hide show
  1. data/CHANGELOG.rdoc +718 -0
  2. data/EXAMPLES.rdoc +187 -0
  3. data/FAQ.rdoc +11 -0
  4. data/GUIDE.rdoc +163 -0
  5. data/LICENSE.rdoc +20 -0
  6. data/Manifest.txt +159 -0
  7. data/README.rdoc +64 -0
  8. data/Rakefile +49 -0
  9. data/lib/mechanize.rb +1079 -0
  10. data/lib/mechanize/content_type_error.rb +13 -0
  11. data/lib/mechanize/cookie.rb +232 -0
  12. data/lib/mechanize/cookie_jar.rb +194 -0
  13. data/lib/mechanize/download.rb +59 -0
  14. data/lib/mechanize/element_matcher.rb +36 -0
  15. data/lib/mechanize/file.rb +65 -0
  16. data/lib/mechanize/file_connection.rb +17 -0
  17. data/lib/mechanize/file_request.rb +26 -0
  18. data/lib/mechanize/file_response.rb +74 -0
  19. data/lib/mechanize/file_saver.rb +39 -0
  20. data/lib/mechanize/form.rb +543 -0
  21. data/lib/mechanize/form/button.rb +6 -0
  22. data/lib/mechanize/form/check_box.rb +12 -0
  23. data/lib/mechanize/form/field.rb +54 -0
  24. data/lib/mechanize/form/file_upload.rb +21 -0
  25. data/lib/mechanize/form/hidden.rb +3 -0
  26. data/lib/mechanize/form/image_button.rb +19 -0
  27. data/lib/mechanize/form/keygen.rb +34 -0
  28. data/lib/mechanize/form/multi_select_list.rb +94 -0
  29. data/lib/mechanize/form/option.rb +50 -0
  30. data/lib/mechanize/form/radio_button.rb +55 -0
  31. data/lib/mechanize/form/reset.rb +3 -0
  32. data/lib/mechanize/form/select_list.rb +44 -0
  33. data/lib/mechanize/form/submit.rb +3 -0
  34. data/lib/mechanize/form/text.rb +3 -0
  35. data/lib/mechanize/form/textarea.rb +3 -0
  36. data/lib/mechanize/headers.rb +23 -0
  37. data/lib/mechanize/history.rb +82 -0
  38. data/lib/mechanize/http.rb +8 -0
  39. data/lib/mechanize/http/agent.rb +1004 -0
  40. data/lib/mechanize/http/auth_challenge.rb +59 -0
  41. data/lib/mechanize/http/auth_realm.rb +31 -0
  42. data/lib/mechanize/http/content_disposition_parser.rb +188 -0
  43. data/lib/mechanize/http/www_authenticate_parser.rb +155 -0
  44. data/lib/mechanize/monkey_patch.rb +16 -0
  45. data/lib/mechanize/page.rb +440 -0
  46. data/lib/mechanize/page/base.rb +7 -0
  47. data/lib/mechanize/page/frame.rb +27 -0
  48. data/lib/mechanize/page/image.rb +30 -0
  49. data/lib/mechanize/page/label.rb +20 -0
  50. data/lib/mechanize/page/link.rb +98 -0
  51. data/lib/mechanize/page/meta_refresh.rb +68 -0
  52. data/lib/mechanize/parser.rb +173 -0
  53. data/lib/mechanize/pluggable_parsers.rb +144 -0
  54. data/lib/mechanize/redirect_limit_reached_error.rb +19 -0
  55. data/lib/mechanize/redirect_not_get_or_head_error.rb +21 -0
  56. data/lib/mechanize/response_code_error.rb +21 -0
  57. data/lib/mechanize/response_read_error.rb +27 -0
  58. data/lib/mechanize/robots_disallowed_error.rb +28 -0
  59. data/lib/mechanize/test_case.rb +663 -0
  60. data/lib/mechanize/unauthorized_error.rb +3 -0
  61. data/lib/mechanize/unsupported_scheme_error.rb +6 -0
  62. data/lib/mechanize/util.rb +101 -0
  63. data/test/data/htpasswd +1 -0
  64. data/test/data/server.crt +16 -0
  65. data/test/data/server.csr +12 -0
  66. data/test/data/server.key +15 -0
  67. data/test/data/server.pem +15 -0
  68. data/test/htdocs/alt_text.html +10 -0
  69. data/test/htdocs/bad_form_test.html +9 -0
  70. data/test/htdocs/button.jpg +0 -0
  71. data/test/htdocs/canonical_uri.html +9 -0
  72. data/test/htdocs/dir with spaces/foo.html +1 -0
  73. data/test/htdocs/empty_form.html +6 -0
  74. data/test/htdocs/file_upload.html +26 -0
  75. data/test/htdocs/find_link.html +41 -0
  76. data/test/htdocs/form_multi_select.html +16 -0
  77. data/test/htdocs/form_multival.html +37 -0
  78. data/test/htdocs/form_no_action.html +18 -0
  79. data/test/htdocs/form_no_input_name.html +16 -0
  80. data/test/htdocs/form_order_test.html +11 -0
  81. data/test/htdocs/form_select.html +16 -0
  82. data/test/htdocs/form_set_fields.html +14 -0
  83. data/test/htdocs/form_test.html +188 -0
  84. data/test/htdocs/frame_referer_test.html +10 -0
  85. data/test/htdocs/frame_test.html +30 -0
  86. data/test/htdocs/google.html +13 -0
  87. data/test/htdocs/index.html +6 -0
  88. data/test/htdocs/link with space.html +5 -0
  89. data/test/htdocs/meta_cookie.html +11 -0
  90. data/test/htdocs/no_title_test.html +6 -0
  91. data/test/htdocs/noindex.html +9 -0
  92. data/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
  93. data/test/htdocs/relative/tc_relative_links.html +21 -0
  94. data/test/htdocs/robots.html +8 -0
  95. data/test/htdocs/robots.txt +2 -0
  96. data/test/htdocs/tc_bad_charset.html +9 -0
  97. data/test/htdocs/tc_bad_links.html +5 -0
  98. data/test/htdocs/tc_base_link.html +8 -0
  99. data/test/htdocs/tc_blank_form.html +11 -0
  100. data/test/htdocs/tc_charset.html +6 -0
  101. data/test/htdocs/tc_checkboxes.html +19 -0
  102. data/test/htdocs/tc_encoded_links.html +5 -0
  103. data/test/htdocs/tc_field_precedence.html +11 -0
  104. data/test/htdocs/tc_follow_meta.html +8 -0
  105. data/test/htdocs/tc_form_action.html +48 -0
  106. data/test/htdocs/tc_links.html +19 -0
  107. data/test/htdocs/tc_meta_in_body.html +9 -0
  108. data/test/htdocs/tc_pretty_print.html +17 -0
  109. data/test/htdocs/tc_referer.html +16 -0
  110. data/test/htdocs/tc_relative_links.html +19 -0
  111. data/test/htdocs/tc_textarea.html +23 -0
  112. data/test/htdocs/test_click.html +11 -0
  113. data/test/htdocs/unusual______.html +5 -0
  114. data/test/test_mechanize.rb +1164 -0
  115. data/test/test_mechanize_cookie.rb +451 -0
  116. data/test/test_mechanize_cookie_jar.rb +483 -0
  117. data/test/test_mechanize_download.rb +43 -0
  118. data/test/test_mechanize_file.rb +61 -0
  119. data/test/test_mechanize_file_connection.rb +21 -0
  120. data/test/test_mechanize_file_request.rb +19 -0
  121. data/test/test_mechanize_file_saver.rb +21 -0
  122. data/test/test_mechanize_form.rb +875 -0
  123. data/test/test_mechanize_form_check_box.rb +38 -0
  124. data/test/test_mechanize_form_encoding.rb +114 -0
  125. data/test/test_mechanize_form_field.rb +63 -0
  126. data/test/test_mechanize_form_file_upload.rb +20 -0
  127. data/test/test_mechanize_form_image_button.rb +12 -0
  128. data/test/test_mechanize_form_keygen.rb +32 -0
  129. data/test/test_mechanize_form_multi_select_list.rb +84 -0
  130. data/test/test_mechanize_form_option.rb +55 -0
  131. data/test/test_mechanize_form_radio_button.rb +78 -0
  132. data/test/test_mechanize_form_select_list.rb +76 -0
  133. data/test/test_mechanize_form_textarea.rb +52 -0
  134. data/test/test_mechanize_headers.rb +35 -0
  135. data/test/test_mechanize_history.rb +103 -0
  136. data/test/test_mechanize_http_agent.rb +1225 -0
  137. data/test/test_mechanize_http_auth_challenge.rb +39 -0
  138. data/test/test_mechanize_http_auth_realm.rb +49 -0
  139. data/test/test_mechanize_http_content_disposition_parser.rb +118 -0
  140. data/test/test_mechanize_http_www_authenticate_parser.rb +146 -0
  141. data/test/test_mechanize_link.rb +80 -0
  142. data/test/test_mechanize_page.rb +118 -0
  143. data/test/test_mechanize_page_encoding.rb +182 -0
  144. data/test/test_mechanize_page_frame.rb +16 -0
  145. data/test/test_mechanize_page_link.rb +390 -0
  146. data/test/test_mechanize_page_meta_refresh.rb +127 -0
  147. data/test/test_mechanize_parser.rb +289 -0
  148. data/test/test_mechanize_pluggable_parser.rb +52 -0
  149. data/test/test_mechanize_redirect_limit_reached_error.rb +24 -0
  150. data/test/test_mechanize_redirect_not_get_or_head_error.rb +14 -0
  151. data/test/test_mechanize_subclass.rb +22 -0
  152. data/test/test_mechanize_util.rb +103 -0
  153. data/test/test_multi_select.rb +119 -0
  154. metadata +216 -0
@@ -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 ADDED
@@ -0,0 +1,216 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: diamond-mechanize
3
+ version: !ruby/object:Gem::Version
4
+ hash: 1
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 1
9
+ version: "2.1"
10
+ platform: ruby
11
+ authors:
12
+ - Steve Diamond
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-12-26 00:00:00 Z
18
+ dependencies: []
19
+
20
+ description: test
21
+ email: stevend2@stanford.edu
22
+ executables: []
23
+
24
+ extensions: []
25
+
26
+ extra_rdoc_files: []
27
+
28
+ files:
29
+ - lib/mechanize/content_type_error.rb
30
+ - lib/mechanize/cookie.rb
31
+ - lib/mechanize/cookie_jar.rb
32
+ - lib/mechanize/download.rb
33
+ - lib/mechanize/element_matcher.rb
34
+ - lib/mechanize/file.rb
35
+ - lib/mechanize/file_connection.rb
36
+ - lib/mechanize/file_request.rb
37
+ - lib/mechanize/file_response.rb
38
+ - lib/mechanize/file_saver.rb
39
+ - lib/mechanize/form/button.rb
40
+ - lib/mechanize/form/check_box.rb
41
+ - lib/mechanize/form/field.rb
42
+ - lib/mechanize/form/file_upload.rb
43
+ - lib/mechanize/form/hidden.rb
44
+ - lib/mechanize/form/image_button.rb
45
+ - lib/mechanize/form/keygen.rb
46
+ - lib/mechanize/form/multi_select_list.rb
47
+ - lib/mechanize/form/option.rb
48
+ - lib/mechanize/form/radio_button.rb
49
+ - lib/mechanize/form/reset.rb
50
+ - lib/mechanize/form/select_list.rb
51
+ - lib/mechanize/form/submit.rb
52
+ - lib/mechanize/form/text.rb
53
+ - lib/mechanize/form/textarea.rb
54
+ - lib/mechanize/form.rb
55
+ - lib/mechanize/headers.rb
56
+ - lib/mechanize/history.rb
57
+ - lib/mechanize/http/agent.rb
58
+ - lib/mechanize/http/auth_challenge.rb
59
+ - lib/mechanize/http/auth_realm.rb
60
+ - lib/mechanize/http/content_disposition_parser.rb
61
+ - lib/mechanize/http/www_authenticate_parser.rb
62
+ - lib/mechanize/http.rb
63
+ - lib/mechanize/monkey_patch.rb
64
+ - lib/mechanize/page/base.rb
65
+ - lib/mechanize/page/frame.rb
66
+ - lib/mechanize/page/image.rb
67
+ - lib/mechanize/page/label.rb
68
+ - lib/mechanize/page/link.rb
69
+ - lib/mechanize/page/meta_refresh.rb
70
+ - lib/mechanize/page.rb
71
+ - lib/mechanize/parser.rb
72
+ - lib/mechanize/pluggable_parsers.rb
73
+ - lib/mechanize/redirect_limit_reached_error.rb
74
+ - lib/mechanize/redirect_not_get_or_head_error.rb
75
+ - lib/mechanize/response_code_error.rb
76
+ - lib/mechanize/response_read_error.rb
77
+ - lib/mechanize/robots_disallowed_error.rb
78
+ - lib/mechanize/test_case.rb
79
+ - lib/mechanize/unauthorized_error.rb
80
+ - lib/mechanize/unsupported_scheme_error.rb
81
+ - lib/mechanize/util.rb
82
+ - lib/mechanize.rb
83
+ - CHANGELOG.rdoc
84
+ - EXAMPLES.rdoc
85
+ - FAQ.rdoc
86
+ - GUIDE.rdoc
87
+ - LICENSE.rdoc
88
+ - Manifest.txt
89
+ - Rakefile
90
+ - README.rdoc
91
+ - test/data/htpasswd
92
+ - test/data/server.crt
93
+ - test/data/server.csr
94
+ - test/data/server.key
95
+ - test/data/server.pem
96
+ - test/htdocs/alt_text.html
97
+ - test/htdocs/bad_form_test.html
98
+ - test/htdocs/button.jpg
99
+ - test/htdocs/canonical_uri.html
100
+ - test/htdocs/dir with spaces/foo.html
101
+ - test/htdocs/empty_form.html
102
+ - test/htdocs/file_upload.html
103
+ - test/htdocs/find_link.html
104
+ - test/htdocs/form_multi_select.html
105
+ - test/htdocs/form_multival.html
106
+ - test/htdocs/form_no_action.html
107
+ - test/htdocs/form_no_input_name.html
108
+ - test/htdocs/form_order_test.html
109
+ - test/htdocs/form_select.html
110
+ - test/htdocs/form_set_fields.html
111
+ - test/htdocs/form_test.html
112
+ - test/htdocs/frame_referer_test.html
113
+ - test/htdocs/frame_test.html
114
+ - test/htdocs/google.html
115
+ - test/htdocs/index.html
116
+ - test/htdocs/link with space.html
117
+ - test/htdocs/meta_cookie.html
118
+ - test/htdocs/no_title_test.html
119
+ - test/htdocs/noindex.html
120
+ - test/htdocs/rails_3_encoding_hack_form_test.html
121
+ - test/htdocs/relative/tc_relative_links.html
122
+ - test/htdocs/robots.html
123
+ - test/htdocs/robots.txt
124
+ - test/htdocs/tc_bad_charset.html
125
+ - test/htdocs/tc_bad_links.html
126
+ - test/htdocs/tc_base_link.html
127
+ - test/htdocs/tc_blank_form.html
128
+ - test/htdocs/tc_charset.html
129
+ - test/htdocs/tc_checkboxes.html
130
+ - test/htdocs/tc_encoded_links.html
131
+ - test/htdocs/tc_field_precedence.html
132
+ - test/htdocs/tc_follow_meta.html
133
+ - test/htdocs/tc_form_action.html
134
+ - test/htdocs/tc_links.html
135
+ - test/htdocs/tc_meta_in_body.html
136
+ - test/htdocs/tc_pretty_print.html
137
+ - test/htdocs/tc_referer.html
138
+ - test/htdocs/tc_relative_links.html
139
+ - test/htdocs/tc_textarea.html
140
+ - test/htdocs/test_click.html
141
+ - test/htdocs/unusual______.html
142
+ - test/test_mechanize.rb
143
+ - test/test_mechanize_cookie.rb
144
+ - test/test_mechanize_cookie_jar.rb
145
+ - test/test_mechanize_download.rb
146
+ - test/test_mechanize_file.rb
147
+ - test/test_mechanize_file_connection.rb
148
+ - test/test_mechanize_file_request.rb
149
+ - test/test_mechanize_file_saver.rb
150
+ - test/test_mechanize_form.rb
151
+ - test/test_mechanize_form_check_box.rb
152
+ - test/test_mechanize_form_encoding.rb
153
+ - test/test_mechanize_form_field.rb
154
+ - test/test_mechanize_form_file_upload.rb
155
+ - test/test_mechanize_form_image_button.rb
156
+ - test/test_mechanize_form_keygen.rb
157
+ - test/test_mechanize_form_multi_select_list.rb
158
+ - test/test_mechanize_form_option.rb
159
+ - test/test_mechanize_form_radio_button.rb
160
+ - test/test_mechanize_form_select_list.rb
161
+ - test/test_mechanize_form_textarea.rb
162
+ - test/test_mechanize_headers.rb
163
+ - test/test_mechanize_history.rb
164
+ - test/test_mechanize_http_agent.rb
165
+ - test/test_mechanize_http_auth_challenge.rb
166
+ - test/test_mechanize_http_auth_realm.rb
167
+ - test/test_mechanize_http_content_disposition_parser.rb
168
+ - test/test_mechanize_http_www_authenticate_parser.rb
169
+ - test/test_mechanize_link.rb
170
+ - test/test_mechanize_page.rb
171
+ - test/test_mechanize_page_encoding.rb
172
+ - test/test_mechanize_page_frame.rb
173
+ - test/test_mechanize_page_link.rb
174
+ - test/test_mechanize_page_meta_refresh.rb
175
+ - test/test_mechanize_parser.rb
176
+ - test/test_mechanize_pluggable_parser.rb
177
+ - test/test_mechanize_redirect_limit_reached_error.rb
178
+ - test/test_mechanize_redirect_not_get_or_head_error.rb
179
+ - test/test_mechanize_subclass.rb
180
+ - test/test_mechanize_util.rb
181
+ - test/test_multi_select.rb
182
+ homepage: http://rubygems.org/gems/mechanize
183
+ licenses: []
184
+
185
+ post_install_message:
186
+ rdoc_options: []
187
+
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ none: false
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ hash: 3
196
+ segments:
197
+ - 0
198
+ version: "0"
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ hash: 3
205
+ segments:
206
+ - 0
207
+ version: "0"
208
+ requirements: []
209
+
210
+ rubyforge_project:
211
+ rubygems_version: 1.8.5
212
+ signing_key:
213
+ specification_version: 3
214
+ summary: mechanize bugfix
215
+ test_files: []
216
+