rspec 1.1.2 → 1.1.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 (96) hide show
  1. data/CHANGES +17 -0
  2. data/Rakefile +7 -4
  3. data/failing_examples/README.txt +7 -0
  4. data/failing_examples/diffing_spec.rb +36 -0
  5. data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
  6. data/failing_examples/failure_in_setup.rb +10 -0
  7. data/failing_examples/failure_in_teardown.rb +10 -0
  8. data/failing_examples/mocking_example.rb +40 -0
  9. data/failing_examples/mocking_with_flexmock.rb +26 -0
  10. data/failing_examples/mocking_with_mocha.rb +25 -0
  11. data/failing_examples/mocking_with_rr.rb +27 -0
  12. data/failing_examples/partial_mock_example.rb +20 -0
  13. data/failing_examples/predicate_example.rb +29 -0
  14. data/failing_examples/raising_example.rb +47 -0
  15. data/failing_examples/spec_helper.rb +3 -0
  16. data/failing_examples/syntax_error_example.rb +7 -0
  17. data/failing_examples/team_spec.rb +44 -0
  18. data/failing_examples/timeout_behaviour.rb +7 -0
  19. data/lib/autotest/rspec.rb +21 -35
  20. data/lib/spec.rb +0 -7
  21. data/lib/spec/example/example_group_methods.rb +10 -4
  22. data/lib/spec/example/example_methods.rb +4 -0
  23. data/lib/spec/interop/test.rb +3 -1
  24. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +1 -0
  25. data/lib/spec/matchers/raise_error.rb +19 -15
  26. data/lib/spec/runner.rb +14 -0
  27. data/lib/spec/runner/formatter/story/html_formatter.rb +3 -0
  28. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +4 -1
  29. data/lib/spec/runner/option_parser.rb +5 -33
  30. data/lib/spec/runner/options.rb +51 -18
  31. data/lib/spec/runner/spec_parser.rb +49 -31
  32. data/lib/spec/story/runner.rb +0 -2
  33. data/lib/spec/story/step.rb +8 -6
  34. data/lib/spec/story/world.rb +1 -0
  35. data/lib/spec/version.rb +22 -22
  36. data/pre_commit/lib/pre_commit.rb +4 -0
  37. data/pre_commit/lib/pre_commit/core.rb +50 -0
  38. data/pre_commit/lib/pre_commit/pre_commit.rb +54 -0
  39. data/pre_commit/lib/pre_commit/rspec.rb +111 -0
  40. data/pre_commit/lib/pre_commit/rspec_on_rails.rb +313 -0
  41. data/pre_commit/spec/pre_commit/pre_commit_spec.rb +15 -0
  42. data/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb +36 -0
  43. data/pre_commit/spec/spec_helper.rb +3 -0
  44. data/pre_commit/spec/spec_suite.rb +11 -0
  45. data/rake_tasks/examples.rake +7 -0
  46. data/rake_tasks/examples_with_rcov.rake +9 -0
  47. data/rake_tasks/failing_examples_with_html.rake +9 -0
  48. data/rake_tasks/verify_rcov.rake +7 -0
  49. data/spec/README.jruby +15 -0
  50. data/spec/autotest/rspec_spec.rb +11 -80
  51. data/spec/autotest_helper.rb +2 -1
  52. data/spec/autotest_matchers.rb +47 -0
  53. data/spec/rspec_suite.rb +1 -1
  54. data/spec/spec.opts +6 -0
  55. data/spec/spec/example/example_group_methods_spec.rb +11 -2
  56. data/spec/spec/example/example_methods_spec.rb +69 -56
  57. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  58. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  59. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  60. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  61. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  62. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  63. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  64. data/spec/spec/interop/test/unit/spec_spec.rb +45 -0
  65. data/spec/spec/interop/test/unit/testcase_spec.rb +39 -4
  66. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +1 -1
  67. data/spec/spec/matchers/raise_error_spec.rb +7 -1
  68. data/spec/spec/mocks/bug_report_10263.rb +1 -1
  69. data/spec/spec/runner/command_line_spec.rb +3 -2
  70. data/spec/spec/runner/empty_file.txt +0 -0
  71. data/spec/spec/runner/examples.txt +2 -0
  72. data/spec/spec/runner/failed.txt +3 -0
  73. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  74. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  75. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  76. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  77. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +365 -0
  78. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +54 -54
  79. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  80. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +365 -0
  81. data/spec/spec/runner/option_parser_spec.rb +50 -49
  82. data/spec/spec/runner/options_spec.rb +72 -2
  83. data/spec/spec/runner/resources/a_bar.rb +0 -0
  84. data/spec/spec/runner/resources/a_foo.rb +0 -0
  85. data/spec/spec/runner/resources/a_spec.rb +1 -0
  86. data/spec/spec/runner/spec.opts +2 -0
  87. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  88. data/spec/spec/runner/spec_parser_spec.rb +31 -76
  89. data/spec/spec/runner/spec_spaced.opts +2 -0
  90. data/spec/spec/spec_classes.rb +4 -0
  91. data/spec/spec/story/step_spec.rb +22 -0
  92. data/spec/spec/story/world_spec.rb +7 -0
  93. data/stories/interop/test_case_with_should_methods +1 -1
  94. metadata +85 -5
  95. data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +0 -20
  96. data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +0 -34
