rspec 1.1.3 → 1.1.4

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 (122) hide show
  1. data/CHANGES +35 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README +9 -44
  4. data/Rakefile +34 -51
  5. data/TODO +0 -1
  6. data/UPGRADE +0 -24
  7. data/bin/spec +0 -0
  8. data/bin/spec_translator +0 -0
  9. data/examples/pure/behave_as_example.rb +0 -0
  10. data/examples/pure/partial_mock_example.rb +1 -0
  11. data/examples/stories/calculator.rb +1 -1
  12. data/lib/autotest/rspec.rb +7 -9
  13. data/lib/spec/example.rb +1 -1
  14. data/lib/spec/example/configuration.rb +30 -16
  15. data/lib/spec/example/example_group.rb +2 -1
  16. data/lib/spec/example/example_group_factory.rb +23 -21
  17. data/lib/spec/example/example_group_methods.rb +18 -5
  18. data/lib/spec/example/example_matcher.rb +0 -0
  19. data/lib/spec/example/example_methods.rb +6 -0
  20. data/lib/spec/example/module_inclusion_warnings.rb +37 -0
  21. data/lib/spec/expectations/differs/default.rb +1 -1
  22. data/lib/spec/expectations/extensions/object.rb +4 -12
  23. data/lib/spec/expectations/handler.rb +8 -0
  24. data/lib/spec/extensions.rb +1 -0
  25. data/lib/spec/extensions/metaclass.rb +7 -0
  26. data/lib/spec/extensions/object.rb +0 -4
  27. data/lib/spec/matchers/change.rb +1 -1
  28. data/lib/spec/matchers/has.rb +1 -11
  29. data/lib/spec/matchers/operator_matcher.rb +0 -0
  30. data/lib/spec/matchers/raise_error.rb +53 -30
  31. data/lib/spec/mocks.rb +1 -1
  32. data/lib/spec/mocks/argument_constraint_matchers.rb +5 -1
  33. data/lib/spec/mocks/argument_expectation.rb +26 -0
  34. data/lib/spec/mocks/extensions.rb +1 -0
  35. data/lib/spec/mocks/framework.rb +15 -0
  36. data/lib/spec/mocks/message_expectation.rb +29 -5
  37. data/lib/spec/mocks/mock.rb +9 -7
  38. data/lib/spec/mocks/proxy.rb +26 -12
  39. data/lib/spec/rake/spectask.rb +5 -5
  40. data/lib/spec/runner/backtrace_tweaker.rb +1 -1
  41. data/lib/spec/runner/formatter/base_formatter.rb +2 -3
  42. data/lib/spec/runner/formatter/base_text_formatter.rb +2 -2
  43. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +4 -8
  44. data/lib/spec/runner/formatter/html_formatter.rb +18 -14
  45. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  46. data/lib/spec/runner/formatter/profile_formatter.rb +4 -0
  47. data/lib/spec/runner/formatter/progress_bar_formatter.rb +5 -1
  48. data/lib/spec/runner/formatter/specdoc_formatter.rb +1 -1
  49. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +18 -7
  50. data/lib/spec/runner/option_parser.rb +17 -15
  51. data/lib/spec/runner/options.rb +37 -14
  52. data/lib/spec/runner/reporter.rb +15 -11
  53. data/lib/spec/story/extensions/regexp.rb +2 -2
  54. data/lib/spec/story/extensions/string.rb +2 -2
  55. data/lib/spec/story/runner.rb +9 -5
  56. data/lib/spec/story/runner/plain_text_story_runner.rb +2 -2
  57. data/lib/spec/story/runner/scenario_runner.rb +8 -0
  58. data/lib/spec/story/runner/story_mediator.rb +1 -1
  59. data/lib/spec/story/runner/story_runner.rb +3 -1
  60. data/lib/spec/story/step.rb +4 -4
  61. data/lib/spec/story/story.rb +8 -11
  62. data/lib/spec/story/world.rb +0 -1
  63. data/lib/spec/version.rb +2 -2
  64. data/plugins/mock_frameworks/rspec.rb +2 -0
  65. data/spec/autotest/rspec_spec.rb +12 -10
  66. data/spec/spec/example/configuration_spec.rb +0 -0
  67. data/spec/spec/example/example_group/described_module_spec.rb +20 -0
  68. data/spec/spec/example/example_group/warning_messages_spec.rb +76 -0
  69. data/spec/spec/example/example_group_factory_spec.rb +117 -102
  70. data/spec/spec/example/example_group_methods_spec.rb +51 -17
  71. data/spec/spec/example/example_group_spec.rb +13 -1
  72. data/spec/spec/example/example_methods_spec.rb +28 -6
  73. data/spec/spec/example/nested_example_group_spec.rb +12 -0
  74. data/spec/spec/example/predicate_matcher_spec.rb +0 -0
  75. data/spec/spec/expectations/differs/default_spec.rb +27 -9
  76. data/spec/spec/matchers/be_spec.rb +24 -0
  77. data/spec/spec/matchers/has_spec.rb +16 -0
  78. data/spec/spec/matchers/raise_error_spec.rb +124 -0
  79. data/spec/spec/mocks/{bug_report_10263.rb → bug_report_10263_spec.rb} +0 -0
  80. data/spec/spec/mocks/bug_report_11545_spec.rb +2 -0
  81. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +8 -0
  82. data/spec/spec/mocks/hash_including_matcher_spec.rb +32 -0
  83. data/spec/spec/mocks/mock_spec.rb +56 -37
  84. data/spec/spec/mocks/partial_mock_spec.rb +41 -5
  85. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
  86. data/spec/spec/runner/execution_context_spec.rb +7 -1
  87. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +3 -2
  88. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +30 -25
  89. data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -3
  90. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +333 -0
  91. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +12 -2
  92. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +2 -2
  93. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +110 -78
  94. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +105 -1
  95. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -28
  96. data/spec/spec/runner/option_parser_spec.rb +65 -49
  97. data/spec/spec/runner/options_spec.rb +103 -17
  98. data/spec/spec/runner/reporter_spec.rb +10 -7
  99. data/spec/spec/runner/spec_drb.opts +1 -0
  100. data/spec/spec/runner/spec_parser_spec.rb +10 -4
  101. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +14 -13
  102. data/spec/spec/story/runner/scenario_runner_spec.rb +124 -52
  103. data/spec/spec/story/runner/story_mediator_spec.rb +2 -2
  104. data/spec/spec/story/runner/story_runner_spec.rb +40 -2
  105. data/spec/spec/story/runner_spec.rb +59 -72
  106. data/spec/spec/story/step_spec.rb +20 -1
  107. data/spec/spec/story/story_spec.rb +2 -2
  108. data/stories/all.rb +1 -1
  109. data/stories/example_groups/stories.rb +4 -3
  110. data/stories/mock_framework_integration/stories.rb +7 -0
  111. data/stories/mock_framework_integration/use_flexmock.story +9 -0
  112. data/stories/resources/spec/spec_with_flexmock.rb +18 -0
  113. metadata +21 -18
  114. data/pre_commit/lib/pre_commit.rb +0 -4
  115. data/pre_commit/lib/pre_commit/core.rb +0 -50
  116. data/pre_commit/lib/pre_commit/pre_commit.rb +0 -54
  117. data/pre_commit/lib/pre_commit/rspec.rb +0 -111
  118. data/pre_commit/lib/pre_commit/rspec_on_rails.rb +0 -313
  119. data/pre_commit/spec/pre_commit/pre_commit_spec.rb +0 -15
  120. data/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb +0 -36
  121. data/pre_commit/spec/spec_helper.rb +0 -3
  122. data/pre_commit/spec/spec_suite.rb +0 -11
