rspec-expectations 2.13.0 → 2.14.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/Changelog.md +34 -0
  2. data/README.md +43 -87
  3. data/features/README.md +8 -9
  4. data/features/built_in_matchers/README.md +41 -41
  5. data/features/built_in_matchers/be_within.feature +3 -3
  6. data/features/built_in_matchers/expect_change.feature +6 -6
  7. data/features/built_in_matchers/expect_error.feature +2 -2
  8. data/features/built_in_matchers/start_with.feature +1 -1
  9. data/features/built_in_matchers/throw_symbol.feature +11 -11
  10. data/features/built_in_matchers/yield.feature +18 -3
  11. data/features/custom_matchers/define_diffable_matcher.feature +1 -1
  12. data/features/custom_matchers/define_matcher_outside_rspec.feature +6 -6
  13. data/features/custom_matchers/define_matcher_with_fluent_interface.feature +1 -1
  14. data/features/customized_message.feature +1 -1
  15. data/features/support/env.rb +10 -1
  16. data/features/syntax_configuration.feature +3 -0
  17. data/features/test_frameworks/test_unit.feature +15 -17
  18. data/lib/rspec/expectations.rb +1 -1
  19. data/lib/rspec/expectations/deprecation.rb +12 -33
  20. data/lib/rspec/expectations/differ.rb +25 -7
  21. data/lib/rspec/expectations/expectation_target.rb +7 -8
  22. data/lib/rspec/expectations/extensions/object.rb +2 -12
  23. data/lib/rspec/expectations/fail_with.rb +11 -1
  24. data/lib/rspec/expectations/handler.rb +11 -6
  25. data/lib/rspec/expectations/syntax.rb +2 -2
  26. data/lib/rspec/expectations/version.rb +1 -1
  27. data/lib/rspec/matchers.rb +134 -144
  28. data/lib/rspec/matchers/be_close.rb +1 -1
  29. data/lib/rspec/matchers/built_in/be_within.rb +1 -1
  30. data/lib/rspec/matchers/built_in/have.rb +20 -4
  31. data/lib/rspec/matchers/built_in/raise_error.rb +23 -7
  32. data/lib/rspec/matchers/built_in/yield.rb +78 -3
  33. data/lib/rspec/matchers/operator_matcher.rb +1 -1
  34. data/lib/rspec/matchers/test_unit_integration.rb +11 -0
  35. data/spec/rspec/expectations/differ_spec.rb +27 -5
  36. data/spec/rspec/expectations/expectation_target_spec.rb +10 -3
  37. data/spec/rspec/expectations/extensions/kernel_spec.rb +5 -5
  38. data/spec/rspec/expectations/fail_with_spec.rb +19 -0
  39. data/spec/rspec/expectations/handler_spec.rb +42 -21
  40. data/spec/rspec/expectations/syntax_spec.rb +45 -3
  41. data/spec/rspec/matchers/be_close_spec.rb +6 -6
  42. data/spec/rspec/matchers/be_spec.rb +36 -36
  43. data/spec/rspec/matchers/be_within_spec.rb +4 -0
  44. data/spec/rspec/matchers/change_spec.rb +6 -6
  45. data/spec/rspec/matchers/configuration_spec.rb +57 -89
  46. data/spec/rspec/matchers/description_generation_spec.rb +1 -1
  47. data/spec/rspec/matchers/exist_spec.rb +9 -9
  48. data/spec/rspec/matchers/has_spec.rb +1 -1
  49. data/spec/rspec/matchers/have_spec.rb +12 -2
  50. data/spec/rspec/matchers/include_matcher_integration_spec.rb +2 -2
  51. data/spec/rspec/matchers/include_spec.rb +4 -4
  52. data/spec/rspec/matchers/match_array_spec.rb +1 -1
  53. data/spec/rspec/matchers/match_spec.rb +1 -1
  54. data/spec/rspec/matchers/raise_error_spec.rb +189 -99
  55. data/spec/rspec/matchers/respond_to_spec.rb +4 -4
  56. data/spec/rspec/matchers/satisfy_spec.rb +1 -1
  57. data/spec/rspec/matchers/start_with_end_with_spec.rb +2 -2
  58. data/spec/rspec/matchers/yield_spec.rb +81 -4
  59. data/spec/spec_helper.rb +1 -1
  60. metadata +10 -12