@@ -16,7 +16,7 @@ module Spec
16
16
  @options.stub!(:backtrace_tweaker).and_return(@tweaker)
17
17
  @formatter = PlainTextFormatter.new(@options, @out)
18
18
  end
19
-
19
+
20
20
  it 'should summarize the number of scenarios when the run ends' do
21
21
  # when
22
22
  @formatter.run_started(3)
@@ -27,11 +27,11 @@ module Spec
27
27
  @formatter.scenario_started(nil, nil)
28
28
  @formatter.scenario_succeeded('story', 'scenario3')
29
29
  @formatter.run_ended
30
-
30
+
31
31
  # then
32
32
  @out.string.should include('3 scenarios')
33
33
  end
34
-
34
+
35
35
  it 'should summarize the number of successful scenarios when the run ends' do
36
36
  # when
37
37
  @formatter.run_started(3)
@@ -42,11 +42,11 @@ module Spec
42
42
  @formatter.scenario_started(nil, nil)
43
43
  @formatter.scenario_succeeded('story', 'scenario3')
44
44
  @formatter.run_ended
45
-
45
+
46
46
  # then
47
47
  @out.string.should include('3 scenarios: 3 succeeded')
48
48
  end
49
-
49
+
50
50
  it 'should summarize the number of failed scenarios when the run ends' do
51
51
  # when
52
52
  @formatter.run_started(3)
@@ -57,33 +57,33 @@ module Spec
57
57
  @formatter.scenario_started(nil, nil)
58
58
  @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
59
59
  @formatter.run_ended
60
-
60
+
61
61
  # then
62
62
  @out.string.should include("3 scenarios: 1 succeeded, 2 failed")
63
63
  end
64
-
64
+
65
65
  it 'should end cleanly (no characters on the last line) with successes' do
66
66
  # when
67
67
  @formatter.run_started(1)
68
68
  @formatter.scenario_started(nil, nil)
69
69
  @formatter.scenario_succeeded('story', 'scenario')
70
70
  @formatter.run_ended
71
-
71
+
72
72
  # then
73
73
  @out.string.should =~ /\n\z/
74
74
  end
75
-
75
+
76
76
  it 'should end cleanly (no characters on the last line) with failures' do
77
77
  # when
78
78
  @formatter.run_started(1)
79
79
  @formatter.scenario_started(nil, nil)
80
80
  @formatter.scenario_failed('story', 'scenario', exception_from { raise RuntimeError, 'oops' })
81
81
  @formatter.run_ended
82
-
82
+
83
83
  # then
84
84
  @out.string.should =~ /\n\z/
85
85
  end
86
-
86
+
87
87
  it 'should end cleanly (no characters on the last line) with pending steps' do
88
88
  # when
89
89
  @formatter.run_started(1)
@@ -91,11 +91,11 @@ module Spec
91
91
  @formatter.step_pending(:then, 'do pend')
92
92
  @formatter.scenario_pending('story', 'scenario', exception_from { raise RuntimeError, 'oops' })
93
93
  @formatter.run_ended
94
-
94
+
95
95
  # then
96
96
  @out.string.should =~ /\n\z/
97
97
  end
98
-
98
+
99
99
  it 'should summarize the number of pending scenarios when the run ends' do
100
100
  # when
101
101
  @formatter.run_started(3)
@@ -106,11 +106,11 @@ module Spec
106
106
  @formatter.scenario_started(nil, nil)
