rspec 1.2.9 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/History.rdoc +34 -1
  2. data/License.txt +1 -1
  3. data/Manifest.txt +11 -4
  4. data/README.rdoc +2 -3
  5. data/Rakefile +17 -13
  6. data/Upgrade.rdoc +63 -2
  7. data/features/formatters/nested_formatter.feature +32 -0
  8. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  9. data/features/matchers/define_matcher_with_fluent_interface.feature +21 -0
  10. data/features/matchers/define_wrapped_matcher.feature +28 -1
  11. data/features/matchers/match_unless_raises.feature +60 -0
  12. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  13. data/features/mocks/block_local_expectations.feature +62 -0
  14. data/features/step_definitions/running_rspec_steps.rb +9 -0
  15. data/features/step_definitions/stubbing_steps.rb +16 -0
  16. data/features/support/env.rb +1 -0
  17. data/features/support/matchers/smart_match.rb +23 -4
  18. data/geminstaller.yml +28 -0
  19. data/lib/autotest/rspec.rb +14 -7
  20. data/lib/spec/dsl/main.rb +1 -1
  21. data/lib/spec/example/example_methods.rb +4 -0
  22. data/lib/spec/{matchers/extensions → extensions}/instance_exec.rb +0 -0
  23. data/lib/spec/interop/test.rb +1 -1
  24. data/lib/spec/matchers.rb +21 -2
  25. data/lib/spec/matchers/be.rb +167 -128
  26. data/lib/spec/matchers/has.rb +3 -3
  27. data/lib/spec/matchers/have.rb +1 -0
  28. data/lib/spec/matchers/matcher.rb +55 -10
  29. data/lib/spec/matchers/method_missing.rb +2 -2
  30. data/lib/spec/matchers/raise_exception.rb +131 -0
  31. data/lib/spec/matchers/throw_symbol.rb +16 -20
  32. data/lib/spec/mocks/message_expectation.rb +63 -48
  33. data/lib/spec/mocks/methods.rb +13 -8
  34. data/lib/spec/mocks/proxy.rb +43 -22
  35. data/lib/spec/runner/differs/default.rb +1 -1
  36. data/lib/spec/runner/drb_command_line.rb +8 -2
  37. data/lib/spec/runner/example_group_runner.rb +1 -2
  38. data/lib/spec/runner/formatter/nested_text_formatter.rb +6 -3
  39. data/lib/spec/runner/option_parser.rb +2 -0
  40. data/lib/spec/runner/options.rb +6 -1
  41. data/lib/spec/stubs/cucumber.rb +2 -2
  42. data/lib/spec/version.rb +2 -2
  43. data/spec/autotest/autotest_helper.rb +1 -1
  44. data/spec/autotest/discover_spec.rb +2 -2
  45. data/spec/autotest/failed_results_re_spec.rb +2 -2
  46. data/spec/autotest/rspec_spec.rb +21 -6
  47. data/spec/spec/example/example_group_methods_spec.rb +2 -1
  48. data/spec/spec/interop/test/unit/spec_spec.rb +7 -7
  49. data/spec/spec/interop/test/unit/testcase_spec.rb +7 -7
  50. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +1 -1
  51. data/spec/spec/matchers/be_spec.rb +159 -10
  52. data/spec/spec/matchers/has_spec.rb +109 -0
  53. data/spec/spec/matchers/matcher_spec.rb +70 -9
  54. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  55. data/spec/spec/matchers/throw_symbol_spec.rb +83 -58
  56. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  57. data/spec/spec/mocks/mock_spec.rb +2 -2
  58. data/spec/spec/runner/command_line_spec.rb +26 -5
  59. data/spec/spec/runner/drb_command_line_spec.rb +39 -0
  60. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +35 -11
  61. data/spec/spec/runner/option_parser_spec.rb +12 -6
  62. data/spec/spec/runner/options_spec.rb +7 -0
  63. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +23 -5
  64. metadata +17 -10
  65. data/lib/spec/matchers/raise_error.rb +0 -129
  66. data/spec/spec/matchers/matcher_methods_spec.rb +0 -63
  67. data/spec/spec/matchers/raise_error_spec.rb +0 -333
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.9
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RSpec Development Team
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-05 00:00:00 -05:00
12
+ date: 2010-01-11 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -23,14 +23,14 @@ dependencies:
23
23
  version: "0.3"
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
- name: bmabey-fakefs
26
+ name: fakefs
27
27
  type: :development
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.1
33
+ version: 0.2.1
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: syntax
@@ -155,6 +155,8 @@ files:
155
155
  - features/expectations/expect_error.feature