@@ -171,6 +171,6 @@ describe "a Matcher with no description" do
171
171
 
172
172
  it "provides a helpful message when used in a string-less example block" do
173
173
  expect(5).to matcher
174
- expect(RSpec::Matchers.generated_description).to match /When you call.*description method/m
174
+ expect(RSpec::Matchers.generated_description).to match(/When you call.*description method/m)
175
175
  end
176
176
  end
@@ -8,7 +8,7 @@ describe "exist matcher" do
8
8
  end
9
9
 
10
10
  context "when the object does not respond to #exist? or #exists?" do
11
- subject { mock }
11
+ subject { double }
12
12
 
13
13
  [:to, :not_to].each do |expect_method|
14
14
  describe "expect(...).#{expect_method} exist" do
@@ -25,12 +25,12 @@ describe "exist matcher" do
25
25
  context "when the object responds to ##{predicate}" do
26
26
  describe "expect(...).to exist" do
27
27
  it "passes if #{predicate}" do
28
- expect(mock(predicate => true)).to exist
28
+ expect(double(predicate => true)).to exist
29
29
  end
30
30
 
31
31
  it "fails if not #{predicate}" do
32
32
  expect {
33
- expect(mock(predicate => false)).to exist
33
+ expect(double(predicate => false)).to exist
34
34
  }.to fail_with(/expected .* to exist/)
35
35
  end
36
36
 
@@ -51,12 +51,12 @@ describe "exist matcher" do
51
51
 
52
52
  describe "expect(...).not_to exist" do
53
53
  it "passes if not #{predicate}" do
54
- expect(mock(predicate => false)).not_to exist
54
+ expect(double(predicate => false)).not_to exist
55
55
  end
56
56
 
57
57
  it "fails if #{predicate}" do
58
58
  expect {
59
- expect(mock(predicate => true)).not_to exist
59
+ expect(double(predicate => true)).not_to exist
60
60
  }.to fail_with(/expected .* not to exist/)
61
61
  end
62
62
  end
@@ -65,7 +65,7 @@ describe "exist matcher" do
65
65
 
66
66
  context "when the object responds to #exist? and #exists?" do
67
67
  context "when they both return falsey values" do
68
- subject { mock(:exist? => false, :exists? => nil) }
68
+ subject { double(:exist? => false, :exists? => nil) }
69
69
 
70
70
  describe "expect(...).not_to exist" do
71
71
  it "passes" do
@@ -83,7 +83,7 @@ describe "exist matcher" do
83
83
  end
84
84
 
85
85
  context "when they both return truthy values" do
86
- subject { mock(:exist? => true, :exists? => "something true") }
86
+ subject { double(:exist? => true, :exists? => "something true") }
87
87
 
88
88
  describe "expect(...).not_to exist" do
89
89
  it "fails" do
@@ -101,7 +101,7 @@ describe "exist matcher" do
101
101
  end
102
102
 
103
103
  context "when they return values with different truthiness" do
104
- subject { mock(:exist? => true, :exists? => false) }
104
+ subject { double(:exist? => true, :exists? => false) }
105
105
 
106
106
  [:to, :not_to].each do |expect_method|
107
107
  describe "expect(...).#{expect_method} exist" do
@@ -116,7 +116,7 @@ describe "exist matcher" do
116
116
  end
117
117
 
118
118
  it 'passes any provided arguments to the call to #exist?' do
119
- object = mock
119
+ object = double
120
120
  object.should_receive(:exist?).with(:foo, :bar) { true }
121
121
 
122
122
  expect(object).to exist(:foo, :bar)
@@ -117,6 +117,6 @@ describe "has" do
117
117
  def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
118
118
  expect {
119
119
  expect(o).to have_key(:a)
120
- }.to_not raise_error
120
+ }.not_to raise_error
121
121
  end
122
122
  end
@@ -326,13 +326,13 @@ EOF
326
326
 
327
327
  describe "have(n).items(args, block)" do
328
328
  it "passes args to target" do
329
- target = mock("target")
329
+ target = double("target")
330
330
  target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
331
331
  expect(target).to have(3).items("arg1","arg2")
332
332
  end
333
333
 
