summaryrefslogtreecommitdiff
path: root/spec/ruby/core/module
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2021-07-29 22:11:21 +0200
committerBenoit Daloze <eregontp@gmail.com>2021-07-29 22:11:21 +0200
commit6998d758248d778fa95b008c78d05473e48b8428 (patch)
tree8abc6926f647ea5f374a5b34c3a4820c5861e32e /spec/ruby/core/module
parent15d05f8120745a121b93fab9fd2addf5f094e8d2 (diff)
Update to ruby/spec@b65d01f
Diffstat (limited to 'spec/ruby/core/module')
-rw-r--r--spec/ruby/core/module/include_spec.rb156
-rw-r--r--spec/ruby/core/module/method_defined_spec.rb90
-rw-r--r--spec/ruby/core/module/prepend_spec.rb185
-rw-r--r--spec/ruby/core/module/private_method_defined_spec.rb88
-rw-r--r--spec/ruby/core/module/protected_method_defined_spec.rb88
-rw-r--r--spec/ruby/core/module/refine_spec.rb130
-rw-r--r--spec/ruby/core/module/remove_const_spec.rb21
7 files changed, 525 insertions, 233 deletions
diff --git a/spec/ruby/core/module/include_spec.rb b/spec/ruby/core/module/include_spec.rb
index c7ead1079c..128b9af2bf 100644
--- a/spec/ruby/core/module/include_spec.rb
+++ b/spec/ruby/core/module/include_spec.rb
@@ -376,6 +376,162 @@ describe "Module#include" do
foo.call.should == 'n'
end
+
+ it "updates the constant when an included module is updated" do
+ module ModuleSpecs::ConstUpdated
+ module A
+ FOO = 'a'
+ end
+
+ module M
+ end
+
+ module B
+ include A
+ include M
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+
+ M.const_set(:FOO, 'm')
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a module included after a call is later updated" do
+ module ModuleSpecs::ConstLaterUpdated
+ module A
+ FOO = 'a'
+ end
+
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+
+ module M
+ end
+ B.include M
+
+ B.foo.should == 'a'
+
+ M.const_set(:FOO, 'm')
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a module included in another module after a call is later updated" do
+ module ModuleSpecs::ConstModuleLaterUpdated
+ module A
+ FOO = 'a'
+ end
+
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+
+ module M
+ end
+ B.include M
+
+ B.foo.should == 'a'
+
+ M.const_set(:FOO, 'm')
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a nested included module is updated" do
+ module ModuleSpecs::ConstUpdatedNestedIncludeUpdated
+ module A
+ FOO = 'a'
+ end
+
+ module N
+ end
+
+ module M
+ include N
+ end
+
+ module B
+ include A
+ include M
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+
+ N.const_set(:FOO, 'n')
+ B.foo.should == 'n'
+ end
+ end
+
+ it "updates the constant when a new module is included" do
+ module ModuleSpecs::ConstUpdatedNewInclude
+ module A
+ FOO = 'a'
+ end
+
+ module M
+ FOO = 'm'
+ end
+
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+
+ B.include(M)
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a new module with nested module is included" do
+ module ModuleSpecs::ConstUpdatedNestedIncluded
+ module A
+ FOO = 'a'
+ end
+
+ module N
+ FOO = 'n'
+ end
+
+ module M
+ include N
+ end
+
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+
+ B.include M
+ B.foo.should == 'n'
+ end
+ end
end
describe "Module#include?" do
diff --git a/spec/ruby/core/module/method_defined_spec.rb b/spec/ruby/core/module/method_defined_spec.rb
index dccee870b1..bc5b420e11 100644
--- a/spec/ruby/core/module/method_defined_spec.rb
+++ b/spec/ruby/core/module/method_defined_spec.rb
@@ -47,54 +47,52 @@ describe "Module#method_defined?" do
c.method_defined?(o).should == true
end
- ruby_version_is "2.6" do
- # works as method_defined?(method_name)
- describe "when passed true as a second optional argument" do
- it "performs a lookup in ancestors" do
- ModuleSpecs::Child.method_defined?(:public_child, true).should == true
- ModuleSpecs::Child.method_defined?(:protected_child, true).should == true
- ModuleSpecs::Child.method_defined?(:accessor_method, true).should == true
- ModuleSpecs::Child.method_defined?(:private_child, true).should == false
-
- # Defined in Parent
- ModuleSpecs::Child.method_defined?(:public_parent, true).should == true
- ModuleSpecs::Child.method_defined?(:protected_parent, true).should == true
- ModuleSpecs::Child.method_defined?(:private_parent, true).should == false
-
- # Defined in Module
- ModuleSpecs::Child.method_defined?(:public_module, true).should == true
- ModuleSpecs::Child.method_defined?(:protected_module, true).should == true
- ModuleSpecs::Child.method_defined?(:private_module, true).should == false
-
- # Defined in SuperModule
- ModuleSpecs::Child.method_defined?(:public_super_module, true).should == true
- ModuleSpecs::Child.method_defined?(:protected_super_module, true).should == true
- ModuleSpecs::Child.method_defined?(:private_super_module, true).should == false
- end
+ # works as method_defined?(method_name)
+ describe "when passed true as a second optional argument" do
+ it "performs a lookup in ancestors" do
+ ModuleSpecs::Child.method_defined?(:public_child, true).should == true
+ ModuleSpecs::Child.method_defined?(:protected_child, true).should == true
+ ModuleSpecs::Child.method_defined?(:accessor_method, true).should == true
+ ModuleSpecs::Child.method_defined?(:private_child, true).should == false
+
+ # Defined in Parent
+ ModuleSpecs::Child.method_defined?(:public_parent, true).should == true
+ ModuleSpecs::Child.method_defined?(:protected_parent, true).should == true
+ ModuleSpecs::Child.method_defined?(:private_parent, true).should == false
+
+ # Defined in Module
+ ModuleSpecs::Child.method_defined?(:public_module, true).should == true
+ ModuleSpecs::Child.method_defined?(:protected_module, true).should == true
+ ModuleSpecs::Child.method_defined?(:private_module, true).should == false
+
+ # Defined in SuperModule
+ ModuleSpecs::Child.method_defined?(:public_super_module, true).should == true
+ ModuleSpecs::Child.method_defined?(:protected_super_module, true).should == true
+ ModuleSpecs::Child.method_defined?(:private_super_module, true).should == false
end
+ end
- describe "when passed false as a second optional argument" do
- it "checks only the class itself" do
- ModuleSpecs::Child.method_defined?(:public_child, false).should == true
- ModuleSpecs::Child.method_defined?(:protected_child, false).should == true
- ModuleSpecs::Child.method_defined?(:accessor_method, false).should == true
- ModuleSpecs::Child.method_defined?(:private_child, false).should == false
-
- # Defined in Parent
- ModuleSpecs::Child.method_defined?(:public_parent, false).should == false
- ModuleSpecs::Child.method_defined?(:protected_parent, false).should == false
- ModuleSpecs::Child.method_defined?(:private_parent, false).should == false
-
- # Defined in Module
- ModuleSpecs::Child.method_defined?(:public_module, false).should == false
- ModuleSpecs::Child.method_defined?(:protected_module, false).should == false
- ModuleSpecs::Child.method_defined?(:private_module, false).should == false
-
- # Defined in SuperModule
- ModuleSpecs::Child.method_defined?(:public_super_module, false).should == false
- ModuleSpecs::Child.method_defined?(:protected_super_module, false).should == false
- ModuleSpecs::Child.method_defined?(:private_super_module, false).should == false
- end
+ describe "when passed false as a second optional argument" do
+ it "checks only the class itself" do
+ ModuleSpecs::Child.method_defined?(:public_child, false).should == true
+ ModuleSpecs::Child.method_defined?(:protected_child, false).should == true
+ ModuleSpecs::Child.method_defined?(:accessor_method, false).should == true
+ ModuleSpecs::Child.method_defined?(:private_child, false).should == false
+
+ # Defined in Parent
+ ModuleSpecs::Child.method_defined?(:public_parent, false).should == false
+ ModuleSpecs::Child.method_defined?(:protected_parent, false).should == false
+ ModuleSpecs::Child.method_defined?(:private_parent, false).should == false
+
+ # Defined in Module
+ ModuleSpecs::Child.method_defined?(:public_module, false).should == false
+ ModuleSpecs::Child.method_defined?(:protected_module, false).should == false
+ ModuleSpecs::Child.method_defined?(:private_module, false).should == false
+
+ # Defined in SuperModule
+ ModuleSpecs::Child.method_defined?(:public_super_module, false).should == false
+ ModuleSpecs::Child.method_defined?(:protected_super_module, false).should == false
+ ModuleSpecs::Child.method_defined?(:private_super_module, false).should == false
end
end
end
diff --git a/spec/ruby/core/module/prepend_spec.rb b/spec/ruby/core/module/prepend_spec.rb
index f11ca1b8b6..04cc27d472 100644
--- a/spec/ruby/core/module/prepend_spec.rb
+++ b/spec/ruby/core/module/prepend_spec.rb
@@ -222,6 +222,191 @@ describe "Module#prepend" do
foo.call.should == 'n'
end
+ it "updates the constant when a module is prepended" do
+ module ModuleSpecs::ConstUpdatePrepended
+ module M
+ FOO = 'm'
+ end
+ module A
+ FOO = 'a'
+ end
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+
+ B.foo.should == 'a'
+ B.prepend M
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a prepended module is updated" do
+ module ModuleSpecs::ConstPrependedUpdated
+ module M
+ end
+ module A
+ FOO = 'a'
+ end
+ module B
+ include A
+ prepend M
+ def self.foo
+ FOO
+ end
+ end
+ B.foo.should == 'a'
+ M.const_set(:FOO, 'm')
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when there is a base included constant and the prepended module overrides it" do
+ module ModuleSpecs::ConstIncludedPrependedOverride
+ module Base
+ FOO = 'a'
+ end
+ module A
+ include Base
+ def self.foo
+ FOO
+ end
+ end
+ A.foo.should == 'a'
+
+ module M
+ FOO = 'm'
+ end
+ A.prepend M
+ A.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when there is a base included constant and the prepended module is later updated" do
+ module ModuleSpecs::ConstIncludedPrependedLaterUpdated
+ module Base
+ FOO = 'a'
+ end
+ module A
+ include Base
+ def self.foo
+ FOO
+ end
+ end
+ A.foo.should == 'a'
+
+ module M
+ end
+ A.prepend M
+ A.foo.should == 'a'
+
+ M.const_set(:FOO, 'm')
+ A.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a module prepended after a constant is later updated" do
+ module ModuleSpecs::ConstUpdatedPrependedAfterLaterUpdated
+ module M
+ end
+ module A
+ FOO = 'a'
+ end
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+ B.foo.should == 'a'
+
+ B.prepend M
+ B.foo.should == 'a'
+
+ M.const_set(:FOO, 'm')
+ B.foo.should == 'm'
+ end
+ end
+
+ it "updates the constant when a module is prepended after another and the constant is defined later on that module" do
+ module ModuleSpecs::ConstUpdatedPrependedAfterConstDefined
+ module M
+ FOO = 'm'
+ end
+ module A
+ prepend M
+ def self.foo
+ FOO
+ end
+ end
+
+ A.foo.should == 'm'
+
+ module N
+ end
+ A.prepend N
+ A.foo.should == 'm'
+
+ N.const_set(:FOO, 'n')
+ A.foo.should == 'n'
+ end
+ end
+
+ it "updates the constant when a module is included in a prepended module and the constant is defined later" do
+ module ModuleSpecs::ConstUpdatedIncludedInPrependedConstDefinedLater
+ module A
+ def self.foo
+ FOO
+ end
+ end
+ module Base
+ FOO = 'a'
+ end
+
+ A.prepend Base
+ A.foo.should == 'a'
+
+ module N
+ end
+ module M
+ include N
+ end
+
+ A.prepend M
+
+ N.const_set(:FOO, 'n')
+ A.foo.should == 'n'
+ end
+ end
+
+ it "updates the constant when a new module with an included module is prepended" do
+ module ModuleSpecs::ConstUpdatedNewModuleIncludedPrepended
+ module A
+ FOO = 'a'
+ end
+ module B
+ include A
+ def self.foo
+ FOO
+ end
+ end
+ module N
+ FOO = 'n'
+ end
+
+ module M
+ include N
+ end
+
+ B.foo.should == 'a'
+
+ B.prepend M
+ B.foo.should == 'n'
+ end
+ end
+
it "raises a TypeError when the argument is not a Module" do
-> { ModuleSpecs::Basic.prepend(Class.new) }.should raise_error(TypeError)
end
diff --git a/spec/ruby/core/module/private_method_defined_spec.rb b/spec/ruby/core/module/private_method_defined_spec.rb
index 951f17aaa7..01fc8f8fb9 100644
--- a/spec/ruby/core/module/private_method_defined_spec.rb
+++ b/spec/ruby/core/module/private_method_defined_spec.rb
@@ -70,53 +70,51 @@ describe "Module#private_method_defined?" do
ModuleSpecs::CountsMixin.private_method_defined?(str).should == true
end
- ruby_version_is "2.6" do
- describe "when passed true as a second optional argument" do
- it "performs a lookup in ancestors" do
- ModuleSpecs::Child.private_method_defined?(:public_child, true).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_child, true).should == false
- ModuleSpecs::Child.private_method_defined?(:accessor_method, true).should == false
- ModuleSpecs::Child.private_method_defined?(:private_child, true).should == true
-
- # Defined in Parent
- ModuleSpecs::Child.private_method_defined?(:public_parent, true).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_parent, true).should == false
- ModuleSpecs::Child.private_method_defined?(:private_parent, true).should == true
-
- # Defined in Module
- ModuleSpecs::Child.private_method_defined?(:public_module, true).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_module, true).should == false
- ModuleSpecs::Child.private_method_defined?(:private_module, true).should == true
-
- # Defined in SuperModule
- ModuleSpecs::Child.private_method_defined?(:public_super_module, true).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_super_module, true).should == false
- ModuleSpecs::Child.private_method_defined?(:private_super_module, true).should == true
- end
+ describe "when passed true as a second optional argument" do
+ it "performs a lookup in ancestors" do
+ ModuleSpecs::Child.private_method_defined?(:public_child, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_child, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:accessor_method, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_child, true).should == true
+
+ # Defined in Parent
+ ModuleSpecs::Child.private_method_defined?(:public_parent, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_parent, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_parent, true).should == true
+
+ # Defined in Module
+ ModuleSpecs::Child.private_method_defined?(:public_module, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_module, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_module, true).should == true
+
+ # Defined in SuperModule
+ ModuleSpecs::Child.private_method_defined?(:public_super_module, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_super_module, true).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_super_module, true).should == true
end
+ end
- describe "when passed false as a second optional argument" do
- it "checks only the class itself" do
- ModuleSpecs::Child.private_method_defined?(:public_child, false).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_child, false).should == false
- ModuleSpecs::Child.private_method_defined?(:accessor_method, false).should == false
- ModuleSpecs::Child.private_method_defined?(:private_child, false).should == true
-
- # Defined in Parent
- ModuleSpecs::Child.private_method_defined?(:public_parent, false).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_parent, false).should == false
- ModuleSpecs::Child.private_method_defined?(:private_parent, false).should == false
-
- # Defined in Module
- ModuleSpecs::Child.private_method_defined?(:public_module, false).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_module, false).should == false
- ModuleSpecs::Child.private_method_defined?(:private_module, false).should == false
-
- # Defined in SuperModule
- ModuleSpecs::Child.private_method_defined?(:public_super_module, false).should == false
- ModuleSpecs::Child.private_method_defined?(:protected_super_module, false).should == false
- ModuleSpecs::Child.private_method_defined?(:private_super_module, false).should == false
- end
+ describe "when passed false as a second optional argument" do
+ it "checks only the class itself" do
+ ModuleSpecs::Child.private_method_defined?(:public_child, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_child, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:accessor_method, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_child, false).should == true
+
+ # Defined in Parent
+ ModuleSpecs::Child.private_method_defined?(:public_parent, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_parent, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_parent, false).should == false
+
+ # Defined in Module
+ ModuleSpecs::Child.private_method_defined?(:public_module, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_module, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_module, false).should == false
+
+ # Defined in SuperModule
+ ModuleSpecs::Child.private_method_defined?(:public_super_module, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:protected_super_module, false).should == false
+ ModuleSpecs::Child.private_method_defined?(:private_super_module, false).should == false
end
end
end
diff --git a/spec/ruby/core/module/protected_method_defined_spec.rb b/spec/ruby/core/module/protected_method_defined_spec.rb
index e022d7c5c4..31e24a16c1 100644
--- a/spec/ruby/core/module/protected_method_defined_spec.rb
+++ b/spec/ruby/core/module/protected_method_defined_spec.rb
@@ -70,53 +70,51 @@ describe "Module#protected_method_defined?" do
ModuleSpecs::CountsMixin.protected_method_defined?(str).should == true
end
- ruby_version_is "2.6" do
- describe "when passed true as a second optional argument" do
- it "performs a lookup in ancestors" do
- ModuleSpecs::Child.protected_method_defined?(:public_child, true).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_child, true).should == true
- ModuleSpecs::Child.protected_method_defined?(:accessor_method, true).should == false
- ModuleSpecs::Child.protected_method_defined?(:private_child, true).should == false
-
- # Defined in Parent
- ModuleSpecs::Child.protected_method_defined?(:public_parent, true).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_parent, true).should == true
- ModuleSpecs::Child.protected_method_defined?(:private_parent, true).should == false
-
- # Defined in Module
- ModuleSpecs::Child.protected_method_defined?(:public_module, true).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_module, true).should == true
- ModuleSpecs::Child.protected_method_defined?(:private_module, true).should == false
-
- # Defined in SuperModule
- ModuleSpecs::Child.protected_method_defined?(:public_super_module, true).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_super_module, true).should == true
- ModuleSpecs::Child.protected_method_defined?(:private_super_module, true).should == false
- end
+ describe "when passed true as a second optional argument" do
+ it "performs a lookup in ancestors" do
+ ModuleSpecs::Child.protected_method_defined?(:public_child, true).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_child, true).should == true
+ ModuleSpecs::Child.protected_method_defined?(:accessor_method, true).should == false
+ ModuleSpecs::Child.protected_method_defined?(:private_child, true).should == false
+
+ # Defined in Parent
+ ModuleSpecs::Child.protected_method_defined?(:public_parent, true).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_parent, true).should == true
+ ModuleSpecs::Child.protected_method_defined?(:private_parent, true).should == false
+
+ # Defined in Module
+ ModuleSpecs::Child.protected_method_defined?(:public_module, true).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_module, true).should == true
+ ModuleSpecs::Child.protected_method_defined?(:private_module, true).should == false
+
+ # Defined in SuperModule
+ ModuleSpecs::Child.protected_method_defined?(:public_super_module, true).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_super_module, true).should == true
+ ModuleSpecs::Child.protected_method_defined?(:private_super_module, true).should == false
end
+ end
- describe "when passed false as a second optional argument" do
- it "checks only the class itself" do
- ModuleSpecs::Child.protected_method_defined?(:public_child, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_child, false).should == true
- ModuleSpecs::Child.protected_method_defined?(:accessor_method, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:private_child, false).should == false
-
- # Defined in Parent
- ModuleSpecs::Child.protected_method_defined?(:public_parent, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_parent, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:private_parent, false).should == false
-
- # Defined in Module
- ModuleSpecs::Child.protected_method_defined?(:public_module, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_module, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:private_module, false).should == false
-
- # Defined in SuperModule
- ModuleSpecs::Child.protected_method_defined?(:public_super_module, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:protected_super_module, false).should == false
- ModuleSpecs::Child.protected_method_defined?(:private_super_module, false).should == false
- end
+ describe "when passed false as a second optional argument" do
+ it "checks only the class itself" do
+ ModuleSpecs::Child.protected_method_defined?(:public_child, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_child, false).should == true
+ ModuleSpecs::Child.protected_method_defined?(:accessor_method, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:private_child, false).should == false
+
+ # Defined in Parent
+ ModuleSpecs::Child.protected_method_defined?(:public_parent, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_parent, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:private_parent, false).should == false
+
+ # Defined in Module
+ ModuleSpecs::Child.protected_method_defined?(:public_module, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_module, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:private_module, false).should == false
+
+ # Defined in SuperModule
+ ModuleSpecs::Child.protected_method_defined?(:public_super_module, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:protected_super_module, false).should == false
+ ModuleSpecs::Child.protected_method_defined?(:private_super_module, false).should == false
end
end
end
diff --git a/spec/ruby/core/module/refine_spec.rb b/spec/ruby/core/module/refine_spec.rb
index e5f65f5f96..e3b7fde049 100644
--- a/spec/ruby/core/module/refine_spec.rb
+++ b/spec/ruby/core/module/refine_spec.rb
@@ -453,44 +453,22 @@ describe "Module#refine" do
result.should == ["(1)", "(2)", "(3)"]
end
- ruby_version_is "" ... "2.6" do
- it "is not honored by Kernel#public_send" do
- refined_class = ModuleSpecs.build_refined_class
-
- refinement = Module.new do
- refine refined_class do
- def foo; "foo from refinement"; end
- end
- end
+ it "is honored by Kernel#public_send" do
+ refined_class = ModuleSpecs.build_refined_class
- result = nil
- Module.new do
- using refinement
- result = refined_class.new.public_send :foo
+ refinement = Module.new do
+ refine refined_class do
+ def foo; "foo from refinement"; end
end
-
- result.should == "foo"
end
- end
-
- ruby_version_is "2.6" do
- it "is honored by Kernel#public_send" do
- refined_class = ModuleSpecs.build_refined_class
-
- refinement = Module.new do
- refine refined_class do
- def foo; "foo from refinement"; end
- end
- end
- result = nil
- Module.new do
- using refinement
- result = refined_class.new.public_send :foo
- end
-
- result.should == "foo from refinement"
+ result = nil
+ Module.new do
+ using refinement
+ result = refined_class.new.public_send :foo
end
+
+ result.should == "foo from refinement"
end
it "is honored by string interpolation" do
@@ -647,81 +625,39 @@ describe "Module#refine" do
end
end
- ruby_version_is "" ... "2.6" do
- it "is not honored by Kernel#respond_to?" do
- klass = Class.new
- refinement = Module.new do
- refine klass do
- def foo; end
- end
- end
-
- result = nil
- Module.new do
- using refinement
- result = klass.new.respond_to?(:foo)
+ it "is honored by Kernel#respond_to?" do
+ klass = Class.new
+ refinement = Module.new do
+ refine klass do
+ def foo; end
end
-
- result.should == false
end
- end
-
- ruby_version_is "2.6" do
- it "is honored by Kernel#respond_to?" do
- klass = Class.new
- refinement = Module.new do
- refine klass do
- def foo; end
- end
- end
-
- result = nil
- Module.new do
- using refinement
- result = klass.new.respond_to?(:foo)
- end
- result.should == true
+ result = nil
+ Module.new do
+ using refinement
+ result = klass.new.respond_to?(:foo)
end
- end
- ruby_version_is ""..."2.6" do
- it "is not honored by &" do
- refinement = Module.new do
- refine String do
- def to_proc(*args)
- -> * { 'foo' }
- end
- end
- end
-
- -> do
- Module.new do
- using refinement
- ["hola"].map(&"upcase")
- end
- end.should raise_error(TypeError, /wrong argument type String \(expected Proc\)/)
- end
+ result.should == true
end
- ruby_version_is "2.6" do
- it "is honored by &" do
- refinement = Module.new do
- refine String do
- def to_proc(*args)
- -> * { 'foo' }
- end
+ it "is honored by &" do
+ refinement = Module.new do
+ refine String do
+ def to_proc(*args)
+ -> * { 'foo' }
end
end
+ end
- result = nil
- Module.new do
- using refinement
- result = ["hola"].map(&"upcase")
- end
-
- result.should == ['foo']
+ result = nil
+ Module.new do
+ using refinement
+ result = ["hola"].map(&"upcase")
end
+
+ result.should == ['foo']
end
end
diff --git a/spec/ruby/core/module/remove_const_spec.rb b/spec/ruby/core/module/remove_const_spec.rb
index 20eb2dc3ed..0ac23f05a5 100644
--- a/spec/ruby/core/module/remove_const_spec.rb
+++ b/spec/ruby/core/module/remove_const_spec.rb
@@ -81,4 +81,25 @@ describe "Module#remove_const" do
ConstantSpecs.autoload :AutoloadedConstant, 'a_file'
ConstantSpecs.send(:remove_const, :AutoloadedConstant).should be_nil
end
+
+ it "updates the constant value" do
+ module ConstantSpecs::RemovedConstantUpdate
+ module M
+ FOO = 'm'
+ end
+
+ module A
+ include M
+ FOO = 'a'
+ def self.foo
+ FOO
+ end
+ end
+
+ A.foo.should == 'a'
+
+ A.send(:remove_const,:FOO)
+ A.foo.should == 'm'
+ end
+ end
end