@@ -1,6 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  class LiarLiarPantsOnFire
4
+ include Spec::MetaClass
5
+ extend Spec::MetaClass
4
6
  def respond_to?(sym)
5
7
  true
6
8
  end
@@ -75,6 +75,14 @@ module Spec
75
75
  @mock.msg(37)
76
76
  end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (no args) but received it with (37)")
77
77
  end
78
+
79
+ it "should fail hash_including with missing key" do
80
+ lambda do
81
+ @mock.should_receive(:msg).with(hash_including(:a => 1))
82
+ @mock.msg({})
83
+ end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (hash_including(:a=>1)) but received it with ({})")
84
+ end
85
+
78
86
  end
79
87
 
80
88
  describe "failing deprecated MockArgumentConstraints" do
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe HashIncludingConstraint do
6
+
7
+ it "should match the same hash" do
8
+ hash_including(:a => 1).matches?(:a => 1).should be_true
9
+ end
10
+
11
+ it "should not match a non-hash" do
12
+ hash_including(:a => 1).matches?(1).should_not be_true
13
+ end
14
+
15
+ it "should match a hash with extra stuff" do
16
+ hash_including(:a => 1).matches?(:a => 1, :b => 2).should be_true
17
+ end
18
+
19
+ it "should not match a hash with a missing key" do
20
+ hash_including(:a => 1).matches?(:b => 2).should_not be_true
21
+ end
22
+
23
+ it "should not match a hash with an incorrect value" do
24
+ hash_including(:a => 1, :b => 2).matches?(:a => 1, :b => 3).should_not be_true
25
+ end
26
+
27
+ it "should describe itself properly" do
28
+ HashIncludingConstraint.new(:a => 1).description.should == "hash_including(:a=>1)"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -37,18 +37,16 @@ module Spec
37
37
 