334
334
  it "passes block to target" do
335
- target = mock("target")
335
+ target = double("target")
336
336
  block = lambda { 5 }
337
337
  target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
338
338
  expect(target).to have(3).items("arg1","arg2", block)
@@ -402,6 +402,16 @@ EOF
402
402
  end
403
403
  end
404
404
 
405
+ if RUBY_VERSION >= '2.0'
406
+ describe RSpec::Matchers::BuiltIn::Have, "for an Enumerator whose size is nil but count is supplied" do
407
+ let(:enumerator) { %w[a b c d].to_enum(:each) }
408
+
409
+ it 'works fine' do
410
+ expect(enumerator).to have(4).items
411
+ end
412
+ end
413
+ end
414
+
405
415
  describe RSpec::Matchers::BuiltIn::Have do
406
416
  it "has method_missing as private" do
407
417
  expect(described_class.private_instance_methods).to include_method(:method_missing)
@@ -22,8 +22,8 @@ module RSpec
22
22
  end
23
23
 
24
24
  it "works with be_[some predicate]" do
25
- expect([stub("actual", :happy? => true)]).to include( be_happy )
26
- expect([stub("actual", :happy? => false)]).not_to include( be_happy )
25
+ expect([double("actual", :happy? => true)]).to include( be_happy )
26
+ expect([double("actual", :happy? => false)]).not_to include( be_happy )
27
27
  end
28
28
  end
29
29
  end
@@ -137,7 +137,7 @@ describe "#include matcher" do
137
137
  end
138
138
  end
139
139
 
140
- describe "expect(...).to_not include(expected)" do
140
+ describe "expect(...).not_to include(expected)" do
141
141
  context "for a string target" do
142
142
  it "passes if target does not include expected" do
143
143
  expect("abc").not_to include("d")
@@ -188,7 +188,7 @@ describe "#include matcher" do
188
188
 
189
189
  end
190
190
 
191
- describe "expect(...).to_not include(with, multiple, args)" do
191
+ describe "expect(...).not_to include(with, multiple, args)" do
192
192
  context "for a string target" do
193
193
  it "passes if the target does not include any of the expected" do
194
194
  expect("abc").not_to include("d", "e", "f")
@@ -280,7 +280,7 @@ describe "#include matcher" do
280
280
  end
281
281
  end
282
282
 
283
- describe "expect(...).to_not include(:key => value)" do
283
+ describe "expect(...).not_to include(:key => value)" do
284
284
  context 'for a hash target' do
285
285
  it "fails if target includes the key/value pair" do
