aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core/exception/name_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/exception/name_spec.rb')
-rw-r--r--spec/ruby/core/exception/name_spec.rb61
1 files changed, 61 insertions, 0 deletions
diff --git a/spec/ruby/core/exception/name_spec.rb b/spec/ruby/core/exception/name_spec.rb
new file mode 100644
index 0000000000..e8a3c011d2
--- /dev/null
+++ b/spec/ruby/core/exception/name_spec.rb
@@ -0,0 +1,61 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+
+describe "NameError#name" do
+ it "returns a method name as a symbol" do
+ -> {
+ doesnt_exist
+ }.should raise_error(NameError) {|e| e.name.should == :doesnt_exist }
+ end
+
+ it "returns a constant name as a symbol" do
+ -> {
+ DoesntExist
+ }.should raise_error(NameError) {|e| e.name.should == :DoesntExist }
+ end
+
+ it "returns a constant name without namespace as a symbol" do
+ -> {
+ Object::DoesntExist
+ }.should raise_error(NameError) {|e| e.name.should == :DoesntExist }
+ end
+
+ it "returns a class variable name as a symbol" do
+ -> {
+ -> {
+ @@doesnt_exist
+ }.should complain(/class variable access from toplevel/)
+ }.should raise_error(NameError) { |e| e.name.should == :@@doesnt_exist }
+ end
+
+ ruby_version_is ""..."2.3" do
+ it "always returns a symbol when a NameError is raised from #instance_variable_get" do
+ -> {
+ Object.new.instance_variable_get("invalid_ivar_name")
+ }.should raise_error(NameError) { |e| e.name.should == :invalid_ivar_name }
+ end
+
+ it "always returns a symbol when a NameError is raised from #class_variable_get" do
+ -> {
+ Object.class_variable_get("invalid_cvar_name")
+ }.should raise_error(NameError) { |e| e.name.should == :invalid_cvar_name }
+ end
+ end
+
+ ruby_version_is "2.3" do
+ it "returns the first argument passed to the method when a NameError is raised from #instance_variable_get" do
+ invalid_ivar_name = "invalid_ivar_name"
+
+ -> {
+ Object.new.instance_variable_get(invalid_ivar_name)
+ }.should raise_error(NameError) {|e| e.name.should equal(invalid_ivar_name) }
+ end
+
+ it "returns the first argument passed to the method when a NameError is raised from #class_variable_get" do
+ invalid_cvar_name = "invalid_cvar_name"
+
+ -> {
+ Object.class_variable_get(invalid_cvar_name)
+ }.should raise_error(NameError) {|e| e.name.should equal(invalid_cvar_name) }
+ end
+ end
+end