ruby-contract 0.1.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/COPYING +56 -0
- data/Manifest +85 -0
- data/README +32 -0
- data/TODO +83 -0
- data/doc/classes/Contract.html +599 -0
- data/doc/classes/Contract/Check.html +229 -0
- data/doc/classes/Contract/Check/All.html +172 -0
- data/doc/classes/Contract/Check/Any.html +172 -0
- data/doc/classes/Contract/Check/Block.html +172 -0
- data/doc/classes/Contract/Check/None.html +173 -0
- data/doc/classes/Contract/Check/Quack.html +172 -0
- data/doc/classes/Contract/ContractError.html +151 -0
- data/doc/classes/Contract/ContractException.html +162 -0
- data/doc/classes/Contract/ContractMismatch.html +134 -0
- data/doc/classes/Kernel.html +256 -0
- data/doc/classes/Method.html +135 -0
- data/doc/classes/MethodSignatureMixin.html +208 -0
- data/doc/classes/Module.html +526 -0
- data/doc/created.rid +1 -0
- data/doc/dot/f_0.dot +14 -0
- data/doc/dot/f_0.png +0 -0
- data/doc/dot/f_1.dot +14 -0
- data/doc/dot/f_1.png +0 -0
- data/doc/dot/f_2.dot +14 -0
- data/doc/dot/f_2.png +0 -0
- data/doc/dot/f_3.dot +112 -0
- data/doc/dot/f_3.png +0 -0
- data/doc/dot/f_4.dot +62 -0
- data/doc/dot/f_4.png +0 -0
- data/doc/dot/f_5.dot +62 -0
- data/doc/dot/f_5.png +0 -0
- data/doc/dot/f_6.dot +224 -0
- data/doc/dot/f_6.png +0 -0
- data/doc/dot/f_6_0.dot +24 -0
- data/doc/dot/f_6_0.png +0 -0
- data/doc/dot/f_6_1.dot +24 -0
- data/doc/dot/f_6_1.png +0 -0
- data/doc/dot/f_7.dot +62 -0
- data/doc/dot/f_7.png +0 -0
- data/doc/files/COPYING.html +168 -0
- data/doc/files/README.html +146 -0
- data/doc/files/TODO.html +240 -0
- data/doc/files/lib/contract/assertions_rb.html +118 -0
- data/doc/files/lib/contract/exception_rb.html +125 -0
- data/doc/files/lib/contract/integration_rb.html +130 -0
- data/doc/files/lib/contract/overrides_rb.html +118 -0
- data/doc/files/lib/contract_rb.html +127 -0
- data/doc/fr_class_index.html +40 -0
- data/doc/fr_file_index.html +34 -0
- data/doc/fr_method_index.html +45 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/contract.rb +146 -0
- data/lib/contract/assertions.rb +42 -0
- data/lib/contract/exception.rb +95 -0
- data/lib/contract/integration.rb +664 -0
- data/lib/contract/overrides.rb +41 -0
- data/setup.rb +1360 -0
- data/test/coverage/_-lib-contract-assertions_rb.html +526 -0
- data/test/coverage/_-lib-contract-exception_rb.html +632 -0
- data/test/coverage/_-lib-contract-integration_rb.html +1450 -0
- data/test/coverage/_-lib-contract-overrides_rb.html +524 -0
- data/test/coverage/_-lib-contract_rb.html +724 -0
- data/test/coverage/__-lib-contract-assertions_rb.html +484 -0
- data/test/coverage/__-lib-contract-exception_rb.html +537 -0
- data/test/coverage/__-lib-contract-integration_rb.html +946 -0
- data/test/coverage/__-lib-contract-overrides_rb.html +483 -0
- data/test/coverage/__-lib-contract_rb.html +583 -0
- data/test/coverage/index.html +93 -0
- data/test/tc_all.rb +8 -0
- data/test/tc_contract.rb +109 -0
- data/test/tc_exception.rb +43 -0
- data/test/tc_integration.rb +357 -0
- metadata +136 -0
@@ -0,0 +1,537 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-15"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
5
|
+
<head><title>../lib/contract/exception.rb - coverage</title>
|
6
|
+
<style type="text/css">body {
|
7
|
+
background-color: rgb(180, 180, 180);
|
8
|
+
}
|
9
|
+
span.marked {
|
10
|
+
background-color: rgb(185, 200, 200);
|
11
|
+
display: block;
|
12
|
+
}
|
13
|
+
span.inferred {
|
14
|
+
background-color: rgb(180, 195, 195);
|
15
|
+
display: block;
|
16
|
+
}
|
17
|
+
span.run0 {
|
18
|
+
background-color: rgb(178, 204, 255);
|
19
|
+
display: block;
|
20
|
+
}
|
21
|
+
span.run1 {
|
22
|
+
background-color: rgb(178, 206, 255);
|
23
|
+
display: block;
|
24
|
+
}
|
25
|
+
span.run2 {
|
26
|
+
background-color: rgb(178, 209, 255);
|
27
|
+
display: block;
|
28
|
+
}
|
29
|
+
span.run3 {
|
30
|
+
background-color: rgb(178, 211, 255);
|
31
|
+
display: block;
|
32
|
+
}
|
33
|
+
span.run4 {
|
34
|
+
background-color: rgb(178, 214, 255);
|
35
|
+
display: block;
|
36
|
+
}
|
37
|
+
span.run5 {
|
38
|
+
background-color: rgb(178, 218, 255);
|
39
|
+
display: block;
|
40
|
+
}
|
41
|
+
span.run6 {
|
42
|
+
background-color: rgb(178, 220, 255);
|
43
|
+
display: block;
|
44
|
+
}
|
45
|
+
span.run7 {
|
46
|
+
background-color: rgb(178, 223, 255);
|
47
|
+
display: block;
|
48
|
+
}
|
49
|
+
span.run8 {
|
50
|
+
background-color: rgb(178, 225, 255);
|
51
|
+
display: block;
|
52
|
+
}
|
53
|
+
span.run9 {
|
54
|
+
background-color: rgb(178, 228, 255);
|
55
|
+
display: block;
|
56
|
+
}
|
57
|
+
span.run10 {
|
58
|
+
background-color: rgb(178, 232, 255);
|
59
|
+
display: block;
|
60
|
+
}
|
61
|
+
span.run11 {
|
62
|
+
background-color: rgb(178, 234, 255);
|
63
|
+
display: block;
|
64
|
+
}
|
65
|
+
span.run12 {
|
66
|
+
background-color: rgb(178, 237, 255);
|
67
|
+
display: block;
|
68
|
+
}
|
69
|
+
span.run13 {
|
70
|
+
background-color: rgb(178, 239, 255);
|
71
|
+
display: block;
|
72
|
+
}
|
73
|
+
span.run14 {
|
74
|
+
background-color: rgb(178, 242, 255);
|
75
|
+
display: block;
|
76
|
+
}
|
77
|
+
span.run15 {
|
78
|
+
background-color: rgb(178, 246, 255);
|
79
|
+
display: block;
|
80
|
+
}
|
81
|
+
span.run16 {
|
82
|
+
background-color: rgb(178, 248, 255);
|
83
|
+
display: block;
|
84
|
+
}
|
85
|
+
span.run17 {
|
86
|
+
background-color: rgb(178, 251, 255);
|
87
|
+
display: block;
|
88
|
+
}
|
89
|
+
span.run18 {
|
90
|
+
background-color: rgb(178, 253, 255);
|
91
|
+
display: block;
|
92
|
+
}
|
93
|
+
span.run19 {
|
94
|
+
background-color: rgb(178, 255, 253);
|
95
|
+
display: block;
|
96
|
+
}
|
97
|
+
span.run20 {
|
98
|
+
background-color: rgb(178, 255, 249);
|
99
|
+
display: block;
|
100
|
+
}
|
101
|
+
span.run21 {
|
102
|
+
background-color: rgb(178, 255, 247);
|
103
|
+
display: block;
|
104
|
+
}
|
105
|
+
span.run22 {
|
106
|
+
background-color: rgb(178, 255, 244);
|
107
|
+
display: block;
|
108
|
+
}
|
109
|
+
span.run23 {
|
110
|
+
background-color: rgb(178, 255, 242);
|
111
|
+
display: block;
|
112
|
+
}
|
113
|
+
span.run24 {
|
114
|
+
background-color: rgb(178, 255, 239);
|
115
|
+
display: block;
|
116
|
+
}
|
117
|
+
span.run25 {
|
118
|
+
background-color: rgb(178, 255, 235);
|
119
|
+
display: block;
|
120
|
+
}
|
121
|
+
span.run26 {
|
122
|
+
background-color: rgb(178, 255, 233);
|
123
|
+
display: block;
|
124
|
+
}
|
125
|
+
span.run27 {
|
126
|
+
background-color: rgb(178, 255, 230);
|
127
|
+
display: block;
|
128
|
+
}
|
129
|
+
span.run28 {
|
130
|
+
background-color: rgb(178, 255, 228);
|
131
|
+
display: block;
|
132
|
+
}
|
133
|
+
span.run29 {
|
134
|
+
background-color: rgb(178, 255, 225);
|
135
|
+
display: block;
|
136
|
+
}
|
137
|
+
span.run30 {
|
138
|
+
background-color: rgb(178, 255, 221);
|
139
|
+
display: block;
|
140
|
+
}
|
141
|
+
span.run31 {
|
142
|
+
background-color: rgb(178, 255, 219);
|
143
|
+
display: block;
|
144
|
+
}
|
145
|
+
span.run32 {
|
146
|
+
background-color: rgb(178, 255, 216);
|
147
|
+
display: block;
|
148
|
+
}
|
149
|
+
span.run33 {
|
150
|
+
background-color: rgb(178, 255, 214);
|
151
|
+
display: block;
|
152
|
+
}
|
153
|
+
span.run34 {
|
154
|
+
background-color: rgb(178, 255, 211);
|
155
|
+
display: block;
|
156
|
+
}
|
157
|
+
span.run35 {
|
158
|
+
background-color: rgb(178, 255, 207);
|
159
|
+
display: block;
|
160
|
+
}
|
161
|
+
span.run36 {
|
162
|
+
background-color: rgb(178, 255, 205);
|
163
|
+
display: block;
|
164
|
+
}
|
165
|
+
span.run37 {
|
166
|
+
background-color: rgb(178, 255, 202);
|
167
|
+
display: block;
|
168
|
+
}
|
169
|
+
span.run38 {
|
170
|
+
background-color: rgb(178, 255, 200);
|
171
|
+
display: block;
|
172
|
+
}
|
173
|
+
span.run39 {
|
174
|
+
background-color: rgb(178, 255, 197);
|
175
|
+
display: block;
|
176
|
+
}
|
177
|
+
span.run40 {
|
178
|
+
background-color: rgb(178, 255, 193);
|
179
|
+
display: block;
|
180
|
+
}
|
181
|
+
span.run41 {
|
182
|
+
background-color: rgb(178, 255, 191);
|
183
|
+
display: block;
|
184
|
+
}
|
185
|
+
span.run42 {
|
186
|
+
background-color: rgb(178, 255, 188);
|
187
|
+
display: block;
|
188
|
+
}
|
189
|
+
span.run43 {
|
190
|
+
background-color: rgb(178, 255, 186);
|
191
|
+
display: block;
|
192
|
+
}
|
193
|
+
span.run44 {
|
194
|
+
background-color: rgb(178, 255, 183);
|
195
|
+
display: block;
|
196
|
+
}
|
197
|
+
span.run45 {
|
198
|
+
background-color: rgb(178, 255, 179);
|
199
|
+
display: block;
|
200
|
+
}
|
201
|
+
span.run46 {
|
202
|
+
background-color: rgb(179, 255, 178);
|
203
|
+
display: block;
|
204
|
+
}
|
205
|
+
span.run47 {
|
206
|
+
background-color: rgb(182, 255, 178);
|
207
|
+
display: block;
|
208
|
+
}
|
209
|
+
span.run48 {
|
210
|
+
background-color: rgb(184, 255, 178);
|
211
|
+
display: block;
|
212
|
+
}
|
213
|
+
span.run49 {
|
214
|
+
background-color: rgb(187, 255, 178);
|
215
|
+
display: block;
|
216
|
+
}
|
217
|
+
span.run50 {
|
218
|
+
background-color: rgb(191, 255, 178);
|
219
|
+
display: block;
|
220
|
+
}
|
221
|
+
span.run51 {
|
222
|
+
background-color: rgb(193, 255, 178);
|
223
|
+
display: block;
|
224
|
+
}
|
225
|
+
span.run52 {
|
226
|
+
background-color: rgb(196, 255, 178);
|
227
|
+
display: block;
|
228
|
+
}
|
229
|
+
span.run53 {
|
230
|
+
background-color: rgb(198, 255, 178);
|
231
|
+
display: block;
|
232
|
+
}
|
233
|
+
span.run54 {
|
234
|
+
background-color: rgb(201, 255, 178);
|
235
|
+
display: block;
|
236
|
+
}
|
237
|
+
span.run55 {
|
238
|
+
background-color: rgb(205, 255, 178);
|
239
|
+
display: block;
|
240
|
+
}
|
241
|
+
span.run56 {
|
242
|
+
background-color: rgb(207, 255, 178);
|
243
|
+
display: block;
|
244
|
+
}
|
245
|
+
span.run57 {
|
246
|
+
background-color: rgb(210, 255, 178);
|
247
|
+
display: block;
|
248
|
+
}
|
249
|
+
span.run58 {
|
250
|
+
background-color: rgb(212, 255, 178);
|
251
|
+
display: block;
|
252
|
+
}
|
253
|
+
span.run59 {
|
254
|
+
background-color: rgb(215, 255, 178);
|
255
|
+
display: block;
|
256
|
+
}
|
257
|
+
span.run60 {
|
258
|
+
background-color: rgb(219, 255, 178);
|
259
|
+
display: block;
|
260
|
+
}
|
261
|
+
span.run61 {
|
262
|
+
background-color: rgb(221, 255, 178);
|
263
|
+
display: block;
|
264
|
+
}
|
265
|
+
span.run62 {
|
266
|
+
background-color: rgb(224, 255, 178);
|
267
|
+
display: block;
|
268
|
+
}
|
269
|
+
span.run63 {
|
270
|
+
background-color: rgb(226, 255, 178);
|
271
|
+
display: block;
|
272
|
+
}
|
273
|
+
span.run64 {
|
274
|
+
background-color: rgb(229, 255, 178);
|
275
|
+
display: block;
|
276
|
+
}
|
277
|
+
span.run65 {
|
278
|
+
background-color: rgb(233, 255, 178);
|
279
|
+
display: block;
|
280
|
+
}
|
281
|
+
span.run66 {
|
282
|
+
background-color: rgb(235, 255, 178);
|
283
|
+
display: block;
|
284
|
+
}
|
285
|
+
span.run67 {
|
286
|
+
background-color: rgb(238, 255, 178);
|
287
|
+
display: block;
|
288
|
+
}
|
289
|
+
span.run68 {
|
290
|
+
background-color: rgb(240, 255, 178);
|
291
|
+
display: block;
|
292
|
+
}
|
293
|
+
span.run69 {
|
294
|
+
background-color: rgb(243, 255, 178);
|
295
|
+
display: block;
|
296
|
+
}
|
297
|
+
span.run70 {
|
298
|
+
background-color: rgb(247, 255, 178);
|
299
|
+
display: block;
|
300
|
+
}
|
301
|
+
span.run71 {
|
302
|
+
background-color: rgb(249, 255, 178);
|
303
|
+
display: block;
|
304
|
+
}
|
305
|
+
span.run72 {
|
306
|
+
background-color: rgb(252, 255, 178);
|
307
|
+
display: block;
|
308
|
+
}
|
309
|
+
span.run73 {
|
310
|
+
background-color: rgb(255, 255, 178);
|
311
|
+
display: block;
|
312
|
+
}
|
313
|
+
span.run74 {
|
314
|
+
background-color: rgb(255, 252, 178);
|
315
|
+
display: block;
|
316
|
+
}
|
317
|
+
span.run75 {
|
318
|
+
background-color: rgb(255, 248, 178);
|
319
|
+
display: block;
|
320
|
+
}
|
321
|
+
span.run76 {
|
322
|
+
background-color: rgb(255, 246, 178);
|
323
|
+
display: block;
|
324
|
+
}
|
325
|
+
span.run77 {
|
326
|
+
background-color: rgb(255, 243, 178);
|
327
|
+
display: block;
|
328
|
+
}
|
329
|
+
span.run78 {
|
330
|
+
background-color: rgb(255, 240, 178);
|
331
|
+
display: block;
|
332
|
+
}
|
333
|
+
span.run79 {
|
334
|
+
background-color: rgb(255, 238, 178);
|
335
|
+
display: block;
|
336
|
+
}
|
337
|
+
span.run80 {
|
338
|
+
background-color: rgb(255, 234, 178);
|
339
|
+
display: block;
|
340
|
+
}
|
341
|
+
span.run81 {
|
342
|
+
background-color: rgb(255, 232, 178);
|
343
|
+
display: block;
|
344
|
+
}
|
345
|
+
span.run82 {
|
346
|
+
background-color: rgb(255, 229, 178);
|
347
|
+
display: block;
|
348
|
+
}
|
349
|
+
span.run83 {
|
350
|
+
background-color: rgb(255, 226, 178);
|
351
|
+
display: block;
|
352
|
+
}
|
353
|
+
span.run84 {
|
354
|
+
background-color: rgb(255, 224, 178);
|
355
|
+
display: block;
|
356
|
+
}
|
357
|
+
span.run85 {
|
358
|
+
background-color: rgb(255, 220, 178);
|
359
|
+
display: block;
|
360
|
+
}
|
361
|
+
span.run86 {
|
362
|
+
background-color: rgb(255, 218, 178);
|
363
|
+
display: block;
|
364
|
+
}
|
365
|
+
span.run87 {
|
366
|
+
background-color: rgb(255, 215, 178);
|
367
|
+
display: block;
|
368
|
+
}
|
369
|
+
span.run88 {
|
370
|
+
background-color: rgb(255, 212, 178);
|
371
|
+
display: block;
|
372
|
+
}
|
373
|
+
span.run89 {
|
374
|
+
background-color: rgb(255, 210, 178);
|
375
|
+
display: block;
|
376
|
+
}
|
377
|
+
span.run90 {
|
378
|
+
background-color: rgb(255, 206, 178);
|
379
|
+
display: block;
|
380
|
+
}
|
381
|
+
span.run91 {
|
382
|
+
background-color: rgb(255, 204, 178);
|
383
|
+
display: block;
|
384
|
+
}
|
385
|
+
span.run92 {
|
386
|
+
background-color: rgb(255, 201, 178);
|
387
|
+
display: block;
|
388
|
+
}
|
389
|
+
span.run93 {
|
390
|
+
background-color: rgb(255, 198, 178);
|
391
|
+
display: block;
|
392
|
+
}
|
393
|
+
span.run94 {
|
394
|
+
background-color: rgb(255, 196, 178);
|
395
|
+
display: block;
|
396
|
+
}
|
397
|
+
span.run95 {
|
398
|
+
background-color: rgb(255, 192, 178);
|
399
|
+
display: block;
|
400
|
+
}
|
401
|
+
span.run96 {
|
402
|
+
background-color: rgb(255, 189, 178);
|
403
|
+
display: block;
|
404
|
+
}
|
405
|
+
span.run97 {
|
406
|
+
background-color: rgb(255, 187, 178);
|
407
|
+
display: block;
|
408
|
+
}
|
409
|
+
span.run98 {
|
410
|
+
background-color: rgb(255, 184, 178);
|
411
|
+
display: block;
|
412
|
+
}
|
413
|
+
span.run99 {
|
414
|
+
background-color: rgb(255, 182, 178);
|
415
|
+
display: block;
|
416
|
+
}
|
417
|
+
|
418
|
+
div.overview {
|
419
|
+
border-bottom: 8px solid black;
|
420
|
+
}
|
421
|
+
</style></head>
|
422
|
+
<body><div class="overview">
|
423
|
+
<table>
|
424
|
+
<tr><td>filename</td><td><tt>../lib/contract/exception.rb</tt></td></tr>
|
425
|
+
<tr><td>total coverage</td><td>100.0</td></tr>
|
426
|
+
<tr><td>code coverage</td><td>100.0</td></tr>
|
427
|
+
</table>
|
428
|
+
</div>
|
429
|
+
<pre><span class="inferred"> 1 # This file contains things needed to map Test::Unit status objects to
|
430
|
+
2 # Exceptions, Exception related infrastructure and similar things.
|
431
|
+
3 #
|
432
|
+
4 # See Contract::ContractException, Contract::ContractMismatch and
|
433
|
+
5 # Contract::ContractError.
|
434
|
+
6
|
435
|
+
7
|
436
|
+
</span><span class="marked"> 8 class Contract < Test::Unit::TestCase
|
437
|
+
</span><span class="inferred"> 9 # Exceptions raised by Contract contain some useful meta-information.
|
438
|
+
10 # This module is mixed into Exceptions that provide such information.
|
439
|
+
</span><span class="marked">11 module ContractException
|
440
|
+
</span><span class="inferred">12 def ce_initialize(original_message, backtrace, test_object,
|
441
|
+
</span><span class="marked">13 test_method, test_contract, *more) # :nodoc:
|
442
|
+
14 @original_message = original_message
|
443
|
+
15 message = original_message.dup
|
444
|
+
16 detail = " for #{test_object.inspect} in " +
|
445
|
+
</span><span class="inferred">17 "#{test_contract.inspect}"
|
446
|
+
</span><span class="marked">18 message[/(\s*)[.!?]?\s*\Z/, 1] = detail
|
447
|
+
19 Exception.instance_method(:initialize).bind(self).call(message)
|
448
|
+
</span><span class="inferred">20
|
449
|
+
</span><span class="marked">21 set_backtrace(backtrace)
|
450
|
+
22 @test_object = test_object
|
451
|
+
23 @test_method = test_method
|
452
|
+
24 @test_contract = test_contract
|
453
|
+
</span><span class="inferred">25 end
|
454
|
+
</span><span class="marked">26 private :ce_initialize
|
455
|
+
</span><span class="inferred">27
|
456
|
+
28 # What object was tested when this Exception was raised?
|
457
|
+
</span><span class="marked">29 attr_reader :test_object
|
458
|
+
</span><span class="inferred">30 # What method implemented that test?
|
459
|
+
</span><span class="marked">31 attr_reader :test_method
|
460
|
+
</span><span class="inferred">32 # What contract was that method part of?
|
461
|
+
</span><span class="marked">33 attr_reader :test_contract
|
462
|
+
</span><span class="inferred">34 # The original, unfiltered exception message.
|
463
|
+
</span><span class="marked">35 attr_reader :original_message
|
464
|
+
</span><span class="inferred">36 end
|
465
|
+
37
|
466
|
+
38 # Represents a failed test in a contract. This means that an object
|
467
|
+
39 # simply does not fulfill one of the parts of a contract. Subclass of
|
468
|
+
40 # TypeError.
|
469
|
+
</span><span class="marked">41 class ContractMismatch < TypeError
|
470
|
+
42 def initialize(*args) # :nodoc:
|
471
|
+
43 ce_initialize(*args)
|
472
|
+
</span><span class="inferred">44 end
|
473
|
+
45
|
474
|
+
</span><span class="marked">46 include ContractException
|
475
|
+
</span><span class="inferred">47 end
|
476
|
+
48
|
477
|
+
49 # Represents an unexpected failure while processing a contract test.
|
478
|
+
50 # This is more critical than ContractMismatch and usually means that
|
479
|
+
51 # something is wrong with the test itself.
|
480
|
+
</span><span class="marked">52 class ContractError < StandardError
|
481
|
+
53 def initialize(*args) # :nodoc:
|
482
|
+
54 @type = args.pop
|
483
|
+
55 ce_initialize(*args)
|
484
|
+
</span><span class="inferred">56 end
|
485
|
+
57
|
486
|
+
58 # The type of the original Exception that triggered the unexpected
|
487
|
+
59 # failure.
|
488
|
+
</span><span class="marked">60 attr_reader :type
|
489
|
+
</span><span class="inferred">61
|
490
|
+
</span><span class="marked">62 include ContractException
|
491
|
+
</span><span class="inferred">63 end
|
492
|
+
64
|
493
|
+
65
|
494
|
+
66 # Maps a Test::Unit::Failure instance to an actual Exception with the
|
495
|
+
67 # specified meta data.
|
496
|
+
</span><span class="marked">68 def self.failure_to_exception(failure, object, contract) # :nodoc:
|
497
|
+
69 ContractMismatch.new(failure.message, failure.location, object,
|
498
|
+
</span><span class="inferred">70 extract_method_name(failure.test_name), contract)
|
499
|
+
71 end
|
500
|
+
72
|
501
|
+
73 # Maps a Test::Unit::Error instance to an actual Exception with the
|
502
|
+
74 # specified meta data.
|
503
|
+
</span><span class="marked">75 def self.error_to_exception(error, object, contract) # :nodoc:
|
504
|
+
76 original = error.exception
|
505
|
+
77 ContractError.new(original.message, original.backtrace, object,
|
506
|
+
</span><span class="inferred">78 extract_method_name(error.test_name), contract, original.class)
|
507
|
+
79 end
|
508
|
+
80
|
509
|
+
81 # Maps a Test::Unit fault (either a Failure or Error) to an actual
|
510
|
+
82 # exception with the specified meta data.
|
511
|
+
</span><span class="marked">83 def self.fault_to_exception(fault, *args) # :nodoc:
|
512
|
+
84 if fault.is_a?(Test::Unit::Failure) then
|
513
|
+
85 failure_to_exception(fault, *args)
|
514
|
+
</span><span class="inferred">86 else
|
515
|
+
</span><span class="marked">87 error_to_exception(fault, *args)
|
516
|
+
</span><span class="inferred">88 end
|
517
|
+
89 end
|
518
|
+
90
|
519
|
+
91 # Extracts the method name from a Test::Unit test_name style String.
|
520
|
+
</span><span class="marked">92 def self.extract_method_name(test_name) # :nodoc:
|
521
|
+
93 test_name[/\A(.+?)\(.+?\)\Z/, 1]
|
522
|
+
</span><span class="inferred">94 end
|
523
|
+
95 end
|
524
|
+
</span></pre>
|
525
|
+
<hr />
|
526
|
+
<p>
|
527
|
+
<a href="http://validator.w3.org/check/referer">
|
528
|
+
<img src="http://www.w3.org/Icons/valid-xhtml11"
|
529
|
+
alt="Valid XHTML 1.1!" height="31" width="88" />
|
530
|
+
</a>
|
531
|
+
<a href="http://jigsaw.w3.org/css-validator/">
|
532
|
+
<img style="border:0;width:88px;height:31px"
|
533
|
+
src="http://jigsaw.w3.org/css-validator/images/vcss"
|
534
|
+
alt="Valid CSS!" />
|
535
|
+
</a>
|
536
|
+
</p>
|
537
|
+
</body></html>
|