diff options
Diffstat (limited to 'spec/ruby/core')
| -rw-r--r-- | spec/ruby/core/integer/coerce_spec.rb | 19 | ||||
| -rw-r--r-- | spec/ruby/core/module/prepend_spec.rb | 33 | ||||
| -rw-r--r-- | spec/ruby/core/rational/coerce_spec.rb | 1 | ||||
| -rw-r--r-- | spec/ruby/core/time/at_spec.rb | 10 |
4 files changed, 46 insertions, 17 deletions
diff --git a/spec/ruby/core/integer/coerce_spec.rb b/spec/ruby/core/integer/coerce_spec.rb index 13fe7b3321..f1f3256032 100644 --- a/spec/ruby/core/integer/coerce_spec.rb +++ b/spec/ruby/core/integer/coerce_spec.rb @@ -1,5 +1,7 @@ require_relative '../../spec_helper' +require 'bigdecimal' + describe "Integer#coerce" do context "fixnum" do describe "when given a Fixnum" do @@ -89,16 +91,13 @@ describe "Integer#coerce" do end end - ruby_version_is ""..."3.4" do - require 'bigdecimal' - context "bigdecimal" do - it "produces Floats" do - x, y = 3.coerce(BigDecimal("3.4")) - x.class.should == Float - x.should == 3.4 - y.class.should == Float - y.should == 3.0 - end + context "bigdecimal" do + it "produces Floats" do + x, y = 3.coerce(BigDecimal("3.4")) + x.class.should == Float + x.should == 3.4 + y.class.should == Float + y.should == 3.0 end end diff --git a/spec/ruby/core/module/prepend_spec.rb b/spec/ruby/core/module/prepend_spec.rb index f80cfbcca1..c90fa9700e 100644 --- a/spec/ruby/core/module/prepend_spec.rb +++ b/spec/ruby/core/module/prepend_spec.rb @@ -737,6 +737,39 @@ describe "Module#prepend" do klass.ancestors.take(4).should == [klass, submod, mod, Object] end + # https://bugs.ruby-lang.org/issues/17423 + describe "when module already exists in ancestor chain" do + ruby_version_is ""..."3.1" do + it "does not modify the ancestor chain" do + m = Module.new do; end + a = Module.new do; end + b = Class.new do; end + + b.include(a) + a.prepend(m) + b.ancestors.take(4).should == [b, m, a, Object] + + b.prepend(m) + b.ancestors.take(4).should == [b, m, a, Object] + end + end + + ruby_version_is "3.1" do + it "modifies the ancestor chain" do + m = Module.new do; end + a = Module.new do; end + b = Class.new do; end + + b.include(a) + a.prepend(m) + b.ancestors.take(4).should == [b, m, a, Object] + + b.prepend(m) + b.ancestors.take(5).should == [m, b, m, a, Object] + end + end + end + describe "called on a module" do describe "included into a class" it "does not obscure the module's methods from reflective access" do diff --git a/spec/ruby/core/rational/coerce_spec.rb b/spec/ruby/core/rational/coerce_spec.rb index 7aea31aea9..9c0f05829b 100644 --- a/spec/ruby/core/rational/coerce_spec.rb +++ b/spec/ruby/core/rational/coerce_spec.rb @@ -1,5 +1,4 @@ require_relative "../../spec_helper" - require_relative '../../shared/rational/coerce' describe "Rational#coerce" do diff --git a/spec/ruby/core/time/at_spec.rb b/spec/ruby/core/time/at_spec.rb index 25056f2011..0459589f01 100644 --- a/spec/ruby/core/time/at_spec.rb +++ b/spec/ruby/core/time/at_spec.rb @@ -32,12 +32,10 @@ describe "Time.at" do t2.nsec.should == t.nsec end - ruby_version_is ""..."3.4" do - describe "passed BigDecimal" do - it "doesn't round input value" do - require 'bigdecimal' - Time.at(BigDecimal('1.1')).to_f.should == 1.1 - end + describe "passed BigDecimal" do + it "doesn't round input value" do + require 'bigdecimal' + Time.at(BigDecimal('1.1')).to_f.should == 1.1 end end |
