summaryrefslogtreecommitdiff
path: root/spec/ruby/shared
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2023-08-02 18:53:03 +0200
committerBenoit Daloze <eregontp@gmail.com>2023-08-02 18:53:03 +0200
commitdc54574adefe798702cc93457655da40f4939669 (patch)
treebd7ae5d6afc9bc00f6cb7813774543bc6f12b6e2 /spec/ruby/shared
parente20f1e443f6d0a4d377ef237fffc1f4c6e27c9e1 (diff)
Update to ruby/spec@9e278f5
Diffstat (limited to 'spec/ruby/shared')
-rw-r--r--spec/ruby/shared/sizedqueue/enque.rb24
1 files changed, 23 insertions, 1 deletions
diff --git a/spec/ruby/shared/sizedqueue/enque.rb b/spec/ruby/shared/sizedqueue/enque.rb
index 059f1025a7..3bc8008fa4 100644
--- a/spec/ruby/shared/sizedqueue/enque.rb
+++ b/spec/ruby/shared/sizedqueue/enque.rb
@@ -37,7 +37,7 @@ describe :sizedqueue_enq, shared: true do
q << 1
t = Thread.new {
- -> { q.send(@method, 2) }.should raise_error(ClosedQueueError)
+ -> { q.send(@method, 2) }.should raise_error(ClosedQueueError, "queue closed")
}
Thread.pass until q.num_waiting == 1
@@ -108,6 +108,28 @@ describe :sizedqueue_enq, shared: true do
"can't set a timeout if non_block is enabled",
)
end
+
+ it "raise ClosedQueueError when closed before enqueued" do
+ q = @object.call(1)
+ q.close
+ -> { q.send(@method, 2, timeout: 1) }.should raise_error(ClosedQueueError, "queue closed")
+ end
+
+ it "interrupts enqueuing threads with ClosedQueueError when the queue is closed" do
+ q = @object.call(1)
+ q << 1
+
+ t = Thread.new {
+ -> { q.send(@method, 1, timeout: 0.1) }.should raise_error(ClosedQueueError, "queue closed")
+ }
+
+ Thread.pass until q.num_waiting == 1
+
+ q.close
+
+ t.join
+ q.pop.should == 1
+ end
end
end
end