From b6698114e61208e2711f42a05fdf7b0d4f5e37a3 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Tue, 13 May 2025 22:30:50 +0200 Subject: [PATCH] Add specs for Set mutation during iteration --- spec/ruby/core/set/add_spec.rb | 8 ++++++++ spec/ruby/core/set/replace_spec.rb | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/spec/ruby/core/set/add_spec.rb b/spec/ruby/core/set/add_spec.rb index 73662acfd1..0fe1a0926c 100644 --- a/spec/ruby/core/set/add_spec.rb +++ b/spec/ruby/core/set/add_spec.rb @@ -23,4 +23,12 @@ describe "Set#add?" do @set.add?("cat") @set.add?("cat").should be_nil end + + it "raises RuntimeError when called during iteration" do + set = Set[:a, :b, :c, :d, :e, :f] + set.each do |_m| + -> { set << 1 }.should raise_error(RuntimeError, /iteration/) + end + set.should == Set[:a, :b, :c, :d, :e, :f] + end end diff --git a/spec/ruby/core/set/replace_spec.rb b/spec/ruby/core/set/replace_spec.rb index 60b33eb0c0..c66a2d0ec3 100644 --- a/spec/ruby/core/set/replace_spec.rb +++ b/spec/ruby/core/set/replace_spec.rb @@ -10,6 +10,14 @@ describe "Set#replace" do @set.should == Set[1, 2, 3] end + it "raises RuntimeError when called during iteration" do + set = Set[:a, :b, :c, :d, :e, :f] + set.each do |_m| + -> { set.replace(Set[1, 2, 3]) }.should raise_error(RuntimeError, /iteration/) + end + set.should == Set[:a, :b, :c, :d, :e, :f] + end + it "accepts any enumerable as other" do @set.replace([1, 2, 3]).should == Set[1, 2, 3] end