286
286
  expect {
@@ -364,7 +364,7 @@ describe "#include matcher" do
364
364
  end
365
365
  end
366
366
 
367
- describe "expect(...).to_not include(:key1 => value1, :key2 => value2)" do
367
+ describe "expect(...).not_to include(:key1 => value1, :key2 => value2)" do
368
368
  context 'for a hash target' do
369
369
  it "fails if target includes the key/value pairs" do
370
370
  expect {
@@ -156,7 +156,7 @@ MESSAGE
156
156
  end
157
157
  end
158
158
 
159
- describe "expect(...).to_not match_array [:with, :multiple, :args]" do
159
+ describe "expect(...).not_to match_array [:with, :multiple, :args]" do
160
160
  it "is not supported" do
161
161
  expect {
162
162
  expect([1,2,3]).not_to match_array [1,2,3]
@@ -32,7 +32,7 @@ describe "expect(...).to match(expected)" do
32
32
  end
33
33
  end
34
34
 
35
- describe "expect(...).to_not match(expected)" do
35
+ describe "expect(...).not_to match(expected)" do
36
36
  it "passes when target (String) matches does not match (Regexp)" do
37
37
  expect("string").not_to match(/rings/)
38
38
  end
@@ -10,6 +10,25 @@ describe "expect { ... }.to raise_error" do
10
10
  expect {raise}.to raise_error
11
11
  end
12
12
 
13
+ it "passes if an error instance is expected" do
14
+ s = StandardError.new
15
+ expect {raise s}.to raise_error(s)
16
+ end
17
+
18
+ it "fails if a different error instance is thrown from the one that is expected" do
19
+ s = StandardError.new :bees
20
+ to_raise = StandardError.new(:faces)
21
+ expect do
22
+ expect {raise to_raise}.to raise_error(s)
23
+ end.to fail_with(Regexp.new("expected #{s.inspect}, got #{to_raise.inspect} with backtrace"))
24
+ end
25
+
26
+ it "passes if an error class is expected and an instance of that class is thrown" do
27
+ s = StandardError.new :bees
28
+
29
+ expect { raise s }.to raise_error(StandardError)
30
+ end
31
+
13
32
  it "fails if nothing is raised" do
14
33
  expect {
15
34
  expect {}.to raise_error
@@ -41,36 +60,53 @@ describe "expect { ... }.to raise_error {|err| ... }" do
41
60
  end
42
61
  end
43
62
 
44
- describe "expect { ... }.to_not raise_error" do
45
- it "passes if nothing is raised" do
46
- expect {}.to_not raise_error
47
- end
63
+ describe "expect { ... }.not_to raise_error" do
48
64
 
49
- it "fails if anything is raised" do
50
- expect {
51
- expect { raise RuntimeError, "example message" }.to_not raise_error
52
- }.to fail_with(/expected no Exception, got #<RuntimeError: example message>/)
65
+ context "with a specific error class" do
66
+ it "is deprecated" do
67
+ RSpec.should_receive :deprecate
68
+ expect {"bees"}.not_to raise_error(RuntimeError)
69
+ end
53
70
  end
54
71
 
55
- it 'includes the backtrace of the error that was raised in the error message' do
56
- expect {
57
- expect { raise "boom" }.not_to raise_error
58
- }.to raise_error { |e|
59
- backtrace_line = "#{File.basename(__FILE__)}:#{__LINE__ - 2}"
60
- expect(e.message).to include("with backtrace", backtrace_line)
61
- }
62
- end
72
+ context "with no specific error class" do
73
+ it "is not deprecated" do
74
+ run = nil
75
+ allow(RSpec).to receive(:deprecate) { run = true }
76
+ expect {"bees"}.not_to raise_error
77
+ expect(run).to be_nil
78
+ end
63
79
 
64
- it 'formats the backtrace using the configured backtrace formatter' do
65
- RSpec::Matchers.configuration.backtrace_formatter.
66
- stub(:format_backtrace).
67
- and_return("formatted-backtrace")
80
+ it "passes if nothing is raised" do
81
+ expect {}.not_to raise_error
82
+ end
68
83
 
69
- expect {
70
- expect { raise "boom" }.not_to raise_error
71
- }.to raise_error { |e|
72
- expect(e.message).to include("with backtrace", "formatted-backtrace")
73
- }
84
+ it "fails if anything is raised" do
85
+ expect {
86
+ expect { raise RuntimeError, "example message" }.not_to raise_error
87
+ }.to fail_with(/expected no Exception, got #<RuntimeError: example message>/)
88
+ end
89
+
90
+ it 'includes the backtrace of the error that was raised in the error message' do
91
+ expect {
92
+ expect { raise "boom" }.not_to raise_error
93
+ }.to raise_error { |e|
94
+ backtrace_line = "#{File.basename(__FILE__)}:#{__LINE__ - 2}"
95
+ expect(e.message).to include("with backtrace", backtrace_line)
96
+ }
97
+ end
98
+
99
+ it 'formats the backtrace using the configured backtrace formatter' do
100
+ RSpec::Matchers.configuration.backtrace_formatter.
101
+ stub(:format_backtrace).
102
+ and_return("formatted-backtrace")
103
+
104
+ expect {
105
+ expect { raise "boom" }.not_to raise_error
106
+ }.to raise_error { |e|
107
+ expect(e.message).to include("with backtrace", "formatted-backtrace")
108
+ }
109
+ end
74
110
  end
75
111
  end
76
112
 
@@ -109,24 +145,33 @@ describe "expect { ... }.to raise_error(message)" do
109
145
  end
110
146
  end
111
147
 
112
- describe "expect { ... }.to_not raise_error(message)" do
148
+ describe "expect { ... }.not_to raise_error(message)" do
149
+ before do
150
+ allow(RSpec).to receive(:deprecate)
151
+ end
152
+
153
+ it "is deprecated" do
154
+ expect(RSpec).to receive(:deprecate).with(/not_to raise_error\(message\)/, :replacement =>"`expect { }.not_to raise_error()`")
155
+ expect {raise 'blarg'}.not_to raise_error('blah')
156
+ end
157
+
113
158
  it "passes if RuntimeError error is raised with the different message" do
114
- expect {raise 'blarg'}.to_not raise_error('blah')
159
+ expect {raise 'blarg'}.not_to raise_error('blah')
115
160
  end
116
161
 
117
162
  it "passes if any other error is raised with the wrong message" do
118
- expect {raise NameError.new('blarg')}.to_not raise_error('blah')
163
+ expect {raise NameError.new('blarg')}.not_to raise_error('blah')
119
164
  end
120
165
 
121
166
  it "fails if RuntimeError is raised with message" do
122
167
  expect do
123
- expect {raise 'blah'}.to_not raise_error('blah')
168
+ expect {raise 'blah'}.not_to raise_error('blah')
124
169
  end.to fail_with(/expected no Exception with "blah", got #<RuntimeError: blah>/)
125
170
  end
126
171
 
127
172
  it "fails if any other error is raised with message" do
128
173
  expect do
129
- expect {raise NameError.new('blah')}.to_not raise_error('blah')
174
+ expect {raise NameError.new('blah')}.not_to raise_error('blah')
130
175
  end.to fail_with(/expected no Exception with "blah", got #<NameError: blah>/)
131
176
  end
132
177
  end
@@ -155,18 +200,27 @@ describe "expect { ... }.to raise_error(NamedError)" do
155
200
  end
156
201
  end
157
202
 
158
- describe "expect { ... }.to_not raise_error(NamedError)" do
203
+ describe "expect { ... }.not_to raise_error(NamedError)" do
204
+ before do
205
+ allow(RSpec).to receive(:deprecate)
206
+ end
207
+
208
+ it "is deprecated" do
209
+ expect(RSpec).to receive(:deprecate).with(/not_to raise_error\(SpecificErrorClass\)/, :replacement => "`expect { }.not_to raise_error()`")
210
+ expect { }.not_to raise_error(NameError)
211
+ end
212
+
159
213
  it "passes if nothing is raised" do
160
- expect { }.to_not raise_error(NameError)
214
+ expect { }.not_to raise_error(NameError)
161
215
  end
162
216
 
163
217
  it "passes if another error is raised" do
164
- expect { raise }.to_not raise_error(NameError)
218
+ expect { raise }.not_to raise_error(NameError)
165
219
  end
166
220
 
167
221
  it "fails if named error is raised" do
168
222
  expect {
169
- expect { 1 + 'b' }.to_not raise_error(TypeError)
223
+ expect { 1 + 'b' }.not_to raise_error(TypeError)
170
224
  }.to fail_with(/expected no TypeError, got #<TypeError: String can't be/)
171
225
  end
172
226
  end
@@ -195,6 +249,88 @@ describe "expect { ... }.to raise_error(NamedError, error_message) with String"
195
249
  end
196
250
  end
197
251
 
252
+ describe "expect { ... }.not_to raise_error(NamedError, error_message) with String" do
253
+ before do
254
+ allow(RSpec).to receive(:deprecate)
255
+ end
256
+
257
+ it "is deprecated" do
258
+ expect(RSpec).to receive(:deprecate).with(/not_to raise_error\(SpecificErrorClass, message\)/, :replacement =>"`expect { }.not_to raise_error()`")
259
+ expect {}.not_to raise_error(RuntimeError, "example message")
260
+ end
261
+
262
+ it "passes if nothing is raised" do
263
+ expect {}.not_to raise_error(RuntimeError, "example message")
264
+ end
265
+
266
+ it "passes if a different error is raised" do
267
+ expect { raise }.not_to raise_error(NameError, "example message")
268
+ end
269
+
270
+ it "passes if same error is raised with different message" do
271
+ expect { raise RuntimeError.new("not the example message") }.not_to raise_error(RuntimeError, "example message")
272
+ end
273
+
274
+ it "fails if named error is raised with same message" do
275
+ expect {
276
+ expect { raise "example message" }.not_to raise_error(RuntimeError, "example message")
277
+ }.to fail_with(/expected no RuntimeError with \"example message\", got #<RuntimeError: example message>/)
278
+ end
279
+ end
280
+
281
+ describe "expect { ... }.to raise_error(NamedError, error_message) with Regexp" do
282
+ it "passes if named error is raised with matching message" do
283
+ expect { raise "example message" }.to raise_error(RuntimeError, /ample mess/)
284
+ end
285
+
286
+ it "fails if nothing is raised" do
287
+ expect {
288
+ expect {}.to raise_error(RuntimeError, /ample mess/)
289
+ }.to fail_with(/expected RuntimeError with message matching \/ample mess\/ but nothing was raised/)
290
+ end
291
+
292
+ it "fails if incorrect error is raised" do
293
+ expect {
294
+ expect { raise RuntimeError, "example message" }.to raise_error(NameError, /ample mess/)
295
+ }.to fail_with(/expected NameError with message matching \/ample mess\/, got #<RuntimeError: example message>/)
296
+ end
297
+
298
+ it "fails if correct error is raised with incorrect message" do
299
+ expect {
300
+ expect { raise RuntimeError.new("not the example message") }.to raise_error(RuntimeError, /less than ample mess/)
301
+ }.to fail_with(/expected RuntimeError with message matching \/less than ample mess\/, got #<RuntimeError: not the example message>/)
302
+ end
303
+ end
304
+
305
+ describe "expect { ... }.not_to raise_error(NamedError, error_message) with Regexp" do
306
+ before do
307
+ allow(RSpec).to receive(:deprecate)
308
+ end
309
+
310
+ it "is deprecated" do
311
+ expect(RSpec).to receive(:deprecate)
312
+ expect {}.not_to raise_error(RuntimeError, /ample mess/)
313
+ end
314
+
315
+ it "passes if nothing is raised" do
316
+ expect {}.not_to raise_error(RuntimeError, /ample mess/)
317
+ end
318
+
319
+ it "passes if a different error is raised" do
320
+ expect { raise }.not_to raise_error(NameError, /ample mess/)
321
+ end
322
+
323
+ it "passes if same error is raised with non-matching message" do
324
+ expect { raise RuntimeError.new("non matching message") }.not_to raise_error(RuntimeError, /ample mess/)
325
+ end
326
+
327
+ it "fails if named error is raised with matching message" do
328
+ expect {
329
+ expect { raise "example message" }.not_to raise_error(RuntimeError, /ample mess/)
330
+ }.to fail_with(/expected no RuntimeError with message matching \/ample mess\/, got #<RuntimeError: example message>/)
331
+ end
332
+ end
333
+
198
334
  describe "expect { ... }.to raise_error(NamedError, error_message) { |err| ... }" do
199
335
  it "yields exception if named error is raised with same message" do
200
336
  ran = false
@@ -268,11 +404,20 @@ describe "expect { ... }.to raise_error(NamedError, error_message) { |err| ... }
268
404
  end
269
405
  end
270
406
 
271
- describe "expect { ... }.to_not raise_error(NamedError, error_message) { |err| ... }" do
407
+ describe "expect { ... }.not_to raise_error(NamedError, error_message) { |err| ... }" do
408
+ before do
409
+ allow(RSpec).to receive(:deprecate)
410
+ end
411
+
412
+ it "is deprecated" do
413
+ expect(RSpec).to receive(:deprecate)
414
+ expect {}.not_to raise_error(RuntimeError, "example message") { |err| }
415
+ end
416
+
272
417
  it "passes if nothing is raised" do
273
418
  ran = false
274
419
 
275
- expect {}.to_not raise_error(RuntimeError, "example message") { |err|
420
+ expect {}.not_to raise_error(RuntimeError, "example message") { |err|
276
421
  ran = true
277
422
  }
278
423
 
@@ -282,7 +427,7 @@ describe "expect { ... }.to_not raise_error(NamedError, error_message) { |err| .
282
427
  it "passes if a different error is raised" do
283
428
  ran = false
284
429
 
285
- expect { raise }.to_not raise_error(NameError, "example message") { |err|
430
+ expect { raise }.not_to raise_error(NameError, "example message") { |err|
286
431
  ran = true
287
432
  }
288
433
 
@@ -294,7 +439,7 @@ describe "expect { ... }.to_not raise_error(NamedError, error_message) { |err| .
294
439
 
295
440
  expect {
296
441
  raise RuntimeError.new("not the example message")
297
- }.to_not raise_error(RuntimeError, "example message") { |err|
442
+ }.not_to raise_error(RuntimeError, "example message") { |err|
298
443
  ran = true
299
444
  }
300
445
 
@@ -307,7 +452,7 @@ describe "expect { ... }.to_not raise_error(NamedError, error_message) { |err| .
307
452
  expect {
308
453
  expect {
309
454
  raise "example message"
310
- }.to_not raise_error(RuntimeError, "example message") { |err|
455
+ }.not_to raise_error(RuntimeError, "example message") { |err|
311
456
  ran = true
312
457
  }
313
458
  }.to fail_with(/expected no RuntimeError with \"example message\", got #<RuntimeError: example message>/)
@@ -330,66 +475,11 @@ describe "expect { ... }.to_not raise_error(NamedError, error_message) { |err| .
330
475
  end
331
476
  end
332
477
 
333
- describe "expect { ... }.to_not raise_error(NamedError, error_message) with String" do
334
- it "passes if nothing is raised" do
335
- expect {}.to_not raise_error(RuntimeError, "example message")
336
- end
337
-
338
- it "passes if a different error is raised" do
339
- expect { raise }.to_not raise_error(NameError, "example message")
340
- end
341
-
342
- it "passes if same error is raised with different message" do
343
- expect { raise RuntimeError.new("not the example message") }.to_not raise_error(RuntimeError, "example message")
344
- end
345
-
346
- it "fails if named error is raised with same message" do
347
- expect {
348
- expect { raise "example message" }.to_not raise_error(RuntimeError, "example message")
349
- }.to fail_with(/expected no RuntimeError with \"example message\", got #<RuntimeError: example message>/)
350
- end
351
- end
352
-
353
- describe "expect { ... }.to raise_error(NamedError, error_message) with Regexp" do
354
- it "passes if named error is raised with matching message" do
355
- expect { raise "example message" }.to raise_error(RuntimeError, /ample mess/)
356
- end
357
-
358
- it "fails if nothing is raised" do
359
- expect {
360
- expect {}.to raise_error(RuntimeError, /ample mess/)
361
- }.to fail_with(/expected RuntimeError with message matching \/ample mess\/ but nothing was raised/)
362
- end
363
-
364
- it "fails if incorrect error is raised" do
365
- expect {
366
- expect { raise RuntimeError, "example message" }.to raise_error(NameError, /ample mess/)
367
- }.to fail_with(/expected NameError with message matching \/ample mess\/, got #<RuntimeError: example message>/)
368
- end
369
-
370
- it "fails if correct error is raised with incorrect message" do
371
- expect {
372
- expect { raise RuntimeError.new("not the example message") }.to raise_error(RuntimeError, /less than ample mess/)
373
- }.to fail_with(/expected RuntimeError with message matching \/less than ample mess\/, got #<RuntimeError: not the example message>/)
374
- end
375
- end
376
-
377
- describe "expect { ... }.to_not raise_error(NamedError, error_message) with Regexp" do
378
- it "passes if nothing is raised" do
379
- expect {}.to_not raise_error(RuntimeError, /ample mess/)
380
- end
381
-
382
- it "passes if a different error is raised" do
383
- expect { raise }.to_not raise_error(NameError, /ample mess/)
384
- end
385
-
386
- it "passes if same error is raised with non-matching message" do
387
- expect { raise RuntimeError.new("non matching message") }.to_not raise_error(RuntimeError, /ample mess/)
388
- end
389
-
390
- it "fails if named error is raised with matching message" do
478
+ describe "misuse of raise_error, with (), not {}" do
479
+ it "fails with warning" do
480
+ ::Kernel.should_receive(:warn).with(/`raise_error` was called with non-proc object 1\.7/)
391
481
  expect {
392
- expect { raise "example message" }.to_not raise_error(RuntimeError, /ample mess/)
393
- }.to fail_with(/expected no RuntimeError with message matching \/ample mess\/, got #<RuntimeError: example message>/)
482
+ expect(Math.sqrt(3)).to raise_error
483
+ }.to fail_with(/nothing was raised/)
394
484
  end
395
485
  end