summaryrefslogtreecommitdiffhomepage
path: root/test/t/class.rb
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-08-30 16:07:59 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-08-30 22:30:36 +0900
commite471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed (patch)
tree9f474e50d1dd921abe1e2611fd33e9e03825d191 /test/t/class.rb
parent75a01af710309e4fc53db285c9018e233c61cb56 (diff)
downloadmruby-e471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed.tar.gz
mruby-e471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed.zip
Separate meta-programming features to `mruby-metaprog` gem.
We assume meta-programming is less used in embedded environments. We have moved following methods: * Kernel module global_variables, local_variables, singleton_class, instance_variables, instance_variables_defined?, instance_variable_get, instance_variable_set, methods, private_methods, public_methods, protected_methods, singleton_methods, define_singleton_methods * Module class class_variables, class_variables_defined?, class_variable_get, class_variable_set, remove_class_variable, included_modules, instance_methods, remove_method, method_removed, constants * Module class methods constants, nesting Note: Following meta-programming methods are kept in the core: * Module class alias_method, undef_method, ancestors, const_defined?, const_get, const_set, remove_const, method_defined?, define_method * Toplevel object define_method `mruby-metaprog` gem is linked by default (specified in default.gembox). When it is removed, it will save 40KB (stripped:8KB) on x86-64 environment last time I measured.
Diffstat (limited to 'test/t/class.rb')
-rw-r--r--test/t/class.rb25
1 files changed, 4 insertions, 21 deletions
diff --git a/test/t/class.rb b/test/t/class.rb
index a5118fa93..85450f200 100644
--- a/test/t/class.rb
+++ b/test/t/class.rb
@@ -36,7 +36,7 @@ end
assert('Class#new', '15.2.3.3.3') do
assert_raise(TypeError, 'Singleton should raise TypeError') do
- "a".singleton_class.new
+ (class <<"a"; self; end).new
end
class TestClass
@@ -293,15 +293,7 @@ assert('singleton tests') do
end
end
- assert_false baz.singleton_methods.include? :run_foo_mod
- assert_false baz.singleton_methods.include? :run_baz
-
- assert_raise(NoMethodError, 'should raise NoMethodError') do
- baz.run_foo_mod
- end
- assert_raise(NoMethodError, 'should raise NoMethodError') do
- baz.run_baz
- end
+ assert_equal :run_baz, baz
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_foo_mod
@@ -318,8 +310,8 @@ assert('singleton tests') do
self
end
- assert_true baz.singleton_methods.include? :run_baz
- assert_true baz.singleton_methods.include? :run_foo_mod
+ assert_true baz.respond_to? :run_baz
+ assert_true baz.respond_to? :run_foo_mod
assert_equal 100, baz.run_foo_mod
assert_equal 300, baz.run_baz
@@ -440,12 +432,3 @@ assert('class with non-class/module outer raises TypeError') do
assert_raise(TypeError) { class 0::C1; end }
assert_raise(TypeError) { class []::C2; end }
end
-
-assert("remove_method doesn't segfault if the passed in argument isn't a symbol") do
- klass = Class.new
- assert_raise(TypeError) { klass.remove_method nil }
- assert_raise(TypeError) { klass.remove_method 123 }
- assert_raise(TypeError) { klass.remove_method 1.23 }
- assert_raise(NameError) { klass.remove_method "hello" }
- assert_raise(TypeError) { klass.remove_method Class.new }
-end