diff options
Diffstat (limited to 'spec/ruby/core/hash/transform_keys_spec.rb')
-rw-r--r-- | spec/ruby/core/hash/transform_keys_spec.rb | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/spec/ruby/core/hash/transform_keys_spec.rb b/spec/ruby/core/hash/transform_keys_spec.rb index 30dde2287b..14d5d98117 100644 --- a/spec/ruby/core/hash/transform_keys_spec.rb +++ b/spec/ruby/core/hash/transform_keys_spec.rb @@ -60,17 +60,39 @@ ruby_version_is "2.5" do @hash.should == { 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4 } end - it "prevents conflicts between new keys and old ones" do - @hash.transform_keys!(&:succ) - @hash.should == { b: 1, c: 2, d: 3, e: 4 } + # https://bugs.ruby-lang.org/issues/14380 + ruby_version_is ""..."2.6" do + it "does not prevent conflicts between new keys and old ones" do + @hash.transform_keys!(&:succ) + @hash.should == { e: 1 } + end end - it "partially modifies the contents if we broke from the block" do - @hash.transform_keys! do |v| - break if v == :c - v.succ + ruby_version_is "2.6" do + it "prevents conflicts between new keys and old ones" do + @hash.transform_keys!(&:succ) + @hash.should == { b: 1, c: 2, d: 3, e: 4 } + end + end + + ruby_version_is ""..."2.6" do + it "partially modifies the contents if we broke from the block" do + @hash.transform_keys! do |v| + break if v == :c + v.succ + end + @hash.should == { c: 1, d: 4 } + end + end + + ruby_version_is "2.6" do + it "returns the processed keys if we broke from the block" do + @hash.transform_keys! do |v| + break if v == :c + v.succ + end + @hash.should == { b: 1, c: 2 } end - @hash.should == { b: 1, c: 2 } end it "keeps later pair if new keys conflict" do |