summaryrefslogtreecommitdiff
path: root/spec/ruby/shared
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-27 10:48:40 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-27 10:48:40 +0000
commit3e6337b88b5255aba07b8f44de72cd5885f59465 (patch)
tree6146781aa381404b88ea4bfa2a44e75e8bc90d14 /spec/ruby/shared
parentecc707e233a5577ea2048b3199d4baaf96c6b0f8 (diff)
Update to ruby/spec@8b743a3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/shared')
-rw-r--r--spec/ruby/shared/basicobject/send.rb7
-rw-r--r--spec/ruby/shared/kernel/raise.rb18
2 files changed, 24 insertions, 1 deletions
diff --git a/spec/ruby/shared/basicobject/send.rb b/spec/ruby/shared/basicobject/send.rb
index f8c63c5522..2b79ab4c2c 100644
--- a/spec/ruby/shared/basicobject/send.rb
+++ b/spec/ruby/shared/basicobject/send.rb
@@ -29,6 +29,13 @@ describe :basicobject_send, shared: true do
SendSpecs::Foo.send(@method, :bar).should == 'done'
end
+ it "raises a TypeError if the method name is not a string or symbol" do
+ -> { SendSpecs.send(@method, nil) }.should raise_error(TypeError, /not a symbol nor a string/)
+ -> { SendSpecs.send(@method, 42) }.should raise_error(TypeError, /not a symbol nor a string/)
+ -> { SendSpecs.send(@method, 3.14) }.should raise_error(TypeError, /not a symbol nor a string/)
+ -> { SendSpecs.send(@method, true) }.should raise_error(TypeError, /not a symbol nor a string/)
+ end
+
it "raises a NameError if the corresponding method can't be found" do
class SendSpecs::Foo
def bar
diff --git a/spec/ruby/shared/kernel/raise.rb b/spec/ruby/shared/kernel/raise.rb
index 70d638fff9..4128a636ad 100644
--- a/spec/ruby/shared/kernel/raise.rb
+++ b/spec/ruby/shared/kernel/raise.rb
@@ -41,7 +41,7 @@ describe :kernel_raise, shared: true do
lambda { @object.raise(nil) }.should raise_error(TypeError)
end
- it "re-raises the rescued exception" do
+ it "re-raises the previously rescued exception if no exception is specified" do
lambda do
begin
raise Exception, "outer"
@@ -60,6 +60,22 @@ describe :kernel_raise, shared: true do
ScratchPad.recorded.should be_nil
end
+ it "re-raises a previously rescued exception without overwriting the backtrace" do
+ begin
+ raise 'raised'
+ rescue => raised
+ begin
+ raise_again_line = __LINE__; raise raised
+ rescue => raised_again
+ # This spec is written using #backtrace and matching the line number
+ # from the string, as backtrace_locations is a more advanced
+ # method that is not always supported by implementations.
+
+ raised_again.backtrace.first.should_not include(":#{raise_again_line}:")
+ end
+ end
+ end
+
it "allows Exception, message, and backtrace parameters" do
lambda do
@object.raise(ArgumentError, "message", caller)