107
107
  @formatter.scenario_pending('story', 'scenario3', 'message')
108
108
  @formatter.run_ended
109
-
109
+
110
110
  # then
111
111
  @out.string.should include("3 scenarios: 1 succeeded, 0 failed, 2 pending")
112
112
  end
113
-
113
+
114
114
  it "should only count the first failure in one scenario" do
115
115
  # when
116
116
  @formatter.run_started(3)
@@ -122,11 +122,11 @@ module Spec
122
122
  @formatter.scenario_started(nil, nil)
123
123
  @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
124
124
  @formatter.run_ended
125
-
125
+
126
126
  # then
127
127
  @out.string.should include("3 scenarios: 1 succeeded, 2 failed")
128
128
  end
129
-
129
+
130
130
  it "should only count the first pending in one scenario" do
131
131
  # when
132
132
  @formatter.run_started(3)
@@ -138,11 +138,11 @@ module Spec
138
138
  @formatter.scenario_started(nil, nil)
139
139
  @formatter.scenario_pending('story', 'scenario3', 'because ...')
140
140
  @formatter.run_ended
141
-
141
+
142
142
  # then
143
143
  @out.string.should include("3 scenarios: 1 succeeded, 0 failed, 2 pending")
144
144
  end
145
-
145
+
146
146
  it "should only count a failure before the first pending in one scenario" do
147
147
  # when
148
148
  @formatter.run_started(3)
@@ -154,11 +154,11 @@ module Spec
154
154
  @formatter.scenario_started(nil, nil)
155
155
  @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
156
156
  @formatter.run_ended
157
-
157
+
158
158
  # then
159
159
  @out.string.should include("3 scenarios: 1 succeeded, 1 failed, 1 pending")
160
160
  end
161
-
161
+
162
162
  it 'should produce details of the first failure each failed scenario when the run ends' do
163
163
  # when
164
164
  @formatter.run_started(3)
@@ -170,7 +170,7 @@ module Spec
170
170
  @formatter.scenario_started(nil, nil)
171
171
  @formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops3' })
172
172
  @formatter.run_ended
173
-
173
+
174
174
  # then
175
175
  @out.string.should include("FAILURES:\n")
176
176
  @out.string.should include("1) story (scenario2) FAILED")
@@ -179,7 +179,7 @@ module Spec
179
179
  @out.string.should include("2) story (scenario3) FAILED")
180
180
  @out.string.should include("RuntimeError: oops3")
181
181
  end
182
-
182
+
183
183
  it 'should produce details of each pending step when the run ends' do
184
184
  # when
185
185
  @formatter.run_started(2)
@@ -190,139 +190,139 @@ module Spec
190
190
  @formatter.scenario_started('story 2', 'scenario 2')
191
191
  @formatter.step_pending(:given, 'todo 2', [])
192
192
  @formatter.run_ended
193
-
193
+
194
194
  # then
195
195
  @out.string.should include("Pending Steps:\n")
196
196
  @out.string.should include("1) story 1 (scenario 1): todo 1")
197
197
  @out.string.should include("2) story 2 (scenario 2): todo 2")
198
198
  end
199
-
199
+
200
200
  it 'should document a story title and narrative' do
201
201
  # when
202
202
  @formatter.story_started 'story', 'narrative'
203
-
203
+
204
204
  # then
205
205
  @out.string.should include("Story: story\n\n narrative")
206
206
  end
207
-
207
+
208
208
  it 'should document a scenario name' do
209
209
  # when
210
210
  @formatter.scenario_started 'story', 'scenario'
211
-
211
+
212
212
  # then
213
213
  @out.string.should include("\n\n Scenario: scenario")
214
214
  end
215
-
215
+
216
216
  it 'should document a step by sentence-casing its name' do
217
217
  # when
218
218
  @formatter.step_succeeded :given, 'a context'
219
219
  @formatter.step_succeeded :when, 'an event'
220
220
  @formatter.step_succeeded :then, 'an outcome'
221
-
221
+
222
222
  # then
223
223
  @out.string.should include("\n\n Given a context\n\n When an event\n\n Then an outcome")
224
224
  end
225
-
225
+
226
226
  it 'should document additional givens using And' do
227
227
  # when
228
228
  @formatter.step_succeeded :given, 'step 1'
