summaryrefslogtreecommitdiff
path: root/test/-ext-/symbol/test_inadvertent_creation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/-ext-/symbol/test_inadvertent_creation.rb')
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb43
1 files changed, 37 insertions, 6 deletions
diff --git a/test/-ext-/symbol/test_inadvertent_creation.rb b/test/-ext-/symbol/test_inadvertent_creation.rb
index 9c5fa04407..14e6abd7a3 100644
--- a/test/-ext-/symbol/test_inadvertent_creation.rb
+++ b/test/-ext-/symbol/test_inadvertent_creation.rb
@@ -15,19 +15,31 @@ module Test_Symbol
@obj = Object.new
end
+ def assert_not_pinneddown(name, msg = nil)
+ assert_not_send([Bug::Symbol, :pinneddown?, name], msg)
+ end
+
def assert_not_interned(name, msg = nil)
assert_not_send([Bug::Symbol, :find, name], msg)
end
- def assert_not_interned_error(obj, meth, name, msg = nil)
- e = assert_raise(NameError, msg) {obj.__send__(meth, name)}
- assert_not_interned(name, msg)
+ def assert_not_interned_error(obj, meth, name, msg = nil, &block)
+ e = assert_raise(NameError, msg) {obj.__send__(meth, name, &block)}
+ if Symbol === name
+ assert_not_pinneddown(name, msg)
+ else
+ assert_not_interned(name, msg)
+ end
e
end
def assert_not_interned_false(obj, meth, name, msg = nil)
assert_not_send([obj, meth, name], msg)
- assert_not_interned(name, msg)
+ if Symbol === name
+ assert_not_pinneddown(name, msg)
+ else
+ assert_not_interned(name, msg)
+ end
end
Feature5072 = '[ruby-core:38367]'
@@ -37,6 +49,8 @@ module Test_Symbol
name = noninterned_name("A")
assert_not_interned_error(cl, :const_get, name, Feature5072)
+
+ assert_not_interned_error(cl, :const_get, name.to_sym)
end
def test_module_const_defined?
@@ -44,6 +58,9 @@ module Test_Symbol
name = noninterned_name("A")
assert_not_interned_false(cl, :const_defined?, name, Feature5072)
+
+ name = noninterned_name
+ assert_not_interned_error(cl, :const_defined?, name.to_sym)
end
def test_respond_to_missing
@@ -115,8 +132,8 @@ module Test_Symbol
end
s = noninterned_name("A")
- # assert_not_interned_error(c, :const_get, s, feature5089)
- assert_not_interned_false(c, :autoload?, s, feature5089)
+ assert_not_interned_error(c, :const_get, s.to_sym, feature5089)
+ assert_not_interned_false(c, :autoload?, s.to_sym, feature5089)
end
def test_aliased_method
@@ -206,6 +223,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.const_set(name, true)}
assert_not_interned(name)
+ assert_raise(NameError) {mod.const_set(name.to_sym, true)}
+ assert_not_pinneddown(name)
end
def test_module_cvar_set
@@ -213,6 +232,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.class_variable_set(name, true)}
assert_not_interned(name)
+ assert_raise(NameError) {mod.class_variable_set(name.to_sym, true)}
+ assert_not_pinneddown(name)
end
def test_object_ivar_set
@@ -220,6 +241,8 @@ module Test_Symbol
obj = Object.new
assert_raise(NameError) {obj.instance_variable_set(name, true)}
assert_not_interned(name)
+ assert_raise(NameError) {obj.instance_variable_set(name.to_sym, true)}
+ assert_not_pinneddown(name)
end
def test_struct_new
@@ -247,6 +270,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_invalid_attr_reader
@@ -254,6 +279,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr_reader(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr_reader(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_invalid_attr_writer
@@ -261,6 +288,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr_writer(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr_writer(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_invalid_attr_accessor
@@ -268,6 +297,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr_accessor(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr_accessor(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_gc_attrset