diff options
author | Benoit Daloze <eregontp@gmail.com> | 2023-01-05 19:05:29 +0100 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2023-01-05 19:05:29 +0100 |
commit | bbf54ec334fe2edd7669a944d88d17efde49a412 (patch) | |
tree | 2941c7b711319b295aa3664b6a2b984e70a523b7 /spec/ruby/core/refinement | |
parent | cd5e6cc0ea48353c88d921b885b552dc76da255c (diff) |
Update to ruby/spec@9d69b95
Diffstat (limited to 'spec/ruby/core/refinement')
-rw-r--r-- | spec/ruby/core/refinement/import_methods_spec.rb | 34 | ||||
-rw-r--r-- | spec/ruby/core/refinement/include_spec.rb | 27 | ||||
-rw-r--r-- | spec/ruby/core/refinement/prepend_spec.rb | 27 |
3 files changed, 88 insertions, 0 deletions
diff --git a/spec/ruby/core/refinement/import_methods_spec.rb b/spec/ruby/core/refinement/import_methods_spec.rb new file mode 100644 index 0000000000..1c526f5822 --- /dev/null +++ b/spec/ruby/core/refinement/import_methods_spec.rb @@ -0,0 +1,34 @@ +require_relative '../../spec_helper' + +describe "Refinement#import_methods" do + ruby_version_is "3.1" do + context "when methods are defined in Ruby code" do + it "imports methods" do + str_utils = Module.new do + def indent(level) + " " * level + self + end + end + + Module.new do + refine String do + import_methods str_utils + "foo".indent(3).should == " foo" + end + end + end + end + + context "when methods are not defined in Ruby code" do + it "raises ArgumentError" do + Module.new do + refine String do + -> { + import_methods Kernel + }.should raise_error(ArgumentError) + end + end + end + end + end +end diff --git a/spec/ruby/core/refinement/include_spec.rb b/spec/ruby/core/refinement/include_spec.rb new file mode 100644 index 0000000000..25a53f0ec7 --- /dev/null +++ b/spec/ruby/core/refinement/include_spec.rb @@ -0,0 +1,27 @@ +require_relative '../../spec_helper' + +describe "Refinement#include" do + ruby_version_is "3.1"..."3.2" do + it "warns about deprecation" do + Module.new do + refine String do + -> { + include Module.new + }.should complain(/warning: Refinement#include is deprecated and will be removed in Ruby 3.2/) + end + end + end + end + + ruby_version_is "3.2" do + it "raises a TypeError" do + Module.new do + refine String do + -> { + include Module.new + }.should raise_error(TypeError, "Refinement#include has been removed") + end + end + end + end +end diff --git a/spec/ruby/core/refinement/prepend_spec.rb b/spec/ruby/core/refinement/prepend_spec.rb new file mode 100644 index 0000000000..27b70d392a --- /dev/null +++ b/spec/ruby/core/refinement/prepend_spec.rb @@ -0,0 +1,27 @@ +require_relative '../../spec_helper' + +describe "Refinement#prepend" do + ruby_version_is "3.1"..."3.2" do + it "warns about deprecation" do + Module.new do + refine String do + -> { + prepend Module.new + }.should complain(/warning: Refinement#prepend is deprecated and will be removed in Ruby 3.2/) + end + end + end + end + + ruby_version_is "3.2" do + it "raises a TypeError" do + Module.new do + refine String do + -> { + prepend Module.new + }.should raise_error(TypeError, "Refinement#prepend has been removed") + end + end + end + end +end |