diff options
author | Jeremy Evans <code@jeremyevans.net> | 2021-12-27 11:38:12 -0800 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2022-01-05 10:59:03 -0800 |
commit | 791343b5bb1b8bb11de4ba2800118c20e36b5a71 (patch) | |
tree | fb559494483362cd38735ecc7a2644435000e32c /spec/ruby | |
parent | f22296d27e9be616a16f9befd2f7c9c2d2f972c3 (diff) |
Remove Refinement#{extend_object,append_features,prepend_features}
Also make include, prepend, and extend raise a TypeError if one
of the modules is a refinement.
Implements [Feature #18270]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/5358
Diffstat (limited to 'spec/ruby')
-rw-r--r-- | spec/ruby/core/refinement/append_features_spec.rb | 21 | ||||
-rw-r--r-- | spec/ruby/core/refinement/extend_object_spec.rb | 21 | ||||
-rw-r--r-- | spec/ruby/core/refinement/prepend_features_spec.rb | 21 |
3 files changed, 63 insertions, 0 deletions
diff --git a/spec/ruby/core/refinement/append_features_spec.rb b/spec/ruby/core/refinement/append_features_spec.rb new file mode 100644 index 0000000000..fb84f245bd --- /dev/null +++ b/spec/ruby/core/refinement/append_features_spec.rb @@ -0,0 +1,21 @@ +require_relative '../../spec_helper' + +describe "Refinement#append_features" do + ruby_version_is "3.2" do + it "is not defined" do + Refinement.should_not have_private_instance_method(:append_features) + end + + it "is not called by Module#include" do + c = Class.new + Module.new do + refine c do + called = false + define_method(:append_features){called = true} + proc{c.include(self)}.should raise_error(TypeError) + called.should == false + end + end + end + end +end diff --git a/spec/ruby/core/refinement/extend_object_spec.rb b/spec/ruby/core/refinement/extend_object_spec.rb new file mode 100644 index 0000000000..e44e9f46d8 --- /dev/null +++ b/spec/ruby/core/refinement/extend_object_spec.rb @@ -0,0 +1,21 @@ +require_relative '../../spec_helper' + +describe "Refinement#extend_object" do + ruby_version_is "3.2" do + it "is not defined" do + Refinement.should_not have_private_instance_method(:extend_object) + end + + it "is not called by Object#extend" do + c = Class.new + Module.new do + refine c do + called = false + define_method(:extend_object){called = true} + proc{c.extend(self)}.should raise_error(TypeError) + called.should == false + end + end + end + end +end diff --git a/spec/ruby/core/refinement/prepend_features_spec.rb b/spec/ruby/core/refinement/prepend_features_spec.rb new file mode 100644 index 0000000000..9fdea199a2 --- /dev/null +++ b/spec/ruby/core/refinement/prepend_features_spec.rb @@ -0,0 +1,21 @@ +require_relative '../../spec_helper' + +describe "Refinement#prepend_features" do + ruby_version_is "3.2" do + it "is not defined" do + Refinement.should_not have_private_instance_method(:prepend_features) + end + + it "is not called by Module#prepend" do + c = Class.new + Module.new do + refine c do + called = false + define_method(:prepend_features){called = true} + proc{c.prepend(self)}.should raise_error(TypeError) + called.should == false + end + end + end + end +end |