156
156
  - features/extensions/custom_example_group.feature
157
157
  - features/formatters/custom_formatter.feature
158
+ - features/formatters/nested_formatter.feature
159
+ - features/interop/cucumber_stubs_dont_leak.feature
158
160
  - features/interop/examples_and_tests_together.feature
159
161
  - features/interop/rspec_output.feature
160
162
  - features/interop/test_but_not_test_unit.feature
@@ -166,19 +168,24 @@ files:
166
168
  - features/matchers/define_matcher_outside_rspec.feature
167
169
  - features/matchers/define_matcher_with_fluent_interface.feature
168
170
  - features/matchers/define_wrapped_matcher.feature
171
+ - features/matchers/match_unless_raises.feature
172
+ - features/matchers/match_unless_raises_unexpected_error.feature
169
173
  - features/mock_framework_integration/use_flexmock.feature
170
174
  - features/mock_framework_integration/use_mocha.feature
171
175
  - features/mock_framework_integration/use_rr.feature
176
+ - features/mocks/block_local_expectations.feature
172
177
  - features/mocks/mix_stubs_and_mocks.feature
173
178
  - features/mocks/stub_implementation.feature
174
179
  - features/pending/pending_examples.feature
175
180
  - features/runner/specify_line_number.feature
176
181
  - features/spec_helper/spec_helper.feature
177
182
  - features/step_definitions/running_rspec_steps.rb
183
+ - features/step_definitions/stubbing_steps.rb
178
184
  - features/subject/explicit_subject.feature
179
185
  - features/subject/implicit_subject.feature
180
186
  - features/support/env.rb
181
187
  - features/support/matchers/smart_match.rb
188
+ - geminstaller.yml
182
189
  - init.rb
183
190
  - lib/autotest/discover.rb
184
191
  - lib/autotest/rspec.rb
@@ -214,6 +221,7 @@ files:
214
221
  - lib/spec/expectations/extensions/kernel.rb
215
222
  - lib/spec/expectations/fail_with.rb
216
223
  - lib/spec/expectations/handler.rb
224
+ - lib/spec/extensions/instance_exec.rb
217
225
  - lib/spec/interop/test.rb
218
226
  - lib/spec/interop/test/unit/autorunner.rb
219
227
  - lib/spec/interop/test/unit/testcase.rb
@@ -232,7 +240,6 @@ files:
232
240
  - lib/spec/matchers/equal.rb
233
241
  - lib/spec/matchers/errors.rb
234
242
  - lib/spec/matchers/exist.rb
235
- - lib/spec/matchers/extensions/instance_exec.rb
236
243
  - lib/spec/matchers/generated_descriptions.rb
237
244
  - lib/spec/matchers/has.rb
238
245
  - lib/spec/matchers/have.rb
@@ -243,7 +250,7 @@ files:
243
250
  - lib/spec/matchers/method_missing.rb
244
251
  - lib/spec/matchers/operator_matcher.rb
245
252
  - lib/spec/matchers/pretty.rb
246
- - lib/spec/matchers/raise_error.rb
253
+ - lib/spec/matchers/raise_exception.rb
247
254
  - lib/spec/matchers/respond_to.rb
248
255
  - lib/spec/matchers/satisfy.rb
249
256
  - lib/spec/matchers/simple_matcher.rb
@@ -362,15 +369,15 @@ files:
362
369
  - spec/spec/matchers/include_spec.rb
363
370
  - spec/spec/matchers/match_array_spec.rb
364
371
  - spec/spec/matchers/match_spec.rb
365
- - spec/spec/matchers/matcher_methods_spec.rb
366
372
  - spec/spec/matchers/matcher_spec.rb
367
373
  - spec/spec/matchers/matchers_spec.rb
368
374
  - spec/spec/matchers/operator_matcher_spec.rb
369
- - spec/spec/matchers/raise_error_spec.rb
375
+ - spec/spec/matchers/raise_exception_spec.rb
370
376
  - spec/spec/matchers/respond_to_spec.rb
371
377
  - spec/spec/matchers/satisfy_spec.rb
