rspec 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +35 -0
- data/MIT-LICENSE +1 -1
- data/README +9 -44
- data/Rakefile +34 -51
- data/TODO +0 -1
- data/UPGRADE +0 -24
- data/bin/spec +0 -0
- data/bin/spec_translator +0 -0
- data/examples/pure/behave_as_example.rb +0 -0
- data/examples/pure/partial_mock_example.rb +1 -0
- data/examples/stories/calculator.rb +1 -1
- data/lib/autotest/rspec.rb +7 -9
- data/lib/spec/example.rb +1 -1
- data/lib/spec/example/configuration.rb +30 -16
- data/lib/spec/example/example_group.rb +2 -1
- data/lib/spec/example/example_group_factory.rb +23 -21
- data/lib/spec/example/example_group_methods.rb +18 -5
- data/lib/spec/example/example_matcher.rb +0 -0
- data/lib/spec/example/example_methods.rb +6 -0
- data/lib/spec/example/module_inclusion_warnings.rb +37 -0
- data/lib/spec/expectations/differs/default.rb +1 -1
- data/lib/spec/expectations/extensions/object.rb +4 -12
- data/lib/spec/expectations/handler.rb +8 -0
- data/lib/spec/extensions.rb +1 -0
- data/lib/spec/extensions/metaclass.rb +7 -0
- data/lib/spec/extensions/object.rb +0 -4
- data/lib/spec/matchers/change.rb +1 -1
- data/lib/spec/matchers/has.rb +1 -11
- data/lib/spec/matchers/operator_matcher.rb +0 -0
- data/lib/spec/matchers/raise_error.rb +53 -30
- data/lib/spec/mocks.rb +1 -1
- data/lib/spec/mocks/argument_constraint_matchers.rb +5 -1
- data/lib/spec/mocks/argument_expectation.rb +26 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +29 -5
- data/lib/spec/mocks/mock.rb +9 -7
- data/lib/spec/mocks/proxy.rb +26 -12
- data/lib/spec/rake/spectask.rb +5 -5
- data/lib/spec/runner/backtrace_tweaker.rb +1 -1
- data/lib/spec/runner/formatter/base_formatter.rb +2 -3
- data/lib/spec/runner/formatter/base_text_formatter.rb +2 -2
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +4 -8
- data/lib/spec/runner/formatter/html_formatter.rb +18 -14
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +4 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +5 -1
- data/lib/spec/runner/formatter/specdoc_formatter.rb +1 -1
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +18 -7
- data/lib/spec/runner/option_parser.rb +17 -15
- data/lib/spec/runner/options.rb +37 -14
- data/lib/spec/runner/reporter.rb +15 -11
- data/lib/spec/story/extensions/regexp.rb +2 -2
- data/lib/spec/story/extensions/string.rb +2 -2
- data/lib/spec/story/runner.rb +9 -5
- data/lib/spec/story/runner/plain_text_story_runner.rb +2 -2
- data/lib/spec/story/runner/scenario_runner.rb +8 -0
- data/lib/spec/story/runner/story_mediator.rb +1 -1
- data/lib/spec/story/runner/story_runner.rb +3 -1
- data/lib/spec/story/step.rb +4 -4
- data/lib/spec/story/story.rb +8 -11
- data/lib/spec/story/world.rb +0 -1
- data/lib/spec/version.rb +2 -2
- data/plugins/mock_frameworks/rspec.rb +2 -0
- data/spec/autotest/rspec_spec.rb +12 -10
- data/spec/spec/example/configuration_spec.rb +0 -0
- data/spec/spec/example/example_group/described_module_spec.rb +20 -0
- data/spec/spec/example/example_group/warning_messages_spec.rb +76 -0
- data/spec/spec/example/example_group_factory_spec.rb +117 -102
- data/spec/spec/example/example_group_methods_spec.rb +51 -17
- data/spec/spec/example/example_group_spec.rb +13 -1
- data/spec/spec/example/example_methods_spec.rb +28 -6
- data/spec/spec/example/nested_example_group_spec.rb +12 -0
- data/spec/spec/example/predicate_matcher_spec.rb +0 -0
- data/spec/spec/expectations/differs/default_spec.rb +27 -9
- data/spec/spec/matchers/be_spec.rb +24 -0
- data/spec/spec/matchers/has_spec.rb +16 -0
- data/spec/spec/matchers/raise_error_spec.rb +124 -0
- data/spec/spec/mocks/{bug_report_10263.rb → bug_report_10263_spec.rb} +0 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +2 -0
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +8 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +32 -0
- data/spec/spec/mocks/mock_spec.rb +56 -37
- data/spec/spec/mocks/partial_mock_spec.rb +41 -5
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
- data/spec/spec/runner/execution_context_spec.rb +7 -1
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +3 -2
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +30 -25
- data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -3
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +333 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +12 -2
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +110 -78
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +105 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -28
- data/spec/spec/runner/option_parser_spec.rb +65 -49
- data/spec/spec/runner/options_spec.rb +103 -17
- data/spec/spec/runner/reporter_spec.rb +10 -7
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser_spec.rb +10 -4
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +14 -13
- data/spec/spec/story/runner/scenario_runner_spec.rb +124 -52
- data/spec/spec/story/runner/story_mediator_spec.rb +2 -2
- data/spec/spec/story/runner/story_runner_spec.rb +40 -2
- data/spec/spec/story/runner_spec.rb +59 -72
- data/spec/spec/story/step_spec.rb +20 -1
- data/spec/spec/story/story_spec.rb +2 -2
- data/stories/all.rb +1 -1
- data/stories/example_groups/stories.rb +4 -3
- data/stories/mock_framework_integration/stories.rb +7 -0
- data/stories/mock_framework_integration/use_flexmock.story +9 -0
- data/stories/resources/spec/spec_with_flexmock.rb +18 -0
- metadata +21 -18
- data/pre_commit/lib/pre_commit.rb +0 -4
- data/pre_commit/lib/pre_commit/core.rb +0 -50
- data/pre_commit/lib/pre_commit/pre_commit.rb +0 -54
- data/pre_commit/lib/pre_commit/rspec.rb +0 -111
- data/pre_commit/lib/pre_commit/rspec_on_rails.rb +0 -313
- data/pre_commit/spec/pre_commit/pre_commit_spec.rb +0 -15
- data/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb +0 -36
- data/pre_commit/spec/spec_helper.rb +0 -3
- data/pre_commit/spec/spec_suite.rb +0 -11
@@ -267,11 +267,21 @@ module Spec
|
|
267
267
|
@out.string.should include(" Given a pink dog with 21 legs")
|
268
268
|
end
|
269
269
|
|
270
|
+
it 'should document steps that include dollar signs ($)' do
|
271
|
+
@formatter.step_succeeded :given, 'kicks that cost $$amount', 50
|
272
|
+
@out.string.should include("Given kicks that cost $50")
|
273
|
+
end
|
274
|
+
|
270
275
|
it 'should document regexp steps with replaced params' do
|
271
276
|
@formatter.step_succeeded :given, /a (pink|blue) dog with (.*) legs/, 'pink', 21
|
272
277
|
@out.string.should include(" Given a pink dog with 21 legs")
|
273
278
|
end
|
274
279
|
|
280
|
+
it 'should document regex steps that include dollar signs ($)' do
|
281
|
+
@formatter.step_succeeded :given, /kicks that cost \$(\d+)/, 50
|
282
|
+
@out.string.should include("Given kicks that cost $50")
|
283
|
+
end
|
284
|
+
|
275
285
|
it "should append PENDING for the first pending step" do
|
276
286
|
@formatter.scenario_started('','')
|
277
287
|
@formatter.step_pending(:given, 'a context')
|
@@ -302,7 +312,7 @@ module Spec
|
|
302
312
|
@out.string.should include('When I say hey (SKIPPED)')
|
303
313
|
end
|
304
314
|
|
305
|
-
it "should append SKIPPED for
|
315
|
+
it "should append SKIPPED for a failure after PENDING" do
|
306
316
|
@formatter.scenario_started('','')
|
307
317
|
@formatter.step_pending(:given, 'a context')
|
308
318
|
@formatter.step_failed(:when, 'I say hey')
|
@@ -310,6 +320,100 @@ module Spec
|
|
310
320
|
@out.string.should include('When I say hey (SKIPPED)')
|
311
321
|
end
|
312
322
|
|
323
|
+
it "should print steps which succeeded in green" do
|
324
|
+
@out.stub!(:tty?).and_return(true)
|
325
|
+
@options.stub!(:colour).and_return(true)
|
326
|
+
|
327
|
+
@formatter.scenario_started('','')
|
328
|
+
@formatter.step_succeeded(:given, 'a context')
|
329
|
+
|
330
|
+
@out.string.should =~ /\e\[32m[\n\s]+Given a context\e\[0m/m
|
331
|
+
end
|
332
|
+
|
333
|
+
it "should print failed steps in red" do
|
334
|
+
@out.stub!(:tty?).and_return(true)
|
335
|
+
@options.stub!(:colour).and_return(true)
|
336
|
+
|
337
|
+
@formatter.scenario_started('','')
|
338
|
+
@formatter.step_failed(:given, 'a context')
|
339
|
+
|
340
|
+
@out.string.should =~ /\e\[31m[\n\s]+Given a context\e\[0m/m
|
341
|
+
end
|
342
|
+
|
343
|
+
it "should print ' (FAILED)' in red" do
|
344
|
+
@out.stub!(:tty?).and_return(true)
|
345
|
+
@options.stub!(:colour).and_return(true)
|
346
|
+
|
347
|
+
@formatter.scenario_started('','')
|
348
|
+
@formatter.step_failed(:given, 'a context')
|
349
|
+
|
350
|
+
@out.string.should =~ /\e\[31m \(FAILED\)\e\[0m/
|
351
|
+
end
|
352
|
+
|
353
|
+
it "should print pending steps in yellow" do
|
354
|
+
@out.stub!(:tty?).and_return(true)
|
355
|
+
@options.stub!(:colour).and_return(true)
|
356
|
+
|
357
|
+
@formatter.scenario_started('','')
|
358
|
+
@formatter.step_pending(:given, 'a context')
|
359
|
+
|
360
|
+
@out.string.should =~ /\e\[33m[\n\s]+Given a context\e\[0m/m
|
361
|
+
end
|
362
|
+
|
363
|
+
it "should print ' (PENDING)' in yellow" do
|
364
|
+
@out.stub!(:tty?).and_return(true)
|
365
|
+
@options.stub!(:colour).and_return(true)
|
366
|
+
|
367
|
+
@formatter.scenario_started('','')
|
368
|
+
@formatter.step_pending(:given, 'a context')
|
369
|
+
|
370
|
+
@out.string.should =~ /\e\[33m \(PENDING\)\e\[0m/
|
371
|
+
end
|
372
|
+
|
373
|
+
it "should print skipped steps in yellow if the scenario is already pending" do
|
374
|
+
@out.stub!(:tty?).and_return(true)
|
375
|
+
@options.stub!(:colour).and_return(true)
|
376
|
+
|
377
|
+
@formatter.scenario_started('','')
|
378
|
+
@formatter.step_pending(:given, 'a context')
|
379
|
+
@formatter.step_failed(:when, 'I say hey')
|
380
|
+
|
381
|
+
@out.string.should =~ /\e\[33m[\n\s]+When I say hey\e\[0m/m
|
382
|
+
end
|
383
|
+
|
384
|
+
it "should print ' (SKIPPED)' in yellow if the scenario is already pending" do
|
385
|
+
@out.stub!(:tty?).and_return(true)
|
386
|
+
@options.stub!(:colour).and_return(true)
|
387
|
+
|
388
|
+
@formatter.scenario_started('','')
|
389
|
+
@formatter.step_pending(:given, 'a context')
|
390
|
+
@formatter.step_failed(:when, 'I say hey')
|
391
|
+
|
392
|
+
@out.string.should =~ /\e\[33m \(SKIPPED\)\e\[0m/
|
393
|
+
end
|
394
|
+
|
395
|
+
it "should print skipped steps in red if the scenario has already failed" do
|
396
|
+
@out.stub!(:tty?).and_return(true)
|
397
|
+
@options.stub!(:colour).and_return(true)
|
398
|
+
|
399
|
+
@formatter.scenario_started('','')
|
400
|
+
@formatter.step_failed(:given, 'a context')
|
401
|
+
@formatter.step_failed(:when, 'I say hey')
|
402
|
+
|
403
|
+
@out.string.should =~ /\e\[31m[\n\s]+When I say hey\e\[0m/m
|
404
|
+
end
|
405
|
+
|
406
|
+
it "should print ' (SKIPPED)' in red if the scenario has already failed" do
|
407
|
+
@out.stub!(:tty?).and_return(true)
|
408
|
+
@options.stub!(:colour).and_return(true)
|
409
|
+
|
410
|
+
@formatter.scenario_started('','')
|
411
|
+
@formatter.step_failed(:given, 'a context')
|
412
|
+
@formatter.step_failed(:when, 'I say hey')
|
413
|
+
|
414
|
+
@out.string.should =~ /\e\[31m \(SKIPPED\)\e\[0m/m
|
415
|
+
end
|
416
|
+
|
313
417
|
it 'should print some white space after each story' do
|
314
418
|
# when
|
315
419
|
@formatter.story_ended 'title', 'narrative'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!DOCTYPE html
|
2
|
+
<!DOCTYPE html
|
3
3
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
4
4
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
5
5
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
@@ -188,10 +188,10 @@ a {
|
|
188
188
|
<span class="failed_spec_name">should fail when expected message not received</span>
|
189
189
|
<div class="failure" id="failure_1">
|
190
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>./failing_examples/mocking_example.rb:13
|
192
|
-
|
193
|
-
|
194
|
-
|
191
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/failing_examples/mocking_example.rb&line=13">./failing_examples/mocking_example.rb:13</a>
|
192
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=50">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:50</a>
|
193
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> :in `chdir'
|
194
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> </pre></div>
|
195
195
|
<pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span>
|
196
196
|
<span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span>
|
197
197
|
<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>
|
@@ -204,10 +204,10 @@ a {
|
|
204
204
|
<span class="failed_spec_name">should fail when messages are received out of order</span>
|
205
205
|
<div class="failure" id="failure_2">
|
206
206
|
<div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
|
207
|
-
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:22
|
208
|
-
|
209
|
-
|
210
|
-
|
207
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/failing_examples/mocking_example.rb&line=22">./failing_examples/mocking_example.rb:22</a>
|
208
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=50">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:50</a>
|
209
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> :in `chdir'
|
210
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> </pre></div>
|
211
211
|
<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>
|
212
212
|
<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
|
213
213
|
<span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
|
@@ -219,15 +219,14 @@ a {
|
|
219
219
|
<dd class="spec failed">
|
220
220
|
<span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
|
221
221
|
<div class="failure" id="failure_3">
|
222
|
-
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (
|
223
|
-
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
<pre class="ruby"><code><span class="linenum">
|
228
|
-
<span class="linenum">
|
229
|
-
<span class="offending"><span class="linenum">
|
230
|
-
<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
|
222
|
+
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
|
223
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/failing_examples/mocking_example.rb&line=29">./failing_examples/mocking_example.rb:29</a>
|
224
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=50">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:50</a>
|
225
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> :in `chdir'
|
226
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> </pre></div>
|
227
|
+
<pre class="ruby"><code><span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span>
|
228
|
+
<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>
|
229
|
+
<span class="offending"><span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
|
231
230
|
<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
|
232
231
|
</div>
|
233
232
|
</dd>
|
@@ -236,7 +235,10 @@ a {
|
|
236
235
|
<span class="failed_spec_name">has a bug we need to fix</span>
|
237
236
|
<div class="failure" id="failure_4">
|
238
237
|
<div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
|
239
|
-
|
238
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/failing_examples/mocking_example.rb&line=33">./failing_examples/mocking_example.rb:33</a>
|
239
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=50">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:50</a>
|
240
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> :in `chdir'
|
241
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> </pre></div>
|
240
242
|
<pre class="ruby"><code><span class="linenum">31</span>
|
241
243
|
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span>
|
242
244
|
<span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span>
|
@@ -259,11 +261,14 @@ a {
|
|
259
261
|
Diff:
|
260
262
|
@@ -1,4 +1,4 @@
|
261
263
|
RSpec is a
|
262
|
-
-
|
263
|
-
+
|
264
|
+
-behaviour driven development
|
265
|
+
+behavior driven development
|
264
266
|
framework for Ruby
|
265
267
|
</pre></div>
|
266
|
-
|
268
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/failing_examples/diffing_spec.rb&line=13">./failing_examples/diffing_spec.rb:13</a>
|
269
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=50">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:50</a>
|
270
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> :in `chdir'
|
271
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> </pre></div>
|
267
272
|
<pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
|
268
273
|
<span class="linenum">12</span><span class="constant">EOF</span>
|
269
274
|
<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>
|
@@ -287,14 +292,14 @@ Diff:
|
|
287
292
|
@@ -1,5 +1,5 @@
|
288
293
|
<Animal
|
289
294
|
name=bob,
|
290
|
-
-species=
|
291
|
-
+species=
|
295
|
+
-species=tortoise
|
296
|
+
+species=giraffe
|
292
297
|
>
|
293
298
|
</pre></div>
|
294
|
-
<div class="backtrace"><pre>./failing_examples/
|
295
|
-
|
296
|
-
|
297
|
-
|
299
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/failing_examples/diffing_spec.rb&line=34">./failing_examples/diffing_spec.rb:34</a>
|
300
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=50">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:50</a>
|
301
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> :in `chdir'
|
302
|
+
<a href="txmt://open?url=file:///Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb&line=46">/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb:46</a> </pre></div>
|
298
303
|
<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">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span>
|
299
304
|
<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">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span>
|
300
305
|
<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>
|
@@ -17,12 +17,12 @@ describe "OptionParser" do
|
|
17
17
|
options = parse(["--pattern", "foo"])
|
18
18
|
options.filename_pattern.should == "foo"
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it "should accept dry run option" do
|
22
22
|
options = parse(["--dry-run"])
|
23
23
|
options.dry_run.should be_true
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it "should eval and use custom formatter when none of the builtins" do
|
27
27
|
options = parse(["--format", "Custom::Formatter"])
|
28
28
|
options.formatters[0].class.should be(Custom::Formatter)
|
@@ -40,17 +40,17 @@ describe "OptionParser" do
|
|
40
40
|
options.formatters[2].where.should eql("foo\\bar")
|
41
41
|
options.formatters[3].where.should eql("/foo/bar")
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
it "should not be verbose by default" do
|
45
45
|
options = parse([])
|
46
46
|
options.verbose.should be_nil
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
it "should not use colour by default" do
|
50
50
|
options = parse([])
|
51
51
|
options.colour.should == false
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "should print help to stdout if no args" do
|
55
55
|
pending 'A regression since 1.0.8' do
|
56
56
|
options = parse([])
|
@@ -58,13 +58,13 @@ describe "OptionParser" do
|
|
58
58
|
@out.read.should match(/Usage: spec \(FILE\|DIRECTORY\|GLOB\)\+ \[options\]/m)
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
it "should print help to stdout" do
|
63
63
|
options = parse(["--help"])
|
64
64
|
@out.rewind
|
65
65
|
@out.read.should match(/Usage: spec \(FILE\|DIRECTORY\|GLOB\)\+ \[options\]/m)
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
it "should print instructions about how to require missing formatter" do
|
69
69
|
lambda do
|
70
70
|
options = parse(["--format", "Custom::MissingFormatter"])
|
@@ -72,7 +72,7 @@ describe "OptionParser" do
|
|
72
72
|
end.should raise_error(NameError)
|
73
73
|
@err.string.should match(/Couldn't find formatter class Custom::MissingFormatter/n)
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
it "should print version to stdout" do
|
77
77
|
options = parse(["--version"])
|
78
78
|
@out.rewind
|
@@ -84,37 +84,37 @@ describe "OptionParser" do
|
|
84
84
|
parse(["--require", "whatever"])
|
85
85
|
end.should raise_error(LoadError)
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
it "should support c option" do
|
89
89
|
options = parse(["-c"])
|
90
90
|
options.colour.should be_true
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
it "should support queens colour option" do
|
94
94
|
options = parse(["--colour"])
|
95
95
|
options.colour.should be_true
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
it "should support us color option" do
|
99
99
|
options = parse(["--color"])
|
100
100
|
options.colour.should be_true
|
101
101
|
end
|
102
|
-
|
102
|
+
|
103
103
|
it "should support single example with -e option" do
|
104
104
|
options = parse(["-e", "something or other"])
|
105
105
|
options.examples.should eql(["something or other"])
|
106
106
|
end
|
107
|
-
|
107
|
+
|
108
108
|
it "should support single example with -s option (will be removed when autotest supports -e)" do
|
109
109
|
options = parse(["-s", "something or other"])
|
110
110
|
options.examples.should eql(["something or other"])
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
it "should support single example with --example option" do
|
114
114
|
options = parse(["--example", "something or other"])
|
115
115
|
options.examples.should eql(["something or other"])
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
it "should read several example names from file if --example is given an existing file name" do
|
119
119
|
options = parse(["--example", File.dirname(__FILE__) + '/examples.txt'])
|
120
120
|
options.examples.should eql([
|
@@ -126,27 +126,27 @@ describe "OptionParser" do
|
|
126
126
|
options = parse(["--example", File.dirname(__FILE__) + '/empty_file.txt'])
|
127
127
|
options.examples.should eql([])
|
128
128
|
end
|
129
|
-
|
129
|
+
|
130
130
|
it "should use html formatter when format is h" do
|
131
131
|
options = parse(["--format", "h"])
|
132
132
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
|
133
133
|
end
|
134
|
-
|
134
|
+
|
135
135
|
it "should use html story formatter when format is h" do
|
136
136
|
options = parse(["--format", "h"])
|
137
137
|
options.story_formatters[0].class.should equal(Spec::Runner::Formatter::Story::HtmlFormatter)
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
140
|
it "should use html formatter when format is html" do
|
141
141
|
options = parse(["--format", "html"])
|
142
142
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
|
143
143
|
end
|
144
|
-
|
144
|
+
|
145
145
|
it "should use html story formatter when format is html" do
|
146
146
|
options = parse(["--format", "html"])
|
147
147
|
options.story_formatters[0].class.should equal(Spec::Runner::Formatter::Story::HtmlFormatter)
|
148
148
|
end
|
149
|
-
|
149
|
+
|
150
150
|
it "should use html formatter with explicit output when format is html:test.html" do
|
151
151
|
FileUtils.rm 'test.html' if File.exist?('test.html')
|
152
152
|
options = parse(["--format", "html:test.html"])
|
@@ -156,69 +156,79 @@ describe "OptionParser" do
|
|
156
156
|
options.formatters[0].close
|
157
157
|
FileUtils.rm 'test.html'
|
158
158
|
end
|
159
|
-
|
159
|
+
|
160
160
|
it "should use noisy backtrace tweaker with b option" do
|
161
161
|
options = parse(["-b"])
|
162
162
|
options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
|
163
163
|
end
|
164
|
-
|
164
|
+
|
165
165
|
it "should use noisy backtrace tweaker with backtrace option" do
|
166
166
|
options = parse(["--backtrace"])
|
167
167
|
options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
|
168
168
|
end
|
169
|
-
|
169
|
+
|
170
170
|
it "should use quiet backtrace tweaker by default" do
|
171
171
|
options = parse([])
|
172
172
|
options.backtrace_tweaker.should be_instance_of(Spec::Runner::QuietBacktraceTweaker)
|
173
173
|
end
|
174
|
-
|
174
|
+
|
175
175
|
it "should use progress bar formatter by default" do
|
176
176
|
options = parse([])
|
177
177
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
|
178
178
|
end
|
179
|
-
|
179
|
+
|
180
180
|
it "should use specdoc formatter when format is s" do
|
181
181
|
options = parse(["--format", "s"])
|
182
182
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
|
183
183
|
end
|
184
|
-
|
184
|
+
|
185
185
|
it "should use specdoc formatter when format is specdoc" do
|
186
186
|
options = parse(["--format", "specdoc"])
|
187
187
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
|
188
188
|
end
|
189
189
|
|
190
|
+
it "should use nested text formatter when format is s" do
|
191
|
+
options = parse(["--format", "n"])
|
192
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should use nested text formatter when format is nested" do
|
196
|
+
options = parse(["--format", "nested"])
|
197
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
|
198
|
+
end
|
199
|
+
|
190
200
|
it "should support diff option when format is not specified" do
|
191
201
|
options = parse(["--diff"])
|
192
202
|
options.diff_format.should == :unified
|
193
203
|
end
|
194
|
-
|
204
|
+
|
195
205
|
it "should use unified diff format option when format is unified" do
|
196
206
|
options = parse(["--diff", "unified"])
|
197
207
|
options.diff_format.should == :unified
|
198
208
|
options.differ_class.should equal(Spec::Expectations::Differs::Default)
|
199
209
|
end
|
200
|
-
|
210
|
+
|
201
211
|
it "should use context diff format option when format is context" do
|
202
212
|
options = parse(["--diff", "context"])
|
203
213
|
options.diff_format.should == :context
|
204
214
|
options.differ_class.should == Spec::Expectations::Differs::Default
|
205
215
|
end
|
206
|
-
|
216
|
+
|
207
217
|
it "should use custom diff format option when format is a custom format" do
|
208
218
|
Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
|
209
|
-
|
219
|
+
|
210
220
|
options = parse(["--diff", "Custom::Differ"])
|
211
221
|
options.parse_diff "Custom::Differ"
|
212
222
|
options.diff_format.should == :custom
|
213
223
|
options.differ_class.should == Custom::Differ
|
214
224
|
Spec::Expectations.differ.should be_instance_of(Custom::Differ)
|
215
225
|
end
|
216
|
-
|
226
|
+
|
217
227
|
it "should print instructions about how to fix missing differ" do
|
218
228
|
lambda { parse(["--diff", "Custom::MissingFormatter"]) }.should raise_error(NameError)
|
219
229
|
@err.string.should match(/Couldn't find differ class Custom::MissingFormatter/n)
|
220
230
|
end
|
221
|
-
|
231
|
+
|
222
232
|
describe "when attempting a focussed spec" do
|
223
233
|
attr_reader :file, :dir
|
224
234
|
before do
|
@@ -226,18 +236,18 @@ describe "OptionParser" do
|
|
226
236
|
@file = "#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb"
|
227
237
|
@dir = File.dirname(file)
|
228
238
|
end
|
229
|
-
|
239
|
+
|
230
240
|
after do
|
231
241
|
$rspec_options = @original_rspec_options
|
232
242
|
end
|
233
|
-
|
243
|
+
|
234
244
|
def parse(args)
|
235
245
|
options = super
|
236
246
|
$rspec_options = options
|
237
247
|
options.filename_pattern = "*_fixture.rb"
|
238
248
|
options
|
239
249
|
end
|
240
|
-
|
250
|
+
|
241
251
|
it "should support --line to identify spec" do
|
242
252
|
options = parse([file, "--line", "13"])
|
243
253
|
options.line_number.should == 13
|
@@ -245,34 +255,34 @@ describe "OptionParser" do
|
|
245
255
|
options.run_examples
|
246
256
|
options.examples.should eql(["d"])
|
247
257
|
end
|
248
|
-
|
258
|
+
|
249
259
|
it "should fail with error message if file is dir along with --line" do
|
250
260
|
options = parse([dir, "--line", "169"])
|
251
261
|
options.line_number.should == 169
|
252
262
|
options.run_examples
|
253
263
|
@err.string.should match(/You must specify one file, not a directory when using the --line option/n)
|
254
264
|
end
|
255
|
-
|
265
|
+
|
256
266
|
it "should fail with error message if file does not exist along with --line" do
|
257
267
|
options = parse(["some file", "--line", "169"])
|
258
268
|
proc do
|
259
269
|
options.run_examples
|
260
270
|
end.should raise_error
|
261
271
|
end
|
262
|
-
|
272
|
+
|
263
273
|
it "should fail with error message if more than one files are specified along with --line" do
|
264
274
|
options = parse([file, file, "--line", "169"])
|
265
275
|
options.run_examples
|
266
276
|
@err.string.should match(/Only one file can be specified when using the --line option/n)
|
267
277
|
end
|
268
|
-
|
278
|
+
|
269
279
|
it "should fail with error message if --example and --line are used simultaneously" do
|
270
280
|
options = parse([file, "--example", "some example", "--line", "169"])
|
271
281
|
options.run_examples
|
272
282
|
@err.string.should match(/You cannot use both --line and --example/n)
|
273
283
|
end
|
274
284
|
end
|
275
|
-
|
285
|
+
|
276
286
|
if [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
|
277
287
|
it "should barf when --heckle is specified (and platform is windows)" do
|
278
288
|
lambda do
|
@@ -285,18 +295,24 @@ describe "OptionParser" do
|
|
285
295
|
options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
|
286
296
|
end
|
287
297
|
end
|
288
|
-
|
298
|
+
|
289
299
|
it "should read options from file when --options is specified" do
|
290
300
|
options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
|
291
301
|
options.diff_format.should_not be_nil
|
292
302
|
options.colour.should be_true
|
293
303
|
end
|
294
|
-
|
304
|
+
|
295
305
|
it "should default the formatter to ProgressBarFormatter when using options file" do
|
296
306
|
options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
|
297
307
|
options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::ProgressBarFormatter)
|
298
308
|
end
|
299
309
|
|
310
|
+
it "should run parse drb after parsing options" do
|
311
|
+
@parser.stub!(:parse_drb)
|
312
|
+
@parser.should_receive(:parse_drb).with(["--drb"]).and_return(true)
|
313
|
+
options = parse(["--options", File.dirname(__FILE__) + "/spec_drb.opts"])
|
314
|
+
end
|
315
|
+
|
300
316
|
it "should read spaced and multi-line options from file when --options is specified" do
|
301
317
|
options = parse(["--options", File.dirname(__FILE__) + "/spec_spaced.opts"])
|
302
318
|
options.diff_format.should_not be_nil
|
@@ -310,14 +326,14 @@ describe "OptionParser" do
|
|
310
326
|
IO.read('test.spec.opts').should == "--colour\n--diff\n"
|
311
327
|
FileUtils.rm 'test.spec.opts'
|
312
328
|
end
|
313
|
-
|
329
|
+
|
314
330
|
it "should save config to file when -G is specified" do
|
315
331
|
FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
|
316
332
|
options = parse(["--colour", "-G", "test.spec.opts", "--diff"])
|
317
333
|
IO.read('test.spec.opts').should == "--colour\n--diff\n"
|
318
334
|
FileUtils.rm 'test.spec.opts'
|
319
335
|
end
|
320
|
-
|
336
|
+
|
321
337
|
it "when --drb is specified, calls DrbCommandLine all of the other ARGV arguments" do
|
322
338
|
options = Spec::Runner::OptionParser.parse([
|
323
339
|
"some/spec.rb", "--diff", "--colour"
|
@@ -331,7 +347,7 @@ describe "OptionParser" do
|
|
331
347
|
it "should reverse spec order when --reverse is specified" do
|
332
348
|
options = parse(["some/spec.rb", "--reverse"])
|
333
349
|
end
|
334
|
-
|
350
|
+
|
335
351
|
it "should set an mtime comparator when --loadby mtime" do
|
336
352
|
options = parse(["--loadby", 'mtime'])
|
337
353
|
runner = Spec::Runner::ExampleGroupRunner.new(options)
|
@@ -339,7 +355,7 @@ describe "OptionParser" do
|
|
339
355
|
with(options).
|
340
356
|
and_return(runner)
|
341
357
|
runner.should_receive(:load_files).with(["most_recent_spec.rb", "command_line_spec.rb"])
|
342
|
-
|
358
|
+
|
343
359
|
Dir.chdir(File.dirname(__FILE__)) do
|
344
360
|
options.files << 'command_line_spec.rb'
|
345
361
|
options.files << 'most_recent_spec.rb'
|
@@ -348,7 +364,7 @@ describe "OptionParser" do
|
|
348
364
|
FileUtils.rm "most_recent_spec.rb"
|
349
365
|
end
|
350
366
|
end
|
351
|
-
|
367
|
+
|
352
368
|
it "should use the standard runner by default" do
|
353
369
|
runner = ::Spec::Runner::ExampleGroupRunner.new(@parser.options)
|
354
370
|
::Spec::Runner::ExampleGroupRunner.should_receive(:new).
|
@@ -357,7 +373,7 @@ describe "OptionParser" do
|
|
357
373
|
options = parse([])
|
358
374
|
options.run_examples
|
359
375
|
end
|
360
|
-
|
376
|
+
|
361
377
|
it "should use a custom runner when given" do
|
362
378
|
runner = Custom::ExampleGroupRunner.new(@parser.options, nil)
|
363
379
|
Custom::ExampleGroupRunner.should_receive(:new).
|
@@ -366,7 +382,7 @@ describe "OptionParser" do
|
|
366
382
|
options = parse(["--runner", "Custom::ExampleGroupRunner"])
|
367
383
|
options.run_examples
|
368
384
|
end
|
369
|
-
|
385
|
+
|
370
386
|
it "should use a custom runner with extra options" do
|
371
387
|
runner = Custom::ExampleGroupRunner.new(@parser.options, 'something')
|
372
388
|
Custom::ExampleGroupRunner.should_receive(:new).
|