38
38
  it "should fail when receiving message specified as not to be received" do
39
39
  @mock.should_not_receive(:not_expected)
40
- @mock.not_expected
41
40
  lambda {
42
- @mock.rspec_verify
41
+ @mock.not_expected
43
42
  violated
44
- }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once")
43
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
45
44
  end
46
45
 
47
46
  it "should fail when receiving message specified as not to be received with args" do
48
47
  @mock.should_not_receive(:not_expected).with("unexpected text")
49
- @mock.not_expected("unexpected text")
50
48
  lambda {
51
- @mock.rspec_verify
49
+ @mock.not_expected("unexpected text")
52
50
  violated
53
51
  }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (\"unexpected text\") 0 times, but received it once")
54
52
  end
@@ -77,7 +75,7 @@ module Spec
77
75
  @mock.rspec_verify
78
76
  end
79
77
 
80
- it "should raise exception if args dont match when method called" do
78
+ it "should raise exception if args don't match when method called" do
81
79
  @mock.should_receive(:something).with("a","b","c").and_return("booh")
82
80
  lambda {
83
81
  @mock.something("a","d","c")
@@ -85,6 +83,24 @@ module Spec
85
83
  }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
86
84
  end
87
85
 
86
+ it "should raise exception if args don't match when method called even when the method is stubbed" do
87
+ @mock.stub!(:something)
88
+ @mock.should_receive(:something).with("a","b","c")
89
+ lambda {
90
+ @mock.something("a","d","c")
91
+ @mock.rspec_verify
92
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
93
+ end
94
+
95
+ it "should raise exception if args don't match when method called even when using null_object" do
96
+ @mock = mock("test mock", :null_object => true)
97
+ @mock.should_receive(:something).with("a","b","c")
98
+ lambda {
99
+ @mock.something("a","d","c")
100
+ @mock.rspec_verify
101
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
102
+ end
103
+
88
104
  it "should fail if unexpected method called" do
89
105
  lambda {
90
106
  @mock.something("a","b","c")
@@ -110,23 +126,19 @@ module Spec
110
126
  end
111
127
 
112
128
  it "should fail right away when method defined as never is received" do
113
- pending "Used to pass (false positive). Which one is wrong, the spec or the actual behavior?"
114
-
115
129
  @mock.should_receive(:not_expected).never
116
130
  lambda {
117
131
  @mock.not_expected
118
- }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected 0 times, but received it 1 times")
132
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
119
133
  end
120
134
 
121
135
  it "should eventually fail when method defined as never is received" do
122
136
  @mock.should_receive(:not_expected).never
123
- @mock.not_expected
124
-
125
137
  lambda {
126
- @mock.rspec_verify
127
- }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once")
138
+ @mock.not_expected
139
+ }.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
128
140
  end
129
-
141
+
130
142
  it "should raise when told to" do
131
143
  @mock.should_receive(:something).and_raise(RuntimeError)
132
144
  lambda do
@@ -186,14 +198,20 @@ module Spec
186
198
  @mock.something 1
187
199
  }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (no args) but received it with (1)")
188
200
  end
189
-
201
+
190
202
  it "should fail when args are expected but none are received" do
191
203
  @mock.should_receive(:something).with(1)
192
204
  lambda {
193
205
  @mock.something
194
206
  }.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (1) but received it with (no args)")
195
207
  end
196
-
208
+
209
+ it "should return value from block by default" do
210
+ @mock.stub!(:method_that_yields).and_yield
211
+ @mock.method_that_yields { :returned_obj }.should == :returned_obj
212
+ @mock.rspec_verify
213
+ end
214
+
197
215
  it "should yield 0 args to blocks that take a variable number of arguments" do
198
216
  @mock.should_receive(:yield_back).with(no_args()).once.and_yield
199
217
  a = nil
@@ -238,7 +256,7 @@ module Spec
238
256
  a.should == [99, 27, "go"]
239
257
  @mock.rspec_verify
240
258
  end
241
-
259
+
242
260
  it "should yield many args 3 times consecutively to blocks that take a variable number of arguments" do
243
261
  @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
244
262
  and_yield("wait", :amber).
@@ -347,7 +365,7 @@ module Spec
347
365
  mock.rspec_reset
348
366
  mock.rspec_verify #should throw if reset didn't work
349
367
  end
350
-
368
+
351
369
  it "should work even after method_missing starts raising NameErrors instead of NoMethodErrors" do
352
370
  # Object#method_missing throws either NameErrors or NoMethodErrors.
353
371
  #
@@ -376,7 +394,7 @@ module Spec
376
394
  lambda { @mock.foobar }.should_not raise_error(NameError)
377
395
  lambda { @mock.foobar }.should raise_error(MockExpectationError)
378
396
  end
379
-
397
+
380
398
  it "should temporarily replace a method stub on a mock" do
381
399
  @mock.stub!(:msg).and_return(:stub_value)
382
400
  @mock.should_receive(:msg).with(:arg).and_return(:mock_value)
@@ -385,7 +403,7 @@ module Spec
385
403
  @mock.msg.should equal(:stub_value)
386
404
  @mock.rspec_verify
387
405
  end
388
-
406
+
389
407
  it "should temporarily replace a method stub on a non-mock" do
390
408
  non_mock = Object.new
391
409
  non_mock.stub!(:msg).and_return(:stub_value)
@@ -400,8 +418,9 @@ module Spec
400
418
  mock = Mock.new('name', :message => :response)
401
419
  mock.message.should == :response
402
420
  end
421
+
403
422
  end
404
-
423
+
405
424
  describe "a mock message receiving a block" do
406
425
  before(:each) do
407
426
  @mock = mock("mock")
@@ -414,60 +433,60 @@ module Spec
414
433
 
415
434
  it "should call the block after #should_receive" do
416
435
  @mock.should_receive(:foo) { add_call }
417
-
436
+
418
437
  @mock.foo
419
-
438
+
420
439
  @calls.should == 1
421
440
  end
422
-
441
+
423
442
  it "should call the block after #once" do
424
443
  @mock.should_receive(:foo).once { add_call }
425
-
444
+
426
445
  @mock.foo
427
-
446
+
428
447
  @calls.should == 1
429
448
  end
430
-
449
+
431
450
  it "should call the block after #twice" do
432
451
  @mock.should_receive(:foo).twice { add_call }
433
-
452
+
434
453
  @mock.foo
435
454
  @mock.foo
436
-
455
+
437
456
  @calls.should == 2
438
457
  end
439
-
458
+
440
459
  it "should call the block after #times" do
441
460
  @mock.should_receive(:foo).exactly(10).times { add_call }
442
461
 
443
462
  (1..10).each { @mock.foo }
444
-
463
+
445
464
  @calls.should == 10
446
465
  end
447
-
466
+
448
467
  it "should call the block after #any_number_of_times" do
449
468
  @mock.should_receive(:foo).any_number_of_times { add_call }
450
469
 
451
470
  (1..7).each { @mock.foo }
452
-
471
+
453
472
  @calls.should == 7
454
473
  end
455
-
474
+
456
475
  it "should call the block after #with" do
457
476
  @mock.should_receive(:foo).with(:arg) { add_call }
458
477
 
459
478
  @mock.foo(:arg)
460
-
479
+
461
480
  @calls.should == 1
462
481
  end
463
-
482
+
464
483
  it "should call the block after #ordered" do
465
484
  @mock.should_receive(:foo).ordered { add_call }
466
485
  @mock.should_receive(:bar).ordered { add_call }
467
486
 
468
487
  @mock.foo
469
488
  @mock.bar
470
-
489
+
471
490
  @calls.should == 2
472
491
  end
473
492
  end
@@ -21,11 +21,11 @@ module Spec
21
21
  end
22
22
 
23
23
  it "should_not_receive should mock out the method" do
24
+ pending("example raises the expected error, yet fails")
24
25
  @object.should_not_receive(:fuhbar)
25
- @object.fuhbar
26
26
  lambda do
27
- @object.rspec_verify
28
- end.should raise_error(Spec::Mocks::MockExpectationError)
27
+ @object.fuhbar
28
+ end.should raise_error(MockExpectationError, "Mock 'Object' expected :fuhbar with (no args) 0 times, but received it once")
29
29
  end
30
30
 
31
31
  it "should_not_receive should return a negative message expectation" do
@@ -66,10 +66,10 @@ module Spec
66
66
  end
67
67
 
68
68
  it "should_not_receive should also take a String argument" do
69
+ pending("example raises the expected error, yet fails")
69
70
  @object.should_not_receive('foobar')
70
- @object.foobar
71
71
  lambda do
72
- @object.rspec_verify
72
+ @object.foobar
73
73
  end.should raise_error(Spec::Mocks::MockExpectationError)
74
74
  end
75
75
 
@@ -102,5 +102,41 @@ module Spec
102
102
  lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
103
103
  end
104
104
  end
105
+
106
+ describe "Method visibility when using partial mocks" do
107
+ class MockableClass
108
+ def public_method
109
+ private_method
110
+ protected_method
111
+ end
112
+ protected
113
+ def protected_method; end
114
+ private
115
+ def private_method; end
116
+ end
117
+
118
+ before(:each) do
119
+ @object = MockableClass.new
120
+ end
121
+
122
+ it 'should keep public methods public' do
123
+ @object.should_receive(:public_method)
124
+ @object.public_methods.should include('public_method')
125
+ @object.public_method
126
+ end
127
+
128
+ it 'should keep private methods private' do
129
+ @object.should_receive(:private_method)
130
+ @object.private_methods.should include('private_method')
131
+ @object.public_method
132
+ end
133
+
134
+ it 'should keep protected methods protected' do
135
+ @object.should_receive(:protected_method)
136
+ @object.protected_methods.should include('protected_method')
137
+ @object.public_method
138
+ end
139
+
140
+ end
105
141
  end
106
142
  end
@@ -109,6 +109,12 @@ module Spec
109
109
  @mock.should_receive(:random_call).with(no_args)
110
110
  @mock.random_call()
111
111
  end
112
+
113
+ it "should match hash with hash_including same hash" do
114
+ @mock.should_receive(:random_call).with(hash_including(:a => 1))
115
+ @mock.random_call(:a => 1)
116
+ end
117
+
112
118
  end
113
119
 
114
120
  describe Methods, "handling non-constraint arguments" do
@@ -7,7 +7,13 @@ describe "ExecutionContext" do
7
7
  dt.should be_an_instance_of(Spec::Mocks::DuckTypeArgConstraint)
8
8
  dt.matches?([]).should be_true
9
9
  end
10
-
10
+
11
+ it "should provide hash_including" do
12
+ hi = hash_including(:a => 1)
13
+ hi.should be_an_instance_of(Spec::Mocks::HashIncludingConstraint)
14
+ hi.matches?(:a => 1).should be_true
15
+ end
16
+
11
17
  it "should violate when violated()" do
12
18
  lambda do
13
19
  violated
@@ -20,9 +20,10 @@ module Spec
20
20
  formatter.add_example_group(Class.new(ExampleGroup).describe("b 2"))
21
21
  formatter.example_failed("e 2", nil, Reporter::Failure.new(nil, RuntimeError.new))
22
22
  formatter.example_failed("e 3", nil, Reporter::Failure.new(nil, RuntimeError.new))
23
- io.string.should == "b 1\nb 2\n"
23
+ io.string.should include("b 1")
24
+ io.string.should include("b 2")
24
25
  end
25
-
26
+
26
27
  it "should delimit ExampleGroup superclass descriptions with :" do
27
28
  parent_example_group = Class.new(example_group).describe("Parent")
28
29
  child_example_group = Class.new(parent_example_group).describe("#child_method")
@@ -189,9 +189,9 @@ a {
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
191
  <div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
192
- ./spec/spec/runner/formatter/html_formatter_spec.rb:18:
193
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
194
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
192
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
193
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
194
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:</pre></div>
195
195
  <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>
196
196
  <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>
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>
@@ -205,9 +205,9 @@ a {
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
207
  <div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
208
- ./spec/spec/runner/formatter/html_formatter_spec.rb:18:
209
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
210
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
208
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
209
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
210
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:</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 (any args) 0 times, but received it once</pre></div>
223
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
224
- ./spec/spec/runner/formatter/html_formatter_spec.rb:18:
225
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
226
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
227
- <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>
228
- <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>
229
- <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>
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>./failing_examples/mocking_example.rb:29:
224
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
225
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
226
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:</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">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</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>./failing_examples/mocking_example.rb:33:
239
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
240
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
241
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:</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">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
242
244
  <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>
@@ -259,11 +261,14 @@ a {
259
261
  Diff:
260
262
  @@ -1,4 +1,4 @@
261
263
  RSpec is a
262
- -behavior driven development
263
- +behaviour driven development
264
+ -behaviour driven development
265
+ +behavior driven development
264
266
  framework for Ruby
265
267
  </pre></div>
266
-
268
+ <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:
269
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
270
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
271
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:</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
  &lt;Animal
289
294
  name=bob,
290
- -species=giraffe
291
- +species=tortoise
295
+ -species=tortoise
296
+ +species=giraffe
292
297
  &gt;
293
298
  </pre></div>
294
- <div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
295
- ./spec/spec/runner/formatter/html_formatter_spec.rb:18:
296
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:in `chdir'
297
- ./spec/spec/runner/formatter/html_formatter_spec.rb:14:</pre></div>
299
+ <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
300
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
301
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
302
+ /Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:</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">&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
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">&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
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>