229
229
  @formatter.step_succeeded :given, 'step 2'
230
230
  @formatter.step_succeeded :given, 'step 3'
231
-
231
+
232
232
  # then
233
233
  @out.string.should include(" Given step 1\n And step 2\n And step 3")
234
234
  end
235
-
235
+
236
236
  it 'should document additional events using And' do
237
237
  # when
238
238
  @formatter.step_succeeded :when, 'step 1'
239
239
  @formatter.step_succeeded :when, 'step 2'
240
240
  @formatter.step_succeeded :when, 'step 3'
241
-
241
+
242
242
  # then
243
243
  @out.string.should include(" When step 1\n And step 2\n And step 3")
244
244
  end
245
-
245
+
246
246
  it 'should document additional outcomes using And' do
247
247
  # when
248
248
  @formatter.step_succeeded :then, 'step 1'
249
249
  @formatter.step_succeeded :then, 'step 2'
250
250
  @formatter.step_succeeded :then, 'step 3'
251
-
251
+
252
252
  # then
253
253
  @out.string.should include(" Then step 1\n And step 2\n And step 3")
254
254
  end
255
-
255
+
256
256
  it 'should document a GivenScenario followed by a Given using And' do
257
257
  # when
258
258
  @formatter.step_succeeded :'given scenario', 'a scenario'
259
259
  @formatter.step_succeeded :given, 'a context'
260
-
260
+
261
261
  # then
262
262
  @out.string.should include(" Given scenario a scenario\n And a context")
263
263
  end
264
-
264
+
265
265
  it 'should document steps with replaced params' do
266
266
  @formatter.step_succeeded :given, 'a $coloured dog with $n legs', 'pink', 21
267
267
  @out.string.should include(" Given a pink dog with 21 legs")
268
268
  end
269
-
269
+
270
270
  it 'should document regexp steps with replaced params' do
271
271
  @formatter.step_succeeded :given, /a (pink|blue) dog with (.*) legs/, 'pink', 21
272
272
  @out.string.should include(" Given a pink dog with 21 legs")
273
273
  end
274
-
274
+
275
275
  it "should append PENDING for the first pending step" do
276
276
  @formatter.scenario_started('','')
277
277
  @formatter.step_pending(:given, 'a context')
278
-
278
+
279
279
  @out.string.should include('Given a context (PENDING)')
280
280
  end
281
-
281
+
282
282
  it "should append PENDING for pending after already pending" do
283
283
  @formatter.scenario_started('','')
284
284
  @formatter.step_pending(:given, 'a context')
285
285
  @formatter.step_pending(:when, 'I say hey')
286
-
286
+
287
287
  @out.string.should include('When I say hey (PENDING)')
288
288
  end
289
-
289
+
290
290
  it "should append FAILED for the first failiure" do
291
291
  @formatter.scenario_started('','')
292
292
  @formatter.step_failed(:given, 'a context')
293
-
293
+
294
294
  @out.string.should include('Given a context (FAILED)')
295
295
  end
296
-
296
+
297
297
  it "should append SKIPPED for the second failiure" do
298
298
  @formatter.scenario_started('','')
299
299
  @formatter.step_failed(:given, 'a context')
300
300
  @formatter.step_failed(:when, 'I say hey')
301
-
301
+
302
302
  @out.string.should include('When I say hey (SKIPPED)')
303
303
  end
304
-
304
+
305
305
  it "should append SKIPPED for the a failiure after PENDING" do
306
306
  @formatter.scenario_started('','')
307
307
  @formatter.step_pending(:given, 'a context')
308
308
  @formatter.step_failed(:when, 'I say hey')
309
-
309
+
310
310
  @out.string.should include('When I say hey (SKIPPED)')
311
311
  end
312
-
312
+
313
313
  it 'should print some white space after each story' do
314
314
  # when
315
315
  @formatter.story_ended 'title', 'narrative'
316
-
316
+
317
317
  # then
318
318
  @out.string.should include("\n\n")
319
319
  end
320
-
320
+
321
321
  it "should print nothing for collected_steps" do
322
322
  @formatter.collected_steps(['Given a $coloured $animal', 'Given a $n legged eel'])
323
323
  @out.string.should == ("")
324
324
  end
325
-
325
+
326
326
  it "should ignore messages it doesn't care about" do
