diff options
Diffstat (limited to 'spec/ruby/core/exception/cause_spec.rb')
| -rw-r--r-- | spec/ruby/core/exception/cause_spec.rb | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/spec/ruby/core/exception/cause_spec.rb b/spec/ruby/core/exception/cause_spec.rb index cf4aaeb188..cfc15bdda3 100644 --- a/spec/ruby/core/exception/cause_spec.rb +++ b/spec/ruby/core/exception/cause_spec.rb @@ -4,53 +4,35 @@ describe "Exception#cause" do it "returns the active exception when an exception is raised" do begin raise Exception, "the cause" - rescue Exception - begin + rescue Exception => cause + -> { raise RuntimeError, "the consequence" - rescue RuntimeError => e - e.should be_an_instance_of(RuntimeError) - e.message.should == "the consequence" - - e.cause.should be_an_instance_of(Exception) - e.cause.message.should == "the cause" - end + }.should.raise(RuntimeError, "the consequence", cause:) end end it "is set for user errors caused by internal errors" do - -> { - begin - 1 / 0 - rescue - raise "foo" - end - }.should raise_error(RuntimeError) { |e| - e.cause.should be_kind_of(ZeroDivisionError) - } + begin + 1 / 0 + rescue => cause + -> { raise "foo" }.should.raise(RuntimeError, cause:) + end end it "is set for internal errors caused by user errors" do cause = RuntimeError.new "cause" - -> { - begin - raise cause - rescue - 1 / 0 - end - }.should raise_error(ZeroDivisionError) { |e| - e.cause.should equal(cause) - } + begin + raise cause + rescue + -> { 1 / 0 }.should.raise(ZeroDivisionError, cause:) + end end it "is not set to the exception itself when it is re-raised" do - -> { - begin - raise RuntimeError - rescue RuntimeError => e - raise e - end - }.should raise_error(RuntimeError) { |e| - e.cause.should == nil - } + begin + raise RuntimeError + rescue RuntimeError => e + -> { raise e }.should.raise(RuntimeError, cause: nil) + end end end |
