1 require File.dirname(__FILE__) + '/../../spec_helper.rb'
5 describe Example, " declared with {:should_raise => ...}" do
7 @reporter = mock("reporter")
8 @reporter.stub!(:example_started)
11 def verify_error(error, message=nil)
12 error.should be_an_instance_of(Spec::Expectations::ExpectationNotMetError)
14 return error.message.should =~ message if Regexp === message
15 return error.message.should == message
19 it "true} should pass when there is an ExpectationNotMetError" do
20 example = Spec::DSL:: Example.new("example", :should_raise => true) do
21 raise Spec::Expectations::ExpectationNotMetError
23 @reporter.should_receive(:example_finished) do |description, error|
26 example.run(@reporter, nil, nil, nil, nil)
29 it "true} should fail if nothing is raised" do
30 example = Spec::DSL:: Example.new("example", :should_raise => true) {}
31 @reporter.should_receive(:example_finished) do |example_name, error|
32 verify_error(error, /example block expected Exception but nothing was raised/)
34 example.run(@reporter, nil, nil, nil, nil)
37 it "NameError} should pass when there is a NameError" do
38 example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
41 @reporter.should_receive(:example_finished) do |example_name, error|
44 example.run(@reporter, nil, nil, nil, nil)
47 it "NameError} should fail when there is no error" do
48 example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
51 @reporter.should_receive(:example_finished) do |example_name, error|
52 verify_error(error,/example block expected NameError but nothing was raised/)
54 example.run(@reporter, nil, nil, nil, nil)
57 it "NameError} should fail when there is the wrong error" do
58 example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
61 @reporter.should_receive(:example_finished) do |example_name, error|
62 verify_error(error, /example block expected NameError but raised.+RuntimeError/)
64 example.run(@reporter, nil, nil, nil, nil)
67 it "[NameError]} should pass when there is a NameError" do
68 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
71 @reporter.should_receive(:example_finished) do |description, error|
74 example.run(@reporter, nil, nil, nil, nil)
77 it "[NameError]} should fail when there is no error" do
78 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
80 @reporter.should_receive(:example_finished) do |description, error|
81 verify_error(error, /example block expected NameError but nothing was raised/)
83 example.run(@reporter, nil, nil, nil, nil)
86 it "[NameError]} should fail when there is the wrong error" do
87 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
90 @reporter.should_receive(:example_finished) do |description, error|
91 verify_error(error, /example block expected NameError but raised.+RuntimeError/)
93 example.run(@reporter, nil, nil, nil, nil)
96 it "[NameError, 'message'} should pass when there is a NameError with the right message" do
97 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, 'expected']) do
98 raise NameError, 'expected'
100 @reporter.should_receive(:example_finished) do |description, error|
103 example.run(@reporter, nil, nil, nil, nil)
106 it "[NameError, 'message'} should pass when there is a NameError with a message matching a regex" do
107 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, /xpec/]) do
108 raise NameError, 'expected'
110 @reporter.should_receive(:example_finished) do |description, error|
113 example.run(@reporter, nil, nil, nil, nil)
116 it "[NameError, 'message'} should fail when there is a NameError with the wrong message" do
117 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, 'expected']) do
118 raise NameError, 'wrong message'
120 @reporter.should_receive(:example_finished) do |description, error|
121 verify_error(error, /example block expected #<NameError: expected> but raised #<NameError: wrong message>/)
123 example.run(@reporter, nil, nil, nil, nil)
126 it "[NameError, 'message'} should fail when there is a NameError with a message not matching regexp" do
127 example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, /exp/]) do
128 raise NameError, 'wrong message'
130 @reporter.should_receive(:example_finished) do |description, error|
131 verify_error(error, /example block expected #<NameError: \(\?-mix:exp\)> but raised #<NameError: wrong message>/)
133 example.run(@reporter, nil, nil, nil, nil)