372
378
  - spec/spec/matchers/simple_matcher_spec.rb
373
379
  - spec/spec/matchers/throw_symbol_spec.rb
380
+ - spec/spec/mocks/and_yield_spec.rb
374
381
  - spec/spec/mocks/any_number_of_times_spec.rb
375
382
  - spec/spec/mocks/argument_expectation_spec.rb
376
383
  - spec/spec/mocks/argument_matchers_spec.rb
@@ -470,7 +477,7 @@ licenses: []
470
477
  post_install_message: |
471
478
  **************************************************
472
479
 
473
- Thank you for installing rspec-1.2.9
480
+ Thank you for installing rspec-1.3.0
474
481
 
475
482
  Please be sure to read History.rdoc and Upgrade.rdoc
476
483
  for useful information about this release.
@@ -500,6 +507,6 @@ rubyforge_project: rspec
500
507
  rubygems_version: 1.3.5
501
508
  signing_key:
502
509
  specification_version: 3
503
- summary: rspec 1.2.9
510
+ summary: rspec 1.3.0
504
511
  test_files: []
505
512
 
@@ -1,129 +0,0 @@
1
- module Spec
2
- module Matchers
3
- class RaiseError #:nodoc:
4
- def initialize(expected_error_or_message=Exception, expected_message=nil, &block)
5
- @block = block
6
- @actual_error = nil
7
- case expected_error_or_message
8
- when String, Regexp
9
- @expected_error, @expected_message = Exception, expected_error_or_message
10
- else
11
- @expected_error, @expected_message = expected_error_or_message, expected_message
12
- end
13
- end
14
-
15
- def matches?(given_proc)
16
- @raised_expected_error = false
17
- @with_expected_message = false
18
- @eval_block = false
19
- @eval_block_passed = false
20
- begin
21
- given_proc.call
22
- rescue @expected_error => @actual_error
23
- @raised_expected_error = true
24
- @with_expected_message = verify_message
25
- rescue Exception => @actual_error
26
- # This clause should be empty, but rcov will not report it as covered
27
- # unless something (anything) is executed within the clause
28
- rcov_error_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
29
- end
30
-
31
- unless negative_expectation?
32
- eval_block if @raised_expected_error && @with_expected_message && @block
33
- end
34
- ensure
35
- return (@raised_expected_error & @with_expected_message) ? (@eval_block ? @eval_block_passed : true) : false
36
- end
37
-
38
- def eval_block
39
- @eval_block = true
40
- begin
41
- @block[@actual_error]
42
- @eval_block_passed = true
43
- rescue Exception => err
44
- @actual_error = err
45
- end
46
- end
47
-
48
- def verify_message
49
- case @expected_message
50
- when nil
51
- true
52
- when Regexp
53
- @expected_message =~ @actual_error.message
54
- else
55
- @expected_message == @actual_error.message
56
- end
57
- end
58
-
59
- def failure_message_for_should
60
- @eval_block ? @actual_error.message : "expected #{expected_error}#{given_error}"
61
- end
62
-
63
- def failure_message_for_should_not
64
- "expected no #{expected_error}#{given_error}"
65
- end
66
-
67
- def description
68
- "raise #{expected_error}"
69
- end
70
-
71
- private
72
- def expected_error
73
- case @expected_message
74
- when nil
75
- @expected_error
76
- when Regexp
77
- "#{@expected_error} with message matching #{@expected_message.inspect}"
78
- else
79
- "#{@expected_error} with #{@expected_message.inspect}"
80
- end
81
- end
82
-
83
- def given_error
84
- @actual_error.nil? ? " but nothing was raised" : ", got #{@actual_error.inspect}"
85
- end
86
-
87
- def negative_expectation?
88
- # YES - I'm a bad person... help me find a better way - ryand
89
- caller.first(3).find { |s| s =~ /should_not/ }
90
- end
91
- end
92
-
93
- # :call-seq:
94
- # should raise_error()
95
- # should raise_error(NamedError)
96
- # should raise_error(NamedError, String)
97
- # should raise_error(NamedError, Regexp)
98
- # should raise_error() { |error| ... }
99
- # should raise_error(NamedError) { |error| ... }
100
- # should raise_error(NamedError, String) { |error| ... }
101
- # should raise_error(NamedError, Regexp) { |error| ... }
102
- # should_not raise_error()
103
- # should_not raise_error(NamedError)
104
- # should_not raise_error(NamedError, String)
105
- # should_not raise_error(NamedError, Regexp)
106
- #
107
- # With no args, matches if any error is raised.
108
- # With a named error, matches only if that specific error is raised.
109
- # With a named error and messsage specified as a String, matches only if both match.
110
- # With a named error and messsage specified as a Regexp, matches only if both match.
111
- # Pass an optional block to perform extra verifications on the exception matched
112
- #
113
- # == Examples
114
- #
115
- # lambda { do_something_risky }.should raise_error
116
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError)
117
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError) { |error| error.data.should == 42 }
118
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, "that was too risky")
119
- # lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, /oo ri/)
120
- #
121
- # lambda { do_something_risky }.should_not raise_error
122
- # lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError)
123
- # lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, "that was too risky")
124
- # lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, /oo ri/)
125
- def raise_error(error=Exception, message=nil, &block)
126
- Matchers::RaiseError.new(error, message, &block)
127
- end
128
- end
129
- end
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spec
4
- module Matchers
5
- context %Q{The Spec::Matchers module gets included in the execution context of every spec.
6
- This module should provide the following methods, each of which returns a Matcher object.} do
7
- it "be_true" do
8
- be_true.should be_an_instance_of(Be)
9
- end
10
- it "be_false" do
11
- be_false.should be_an_instance_of(Be)
12
- end
13
- it "be_nil" do
14
- be_nil.should be_an_instance_of(Be)
15
- end
16
- it "be_arbitrary_predicate" do
17
- be_arbitrary_predicate.should be_an_instance_of(Be)
18
- end
19
- it "change" do
20
- change("target", :message).should be_an_instance_of(Change)
21
- end
22
- it "have" do
23
- have(0).should be_an_instance_of(Have)
24
- end
25
- it "have_exactly" do
26
- have_exactly(0).should be_an_instance_of(Have)
27
- end
28
- it "have_at_least" do
29
- have_at_least(0).should be_an_instance_of(Have)
30
- end
31
- it "have_at_most" do
32
- have_at_most(0).should be_an_instance_of(Have)
33
- end
34
- it "raise_error" do
35
- raise_error.should be_an_instance_of(RaiseError)
36
- raise_error(NoMethodError).should be_an_instance_of(RaiseError)
37
- raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
38
- end
39
- it "satisfy" do
40
- satisfy{}.should be_an_instance_of(Satisfy)
41
- end
42
- it "throw_symbol" do
43
- throw_symbol.should be_an_instance_of(ThrowSymbol)
44
- throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
45
- end
46
- it "respond_to" do
47
- respond_to(:sym).should be_an_instance_of(RespondTo)
48
- end
49
- end
50
-
51
- describe "Spec::Matchers#method_missing" do
52
- it "should convert be_xyz to Be(:be_xyz)" do
53
- Be.should_receive(:new).with(:be_whatever)
54
- be_whatever
55
- end
56
-
57
- it "should convert have_xyz to Has(:have_xyz)" do
58
- Has.should_receive(:new).with(:have_whatever)
59
- have_whatever
60
- end
61
- end
62
- end
63
- end
@@ -1,333 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "should raise_error" do
4
- it "should pass if anything is raised" do
5
- lambda {raise}.should raise_error
6
- end
7
-
8
- it "should fail if nothing is raised" do
9
- lambda {
10
- lambda {}.should raise_error
11
- }.should fail_with("expected Exception but nothing was raised")
12
- end
13
- end
14
-
15
- describe "should raise_error {|err| ... }" do
16
- it "passes if there is an error" do
17
- ran = false
18
- lambda { non_existent_method }.should raise_error {|e|
19
- ran = true
20
- }
21
- ran.should be_true
22
- end
23
-
24
- it "passes the error to the block" do
25
- error = nil
26
- lambda { non_existent_method }.should raise_error {|e|
27
- error = e
28
- }
29
- error.should be_kind_of(NameError)
30
- end
31
- end
32
-
33
- describe "should_not raise_error" do
34
- it "should pass if nothing is raised" do
35
- lambda {}.should_not raise_error
36
- end
37
-
38
- it "should fail if anything is raised" do
39
- lambda {
40
- lambda {raise}.should_not raise_error
41
- }.should fail_with("expected no Exception, got RuntimeError")
42
- end
43
- end
44
-
45
- describe "should raise_error(message)" do
46
- it "should pass if RuntimeError is raised with the right message" do
47
- lambda {raise 'blah'}.should raise_error('blah')
48
- end
49
- it "should pass if RuntimeError is raised with a matching message" do
50
- lambda {raise 'blah'}.should raise_error(/blah/)
51
- end
52
- it "should pass if any other error is raised with the right message" do
53
- lambda {raise NameError.new('blah')}.should raise_error('blah')
54
- end
55
- it "should fail if RuntimeError error is raised with the wrong message" do
56
- lambda do
57
- lambda {raise 'blarg'}.should raise_error('blah')
58
- end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
59
- end
60
- it "should fail if any other error is raised with the wrong message" do
61
- lambda do
62
- lambda {raise NameError.new('blarg')}.should raise_error('blah')
63
- end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
64
- end
65
- end
66
-
67
- describe "should_not raise_error(message)" do
68
- it "should pass if RuntimeError error is raised with the different message" do
69
- lambda {raise 'blarg'}.should_not raise_error('blah')
70
- end
71
- it "should pass if any other error is raised with the wrong message" do
72
- lambda {raise NameError.new('blarg')}.should_not raise_error('blah')
73
- end
74
- it "should fail if RuntimeError is raised with message" do
75
- lambda do
76
- lambda {raise 'blah'}.should_not raise_error('blah')
77
- end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
78
- end
79
- it "should fail if any other error is raised with message" do
80
- lambda do
81
- lambda {raise NameError.new('blah')}.should_not raise_error('blah')
82
- end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
83
- end
84
- end
85
-
86
- describe "should raise_error(NamedError)" do
87
- it "should pass if named error is raised" do
88
- lambda { non_existent_method }.should raise_error(NameError)
89
- end
90
-
91
- it "should fail if nothing is raised" do
92
- lambda {
93
- lambda { }.should raise_error(NameError)
94
- }.should fail_with("expected NameError but nothing was raised")
95
- end
96
-
97
- it "should fail if another error is raised (NameError)" do
98
- lambda {
99
- lambda { raise }.should raise_error(NameError)
100
- }.should fail_with("expected NameError, got RuntimeError")
101
- end
102
-
103
- it "should fail if another error is raised (NameError)" do
104
- lambda {
105
- lambda { load "non/existent/file" }.should raise_error(NameError)
106
- }.should fail_with(/expected NameError, got #<LoadError/)
107
- end
108
- end
109
-
110
- describe "should_not raise_error(NamedError)" do
111
- it "should pass if nothing is raised" do
112
- lambda { }.should_not raise_error(NameError)
113
- end
114
-
115
- it "should pass if another error is raised" do
116
- lambda { raise }.should_not raise_error(NameError)
117
- end
118
-
119
- it "should fail if named error is raised" do
120
- lambda {
121
- lambda { 1 + 'b' }.should_not raise_error(TypeError)
122
- }.should fail_with(/expected no TypeError, got #<TypeError: String can't be/)
123
- end
124
- end
125
-
126
- describe "should raise_error(NamedError, error_message) with String" do
127
- it "should pass if named error is raised with same message" do
128
- lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
129
- end
130
-
131
- it "should fail if nothing is raised" do
132
- lambda {
133
- lambda {}.should raise_error(RuntimeError, "example message")
134
- }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
135
- end
136
-
137
- it "should fail if incorrect error is raised" do
138
- lambda {
139
- lambda { raise }.should raise_error(NameError, "example message")
140
- }.should fail_with("expected NameError with \"example message\", got RuntimeError")
141
- end
142
-
143
- it "should fail if correct error is raised with incorrect message" do
144
- lambda {
145
- lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
146
- }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
147
- end
148
- end
149
-
150
- describe "should raise_error(NamedError, error_message) { |err| ... }" do
151
- it "should yield exception if named error is raised with same message" do
152
- ran = false
153
-
154
- lambda {
155
- raise "example message"
156
- }.should raise_error(RuntimeError, "example message") { |err|
157
- ran = true
158
- err.class.should == RuntimeError
159
- err.message.should == "example message"
160
- }
161
-
162
- ran.should == true
163
- end
164
-
165
- it "yielded block should be able to fail on it's own right" do
166
- ran, passed = false, false
167
-
168
- lambda {
169
- lambda {
170
- raise "example message"
171
- }.should raise_error(RuntimeError, "example message") { |err|
172
- ran = true
173
- 5.should == 4
174
- passed = true
175
- }
176
- }.should fail_with(/expected: 4/m)
177
-
178
- ran.should == true
179
- passed.should == false
180
- end
181
-
182
- it "should NOT yield exception if no error was thrown" do
183
- ran = false
184
-
185
- lambda {
186
- lambda {}.should raise_error(RuntimeError, "example message") { |err|
187
- ran = true
188
- }
189
- }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
190
-
191
- ran.should == false
192
- end
193
-
194
- it "should not yield exception if error class is not matched" do
195
- ran = false
196
-
197
- lambda {
198
- lambda {
199
- raise "example message"
200
- }.should raise_error(SyntaxError, "example message") { |err|
201
- ran = true
202
- }
203
- }.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
204
-
205
- ran.should == false
206
- end
207
-
208
- it "should NOT yield exception if error message is not matched" do
209
- ran = false
210
-
211
- lambda {
212
- lambda {
213
- raise "example message"
214
- }.should raise_error(RuntimeError, "different message") { |err|
215
- ran = true
216
- }
217
- }.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
218
-
219
- ran.should == false
220
- end
221
- end
222
-
223
- describe "should_not raise_error(NamedError, error_message) { |err| ... }" do
224
- it "should pass if nothing is raised" do
225
- ran = false
226
-
227
- lambda {}.should_not raise_error(RuntimeError, "example message") { |err|
228
- ran = true
229
- }
230
-
231
- ran.should == false
232
- end
233
-
234
- it "should pass if a different error is raised" do
235
- ran = false
236
-
237
- lambda { raise }.should_not raise_error(NameError, "example message") { |err|
238
- ran = true
239
- }
240
-
241
- ran.should == false
242
- end
243
-
244
- it "should pass if same error is raised with different message" do
245
- ran = false
246
-
247
- lambda {
248
- raise RuntimeError.new("not the example message")
249
- }.should_not raise_error(RuntimeError, "example message") { |err|
250
- ran = true
251
- }
252
-
253
- ran.should == false
254
- end
255
-
256
- it "should fail if named error is raised with same message" do
257
- ran = false
258
-
259
- lambda {
260
- lambda {
261
- raise "example message"
262
- }.should_not raise_error(RuntimeError, "example message") { |err|
263
- ran = true
264
- }
265
- }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
266
-
267
- ran.should == false
268
- end
269
- end
270
-
271
- describe "should_not raise_error(NamedError, error_message) with String" do
272
- it "should pass if nothing is raised" do
273
- lambda {}.should_not raise_error(RuntimeError, "example message")
274
- end
275
-
276
- it "should pass if a different error is raised" do
277
- lambda { raise }.should_not raise_error(NameError, "example message")
278
- end
279
-
280
- it "should pass if same error is raised with different message" do
281
- lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
282
- end
283
-
284
- it "should fail if named error is raised with same message" do
285
- lambda {
286
- lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
287
- }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
288
- end
289
- end
290
-
291
- describe "should raise_error(NamedError, error_message) with Regexp" do
292
- it "should pass if named error is raised with matching message" do
293
- lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
294
- end
295
-
296
- it "should fail if nothing is raised" do
297
- lambda {
298
- lambda {}.should raise_error(RuntimeError, /ample mess/)
299
- }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
300
- end
301
-
302
- it "should fail if incorrect error is raised" do
303
- lambda {
304
- lambda { raise }.should raise_error(NameError, /ample mess/)
305
- }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
306
- end
307
-
308
- it "should fail if correct error is raised with incorrect message" do
309
- lambda {
310
- lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
311
- }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
312
- end
313
- end
314
-
315
- describe "should_not raise_error(NamedError, error_message) with Regexp" do
316
- it "should pass if nothing is raised" do
317
- lambda {}.should_not raise_error(RuntimeError, /ample mess/)
318
- end
319
-
320
- it "should pass if a different error is raised" do
321
- lambda { raise }.should_not raise_error(NameError, /ample mess/)
322
- end
323
-
324
- it "should pass if same error is raised with non-matching message" do
325
- lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
326
- end
327
-
328
- it "should fail if named error is raised with matching message" do
329
- lambda {
330
- lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
331
- }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
332
- end
333
- end