327
327
  lambda {
328
328
  @formatter.this_method_does_not_exist
@@ -0,0 +1,365 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <title>RSpec results</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="Expires" content="-1" />
10
+ <meta http-equiv="Pragma" content="no-cache" />
11
+ <style type="text/css">
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ background: #fff;
16
+ font-size: 80%;
17
+ }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <div class="rspec-report">
22
+ <script type="text/javascript">
23
+ // <![CDATA[
24
+ function moveProgressBar(percentDone) {
25
+ document.getElementById("rspec-header").style.width = percentDone +"%";
26
+ }
27
+ function makeRed(element_id) {
28
+ document.getElementById(element_id).style.background = '#C40D0D';
29
+ document.getElementById(element_id).style.color = '#FFFFFF';
30
+ }
31
+
32
+ function makeYellow(element_id) {
33
+ if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
34
+ {
35
+ document.getElementById(element_id).style.background = '#FAF834';
36
+ document.getElementById(element_id).style.color = '#000000';
37
+ }
38
+ else
39
+ {
40
+ document.getElementById(element_id).style.background = '#FAF834';
41
+ document.getElementById(element_id).style.color = '#000000';
42
+ }
43
+ }
44
+
45
+ // ]]>
46
+ </script>
47
+ <style type="text/css">
48
+ #rspec-header {
49
+ background: #65C400; color: #fff;
50
+ }
51
+
52
+ .rspec-report h1 {
53
+ margin: 0px 10px 0px 10px;
54
+ padding: 10px;
55
+ font-family: "Lucida Grande", Helvetica, sans-serif;
56
+ font-size: 1.8em;
57
+ }
58
+
59
+ #summary {
60
+ margin: 0; padding: 5px 10px;
61
+ font-family: "Lucida Grande", Helvetica, sans-serif;
62
+ text-align: right;
63
+ position: absolute;
64
+ top: 0px;
65
+ right: 0px;
66
+ }
67
+
68
+ #summary p {
69
+ margin: 0 0 0 2px;
70
+ }
71
+
72
+ #summary #totals {
73
+ font-size: 1.2em;
74
+ }
75
+
76
+ .example_group {
77
+ margin: 0 10px 5px;
78
+ background: #fff;
79
+ }
80
+
81
+ dl {
82
+ margin: 0; padding: 0 0 5px;
83
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
84
+ }
85
+
86
+ dt {
87
+ padding: 3px;
88
+ background: #65C400;
89
+ color: #fff;
90
+ font-weight: bold;
91
+ }
92
+
93
+ dd {
94
+ margin: 5px 0 5px 5px;
95
+ padding: 3px 3px 3px 18px;
96
+ }
97
+
98
+ dd.spec.passed {
99
+ border-left: 5px solid #65C400;
100
+ border-bottom: 1px solid #65C400;
101
+ background: #DBFFB4; color: #3D7700;
102
+ }
103
+
104
+ dd.spec.failed {
105
+ border-left: 5px solid #C20000;
106
+ border-bottom: 1px solid #C20000;
107
+ color: #C20000; background: #FFFBD3;
108
+ }
109
+
110
+ dd.spec.not_implemented {
111
+ border-left: 5px solid #FAF834;
112
+ border-bottom: 1px solid #FAF834;
113
+ background: #FCFB98; color: #131313;
114
+ }
115
+
116
+ dd.spec.pending_fixed {
117
+ border-left: 5px solid #0000C2;
118
+ border-bottom: 1px solid #0000C2;
119
+ color: #0000C2; background: #D3FBFF;
120
+ }
121
+
122
+ .backtrace {
123
+ color: #000;
124
+ font-size: 12px;
125
+ }
126
+
127
+ a {
128
+ color: #BE5C00;
129
+ }
130
+
131
+ /* Ruby code, style similar to vibrant ink */
132
+ .ruby {
133
+ font-size: 12px;
134
+ font-family: monospace;
135
+ color: white;
136
+ background-color: black;
137
+ padding: 0.1em 0 0.2em 0;
138
+ }
139
+
140
+ .ruby .keyword { color: #FF6600; }
141
+ .ruby .constant { color: #339999; }
142
+ .ruby .attribute { color: white; }
143
+ .ruby .global { color: white; }
144
+ .ruby .module { color: white; }
145
+ .ruby .class { color: white; }
146
+ .ruby .string { color: #66FF00; }
147
+ .ruby .ident { color: white; }
148
+ .ruby .method { color: #FFCC00; }
149
+ .ruby .number { color: white; }
150
+ .ruby .char { color: white; }
151
+ .ruby .comment { color: #9933CC; }
152
+ .ruby .symbol { color: white; }
153
+ .ruby .regex { color: #44B4CC; }
154
+ .ruby .punct { color: white; }
155
+ .ruby .escape { color: white; }
156
+ .ruby .interp { color: white; }
157
+ .ruby .expr { color: white; }
158
+
159
+ .ruby .offending { background-color: gray; }
160
+ .ruby .linenum {
161
+ width: 75px;
162
+ padding: 0.1em 1em 0.2em 0;
163
+ color: #000000;
164
+ background-color: #FFFBD3;
165
+ }
166
+
167
+ </style>
168
+
169
+ <div id="rspec-header">
170
+ <h1>RSpec Results</h1>
171
+
172
+ <div id="summary">
173
+ <p id="totals">&nbsp;</p>
174
+ <p id="duration">&nbsp;</p>
175
+ </div>
176
+ </div>
177
+
178
+ <div class="results">
179
+ <div class="example_group">
180
+ <dl>
181
+ <dt id="example_group_1">Mocker</dt>
182
+ <script type="text/javascript">moveProgressBar('5.8');</script>
183
+ <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
184
+ <script type="text/javascript">makeRed('rspec-header');</script>
185
+ <script type="text/javascript">makeRed('example_group_1');</script>
186
+ <script type="text/javascript">moveProgressBar('11.7');</script>
187
+ <dd class="spec failed">
188
+ <span class="failed_spec_name">should fail when expected message not received</span>
189
+ <div class="failure" id="failure_1">
190
+ <div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
191
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=13">./failing_examples/mocking_example.rb:13</a>
192
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
193
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </pre></div>
194
+ <pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
195
+ <span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
196
+ <span class="offending"><span class="linenum">13</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
197
+ <span class="linenum">14</span> <span class="keyword">end</span>
198
+ <span class="linenum">15</span> </code></pre>
199
+ </div>
200
+ </dd>
201
+ <script type="text/javascript">moveProgressBar('17.6');</script>
202
+ <dd class="spec failed">
203
+ <span class="failed_spec_name">should fail when messages are received out of order</span>
204
+ <div class="failure" id="failure_2">
205
+ <div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
206
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=22">./failing_examples/mocking_example.rb:22</a>
207
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
208
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </pre></div>
209
+ <pre class="ruby"><code><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
210
+ <span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
211
+ <span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
212
+ <span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
213
+ <span class="linenum">24</span> <span class="keyword">end</span></code></pre>
214
+ </div>
215
+ </dd>
216
+ <script type="text/javascript">moveProgressBar('23.5');</script>
217
+ <dd class="spec failed">
218
+ <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
219
+ <div class="failure" id="failure_3">
220
+ <div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
221
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=28">./failing_examples/mocking_example.rb:28</a>
222
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
223
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </pre></div>
224
+ <pre class="ruby"><code><span class="linenum">26</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should get yelled at when sending unexpected messages</span><span class="punct">&quot;</span> <span class="keyword">do</span>
225
+ <span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
226
+ <span class="offending"><span class="linenum">28</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span></span>
227
+ <span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
228
+ <span class="linenum">30</span> <span class="keyword">end</span></code></pre>
229
+ </div>
230
+ </dd>
231
+ <script type="text/javascript">moveProgressBar('29.4');</script>
232
+ <dd class="spec pending_fixed">
233
+ <span class="failed_spec_name">has a bug we need to fix</span>
234
+ <div class="failure" id="failure_4">
235
+ <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
236
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/mocking_example.rb&line=33">./failing_examples/mocking_example.rb:33</a>
237
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
238
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </pre></div>
239
+ <pre class="ruby"><code><span class="linenum">31</span>
240
+ <span class="linenum">32</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
241
+ <span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
242
+ <span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
243
+ <span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
244
+ </div>
245
+ </dd>
246
+ </dl>
247
+ </div>
248
+ <div class="example_group">
249
+ <dl>
250
+ <dt id="example_group_2">Running specs with --diff</dt>
251
+ <script type="text/javascript">makeRed('example_group_2');</script>
252
+ <script type="text/javascript">moveProgressBar('35.2');</script>
253
+ <dd class="spec failed">
254
+ <span class="failed_spec_name">should print diff of different strings</span>
255
+ <div class="failure" id="failure_5">
256
+ <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
257
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
258
+ Diff:
259
+ @@ -1,4 +1,4 @@
260
+ RSpec is a
261
+ -behavior driven development
262
+ +behaviour driven development
263
+ framework for Ruby
264
+ </pre></div>
265
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/diffing_spec.rb&line=13">./failing_examples/diffing_spec.rb:13</a>
266
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
267
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </pre></div>
268
+ <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
269
+ <span class="linenum">12</span><span class="constant">EOF</span>
270
+ <span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
271
+ <span class="linenum">14</span> <span class="keyword">end</span></code></pre>
272
+ </div>
273
+ </dd>
274
+ <script type="text/javascript">moveProgressBar('41.1');</script>
275
+ <dd class="spec failed">
276
+ <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
277
+ <div class="failure" id="failure_6">
278
+ <div class="message"><pre>expected &lt;Animal
279
+ name=bob,
280
+ species=tortoise
281
+ &gt;
282
+ , got &lt;Animal
283
+ name=bob,
284
+ species=giraffe
285
+ &gt;
286
+ (using .eql?)
287
+ Diff:
288
+ @@ -1,5 +1,5 @@
289
+ &lt;Animal
290
+ name=bob,
291
+ -species=giraffe
292
+ +species=tortoise
293
+ &gt;
294
+ </pre></div>
295
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/failing_examples/diffing_spec.rb&line=34">./failing_examples/diffing_spec.rb:34</a>
296
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=52">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:52</a>
297
+ <a href="txmt://open?url=file:///Users/aslakhellesoy/scm/rspec/trunk/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=48">./spec/spec/runner/formatter/spec_mate_formatter_spec.rb:48</a> </pre></div>
298
+ <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
299
+ <span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
300
+ <span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
301
+ <span class="linenum">35</span> <span class="keyword">end</span>
302
+ <span class="linenum">36</span><span class="keyword">end</span></code></pre>
303
+ </div>
304
+ </dd>
305
+ </dl>
306
+ </div>
307
+ <div class="example_group">
308
+ <dl>
309
+ <dt id="example_group_3">A consumer of a stub</dt>
310
+ <script type="text/javascript">moveProgressBar('47.0');</script>
311
+ <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
312
+ </dl>
313
+ </div>
314
+ <div class="example_group">
315
+ <dl>
316
+ <dt id="example_group_4">A stubbed method on a class</dt>
317
+ <script type="text/javascript">moveProgressBar('52.9');</script>
318
+ <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
319
+ <script type="text/javascript">moveProgressBar('58.8');</script>
320
+ <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
321
+ <script type="text/javascript">moveProgressBar('64.7');</script>
322
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
323
+ </dl>
324
+ </div>
325
+ <div class="example_group">
326
+ <dl>
327
+ <dt id="example_group_5">A mock</dt>
328
+ <script type="text/javascript">moveProgressBar('70.5');</script>
329
+ <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
330
+ <script type="text/javascript">moveProgressBar('76.4');</script>
331
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
332
+ <script type="text/javascript">moveProgressBar('82.3');</script>
333
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
334
+ </dl>
335
+ </div>
336
+ <div class="example_group">
337
+ <dl>
338
+ <dt id="example_group_6">pending example (using pending method)</dt>
339
+ <script type="text/javascript">makeYellow('example_group_6');</script>
340
+ <script type="text/javascript">moveProgressBar('88.2');</script>
341
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
342
+ </dl>
343
+ </div>
344
+ <div class="example_group">
345
+ <dl>
346
+ <dt id="example_group_7">pending example (with no block)</dt>
347
+ <script type="text/javascript">makeYellow('example_group_7');</script>
348
+ <script type="text/javascript">moveProgressBar('94.1');</script>
349
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
350
+ </dl>
351
+ </div>
352
+ <div class="example_group">
353
+ <dl>
354
+ <dt id="example_group_8">pending example (with block for pending)</dt>
355
+ <script type="text/javascript">makeYellow('example_group_8');</script>
356
+ <script type="text/javascript">moveProgressBar('100.0');</script>
357
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
358
+ </dl>
359
+ </div>
360
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
361
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
362
+ </div>
363
+ </div>
364
+ </body>
365
+ </html>