rapuncel 0.0.1.alpha → 0.0.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.
- data/README.md +33 -36
- data/{Rakefile → Rakefile.rb} +1 -1
- data/lib/rapuncel.rb +1 -2
- data/lib/rapuncel/adapters/net_http_adapter.rb +6 -6
- data/lib/rapuncel/adapters/typhoeus_adapter.rb +33 -0
- data/lib/rapuncel/base.rb +2 -2
- data/lib/rapuncel/client.rb +13 -21
- data/lib/rapuncel/connection.rb +2 -2
- data/lib/rapuncel/core_ext/array.rb +16 -9
- data/lib/rapuncel/core_ext/big_decimal.rb +0 -7
- data/lib/rapuncel/core_ext/boolean.rb +13 -10
- data/lib/rapuncel/core_ext/float.rb +7 -4
- data/lib/rapuncel/core_ext/hash.rb +27 -17
- data/lib/rapuncel/core_ext/integer.rb +10 -2
- data/lib/rapuncel/core_ext/object.rb +6 -6
- data/lib/rapuncel/core_ext/string.rb +7 -5
- data/lib/rapuncel/core_ext/symbol.rb +3 -2
- data/lib/rapuncel/core_ext/time.rb +8 -5
- data/lib/rapuncel/fault.rb +10 -0
- data/lib/rapuncel/proxy.rb +14 -39
- data/lib/rapuncel/request.rb +6 -7
- data/lib/rapuncel/response.rb +31 -69
- data/rapuncel.gemspec +4 -3
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-adapters-typhoeus_adapter_rb.html +231 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-base_rb.html +105 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-client_rb.html +321 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-connection_rb.html +513 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-array_rb.html +303 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-boolean_rb.html +255 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-float_rb.html +177 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-hash_rb.html +297 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-integer_rb.html +177 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-object_rb.html +297 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-string_rb.html +159 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-time_rb.html +165 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-fault_rb.html +93 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-proxy_rb.html +393 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-request_rb.html +351 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-response_rb.html +399 -0
- data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel_rb.html +201 -0
- data/test/coverage/functional_test_helper_rb.html +141 -0
- data/test/coverage/index.html +410 -0
- data/test/coverage/jquery-1.3.2.min.js +19 -0
- data/test/coverage/jquery.tablesorter.min.js +15 -0
- data/test/coverage/print.css +12 -0
- data/test/coverage/rcov.js +42 -0
- data/test/coverage/screen.css +270 -0
- data/test/coverage/test_helper_rb.html +291 -0
- data/test/coverage/test_server_rb.html +231 -0
- data/test/functional/client_test.rb +7 -38
- data/test/functional_test_helper.rb +2 -2
- data/test/test_server.rb +29 -3
- data/test/unit/array_test.rb +14 -14
- data/test/unit/boolean_test.rb +6 -6
- data/test/unit/float_test.rb +7 -7
- data/test/unit/hash_test.rb +16 -16
- data/test/unit/object_test.rb +29 -29
- data/test/unit/proxy_test.rb +9 -9
- data/test/unit/response_test.rb +5 -69
- data/test/unit/string_test.rb +7 -15
- metadata +56 -20
- data/lib/rapuncel/core_ext/nil.rb +0 -7
- data/rapuncel-0.0.1.preview.gem +0 -0
- data/test/unit/nil_test.rb +0 -16
@@ -0,0 +1,231 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
+
<head>
|
4
|
+
<title>test_server.rb</title>
|
5
|
+
<link href="screen.css" media="all" rel="stylesheet" type="text/css" />
|
6
|
+
<link href="print.css" media="print" rel="stylesheet" type="text/css" />
|
7
|
+
|
8
|
+
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
|
9
|
+
<script type="text/javascript" src="rcov.js"></script>
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
<h1>Test C0 Coverage Information - RCov</h1>
|
13
|
+
<h2>test_server.rb</h2>
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
<div class="report_table_wrapper">
|
18
|
+
<table class='report' id='report_table'>
|
19
|
+
<thead>
|
20
|
+
<tr>
|
21
|
+
<th class="left_align">Name</th>
|
22
|
+
<th class="right_align">Total Lines</th>
|
23
|
+
<th class="right_align">Lines of Code</th>
|
24
|
+
<th class="left_align">Total Coverage</th>
|
25
|
+
<th class="left_align">Code Coverage</th>
|
26
|
+
</tr>
|
27
|
+
</thead>
|
28
|
+
<tbody>
|
29
|
+
<tr>
|
30
|
+
<td class="left_align"><a href="test_server_rb.html">test_server.rb</a></td>
|
31
|
+
<td class='right_align'><tt>28</tt></td>
|
32
|
+
<td class='right_align'><tt>22</tt></td>
|
33
|
+
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
34
|
+
<div class="percent_graph">
|
35
|
+
<div class="covered" style="width:100px"></div>
|
36
|
+
<div class="uncovered" style="width:0px"></div>
|
37
|
+
</div></td>
|
38
|
+
<td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
|
39
|
+
<div class="percent_graph">
|
40
|
+
<div class="covered" style="width:100px"></div>
|
41
|
+
<div class="uncovered" style="width:0px"></div>
|
42
|
+
</div></td>
|
43
|
+
</tr>
|
44
|
+
</tbody>
|
45
|
+
</table>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<h3>Key</h3>
|
49
|
+
|
50
|
+
<div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div>
|
51
|
+
|
52
|
+
<h3>Coverage Details</h3>
|
53
|
+
|
54
|
+
<table class="details">
|
55
|
+
<tbody>
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
<tr class="marked">
|
60
|
+
<td><pre><a name="line1">1</a> require "xmlrpc/server"</pre></td>
|
61
|
+
</tr>
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
<tr class="inferred">
|
66
|
+
<td><pre><a name="line2">2</a> </pre></td>
|
67
|
+
</tr>
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
<tr class="marked">
|
72
|
+
<td><pre><a name="line3">3</a> class Num</pre></td>
|
73
|
+
</tr>
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
<tr class="marked">
|
78
|
+
<td><pre><a name="line4">4</a> INTERFACE = XMLRPC::interface("num") {</pre></td>
|
79
|
+
</tr>
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
<tr class="marked">
|
84
|
+
<td><pre><a name="line5">5</a> meth 'int add(int, int)', 'Add two numbers', 'add'</pre></td>
|
85
|
+
</tr>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<tr class="marked">
|
90
|
+
<td><pre><a name="line6">6</a> meth 'int div(int, int)', 'Divide two numbers'</pre></td>
|
91
|
+
</tr>
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
<tr class="inferred">
|
96
|
+
<td><pre><a name="line7">7</a> }</pre></td>
|
97
|
+
</tr>
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
<tr class="inferred">
|
102
|
+
<td><pre><a name="line8">8</a> </pre></td>
|
103
|
+
</tr>
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
<tr class="marked">
|
108
|
+
<td><pre><a name="line9">9</a> def add(a, b) a + b end</pre></td>
|
109
|
+
</tr>
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
<tr class="marked">
|
114
|
+
<td><pre><a name="line10">10</a> def div(a, b) a / b end</pre></td>
|
115
|
+
</tr>
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
<tr class="inferred">
|
120
|
+
<td><pre><a name="line11">11</a> end</pre></td>
|
121
|
+
</tr>
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
<tr class="inferred">
|
126
|
+
<td><pre><a name="line12">12</a> </pre></td>
|
127
|
+
</tr>
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
<tr class="inferred">
|
132
|
+
<td><pre><a name="line13">13</a> </pre></td>
|
133
|
+
</tr>
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
<tr class="marked">
|
138
|
+
<td><pre><a name="line14">14</a> class TestServer</pre></td>
|
139
|
+
</tr>
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
<tr class="marked">
|
144
|
+
<td><pre><a name="line15">15</a> def initialize</pre></td>
|
145
|
+
</tr>
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
<tr class="marked">
|
150
|
+
<td><pre><a name="line16">16</a> @server = XMLRPC::Server.new(8080, '127.0.0.1', 4, File.open('/dev/null','w')).tap do |s|</pre></td>
|
151
|
+
</tr>
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
<tr class="marked">
|
156
|
+
<td><pre><a name="line17">17</a> s.add_handler(Num::INTERFACE, Num.new)</pre></td>
|
157
|
+
</tr>
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
<tr class="inferred">
|
162
|
+
<td><pre><a name="line18">18</a> end</pre></td>
|
163
|
+
</tr>
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
<tr class="inferred">
|
168
|
+
<td><pre><a name="line19">19</a> end</pre></td>
|
169
|
+
</tr>
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
<tr class="inferred">
|
174
|
+
<td><pre><a name="line20">20</a> </pre></td>
|
175
|
+
</tr>
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
<tr class="marked">
|
180
|
+
<td><pre><a name="line21">21</a> def start</pre></td>
|
181
|
+
</tr>
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
<tr class="marked">
|
186
|
+
<td><pre><a name="line22">22</a> Thread.new { @server.serve }</pre></td>
|
187
|
+
</tr>
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
<tr class="inferred">
|
192
|
+
<td><pre><a name="line23">23</a> end</pre></td>
|
193
|
+
</tr>
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
<tr class="inferred">
|
198
|
+
<td><pre><a name="line24">24</a> </pre></td>
|
199
|
+
</tr>
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
<tr class="marked">
|
204
|
+
<td><pre><a name="line25">25</a> def stop</pre></td>
|
205
|
+
</tr>
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
<tr class="marked">
|
210
|
+
<td><pre><a name="line26">26</a> @server.shutdown</pre></td>
|
211
|
+
</tr>
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
<tr class="inferred">
|
216
|
+
<td><pre><a name="line27">27</a> end </pre></td>
|
217
|
+
</tr>
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
<tr class="inferred">
|
222
|
+
<td><pre><a name="line28">28</a> end</pre></td>
|
223
|
+
</tr>
|
224
|
+
|
225
|
+
</tbody>
|
226
|
+
</table>
|
227
|
+
|
228
|
+
<p>Generated on Thu Nov 25 12:29:31 +0100 2010 with <a href="http://github.com/relevance/rcov">rcov 0.9.8</a></p>
|
229
|
+
|
230
|
+
</body>
|
231
|
+
</html>
|
@@ -2,53 +2,22 @@ require 'functional_test_helper'
|
|
2
2
|
|
3
3
|
class FunctionalClientTest < FunctionalTest
|
4
4
|
test "Simple XMLRPC call" do
|
5
|
-
client = Rapuncel::Client.new :port => 8080, :raise_on => :both
|
6
|
-
proxy = client.proxy_for 'num'
|
7
|
-
|
8
|
-
result = proxy.add 40, 2
|
9
|
-
|
10
|
-
assert_equal 42, result
|
11
|
-
end
|
12
|
-
|
13
|
-
test "Fault rpc call without raise" do
|
14
5
|
client = Rapuncel::Client.new :port => 8080
|
15
6
|
proxy = client.proxy_for 'num'
|
16
7
|
|
17
|
-
|
18
|
-
proxy.add 20, 20, 2
|
19
|
-
end
|
8
|
+
result = proxy.add 40, 2
|
20
9
|
|
21
|
-
|
10
|
+
assert_equal 42, result
|
22
11
|
end
|
23
|
-
|
12
|
+
|
24
13
|
test "Fault rpc call" do
|
25
|
-
client = Rapuncel::Client.new :port => 8080
|
14
|
+
client = Rapuncel::Client.new :port => 8080
|
26
15
|
proxy = client.proxy_for 'num'
|
27
16
|
|
28
|
-
|
29
|
-
proxy.add 20, 20, 2
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
test "Error rpc connection" do
|
34
|
-
client = Rapuncel::Client.new :host => 'www.cice-online.net', :port => 80, :path => '/hullahoobahubbahooo', :raise_on => :both
|
35
|
-
proxy = client.proxy
|
17
|
+
result = proxy.add 20, 20, 2
|
36
18
|
|
37
|
-
|
38
|
-
proxy.foo :bar, :baz
|
39
|
-
end
|
19
|
+
assert_kind_of Rapuncel::Fault, result
|
40
20
|
end
|
41
21
|
|
42
|
-
|
43
|
-
client = Rapuncel::Client.new :host => 'www.google.de', :port => 80, :path => '/hullahoobahubbahooo'
|
44
|
-
proxy = client.proxy
|
45
|
-
|
46
|
-
assert_nothing_raised Rapuncel::Response::Error do
|
47
|
-
proxy.foo :bar, :baz
|
48
|
-
end
|
49
|
-
|
50
|
-
err = proxy.foo(:bar, :baz)
|
51
|
-
assert_kind_of Rapuncel::Response::Error, err
|
52
|
-
assert_equal 404, err.code
|
53
|
-
end
|
22
|
+
|
54
23
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require 'test_server'
|
3
3
|
|
4
|
-
class FunctionalTest < ActiveSupport::TestCase
|
4
|
+
class FunctionalTest < ActiveSupport::TestCase
|
5
5
|
def setup
|
6
6
|
@test_server = TestServer.new
|
7
7
|
@test_server.start
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def teardown
|
11
11
|
@test_server.stop
|
12
12
|
end
|
data/test/test_server.rb
CHANGED
@@ -1,28 +1,54 @@
|
|
1
1
|
require "xmlrpc/server"
|
2
|
+
require 'rubygems'
|
3
|
+
require 'faker'
|
2
4
|
|
3
5
|
class Num
|
4
6
|
INTERFACE = XMLRPC::interface("num") {
|
5
7
|
meth 'int add(int, int)', 'Add two numbers', 'add'
|
6
8
|
meth 'int div(int, int)', 'Divide two numbers'
|
9
|
+
meth 'int rows', "Return a bunch of hashes"
|
7
10
|
}
|
8
11
|
|
9
12
|
def add(a, b) a + b end
|
10
13
|
def div(a, b) a / b end
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@rows = []
|
17
|
+
|
18
|
+
10000.times do |i|
|
19
|
+
@rows << {
|
20
|
+
:first_name => Faker::Name.first_name,
|
21
|
+
:last_name => Faker::Name.last_name,
|
22
|
+
:street => Faker::Address.street_name,
|
23
|
+
:zip_code => Faker::Address.zip_code,
|
24
|
+
:city => Faker::Address.city,
|
25
|
+
:us_state => Faker::Address.us_state,
|
26
|
+
:company => Faker::Company.name
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def rows
|
33
|
+
@rows
|
34
|
+
end
|
11
35
|
end
|
12
36
|
|
13
37
|
|
14
38
|
class TestServer
|
39
|
+
attr_accessor :server
|
40
|
+
|
15
41
|
def initialize
|
16
42
|
@server = XMLRPC::Server.new(8080, '127.0.0.1', 4, File.open('/dev/null','w')).tap do |s|
|
17
43
|
s.add_handler(Num::INTERFACE, Num.new)
|
18
44
|
end
|
19
45
|
end
|
20
|
-
|
46
|
+
|
21
47
|
def start
|
22
48
|
Thread.new { @server.serve }
|
23
49
|
end
|
24
|
-
|
50
|
+
|
25
51
|
def stop
|
26
52
|
@server.shutdown
|
27
|
-
end
|
53
|
+
end
|
28
54
|
end
|
data/test/unit/array_test.rb
CHANGED
@@ -8,37 +8,37 @@ class ArrayTest < ActiveSupport::TestCase
|
|
8
8
|
|
9
9
|
assert_select xml, '/array/data/value', 10
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def test_array arr
|
13
13
|
xml = arr.to_xml_rpc
|
14
|
-
|
14
|
+
|
15
15
|
xml_node = Nokogiri::XML(xml).children.first
|
16
|
-
|
16
|
+
|
17
17
|
reparsed = Array.from_xml_rpc xml_node
|
18
|
-
|
18
|
+
|
19
19
|
reparsed
|
20
20
|
end
|
21
|
-
|
22
|
-
|
21
|
+
|
22
|
+
|
23
23
|
test "An array, converted to xml and parsed back should be itself" do
|
24
24
|
arr1 = (1..10).to_a
|
25
25
|
arr2 = arr1.map &:to_s
|
26
|
-
|
26
|
+
|
27
27
|
arr3 = [arr1, arr2]
|
28
|
-
|
28
|
+
|
29
29
|
arr4 = ["hello", arr3]
|
30
|
-
|
30
|
+
|
31
31
|
reparsed1 = test_array arr1
|
32
32
|
reparsed2 = test_array arr2
|
33
33
|
reparsed3 = test_array arr3
|
34
34
|
reparsed4 = test_array arr4
|
35
|
-
|
35
|
+
|
36
36
|
[reparsed1, reparsed2, reparsed3, reparsed4].zip([arr1, arr2, arr3, arr4]).each do |b|
|
37
37
|
assert_equal *b
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
test "real world repsonse" do
|
43
43
|
response_body = <<-XML
|
44
44
|
<array><data>
|
@@ -86,9 +86,9 @@ class ArrayTest < ActiveSupport::TestCase
|
|
86
86
|
</struct></value>
|
87
87
|
</data></array>
|
88
88
|
XML
|
89
|
-
|
89
|
+
|
90
90
|
arr = Object.from_xml_rpc response_body
|
91
|
-
|
91
|
+
|
92
92
|
assert_kind_of Array, arr
|
93
93
|
assert_equal 3, arr.size
|
94
94
|
end
|
data/test/unit/boolean_test.rb
CHANGED
@@ -11,24 +11,24 @@ class BooleanTest < ActiveSupport::TestCase
|
|
11
11
|
assert_select false.to_xml_rpc, '/boolean', 1
|
12
12
|
assert_select false.to_xml_rpc, '/boolean', '0'
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
test "true.to_xml_rpc reparsed must be true" do
|
16
16
|
xml=true.to_xml_rpc
|
17
17
|
xml_node = Nokogiri::XML(xml).children.first
|
18
|
-
|
18
|
+
|
19
19
|
assert Rapuncel::Boolean.from_xml_rpc(xml_node) #I assume assert takes a boolean?
|
20
20
|
assert Rapuncel::Boolean.from_xml_rpc(xml_node) == true #is this different? just in case the other function gives back something non nil/false which is not necessarily true
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
test "false.to_xml_rpc reparsed must be false" do
|
24
24
|
xml=false.to_xml_rpc
|
25
25
|
xml_node = Nokogiri::XML(xml).children.first
|
26
|
-
|
26
|
+
|
27
27
|
assert !Rapuncel::Boolean.from_xml_rpc(xml_node)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
test "anything else should evaluate to what now?" do
|
31
31
|
assert true
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
end
|