summaryrefslogtreecommitdiff
path: root/spec/ruby/core/hash/transform_keys_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/hash/transform_keys_spec.rb')
-rw-r--r--spec/ruby/core/hash/transform_keys_spec.rb38
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