Project

General

Profile

Bug #11822

Updated by ko1 (Koichi Sasada) over 8 years ago

Current test/ruby/thread/test_queue.rb test_close has the following assertion that seems wrong to me: 

 ```ruby 
   

   def test_close 
     [->{Queue.new}, ->{SizedQueue.new 3}].each do |qcreate| 
       q = qcreate.call 
       assert_equal false, q.closed? 
       q << :something 
       assert_equal q, q.close 
       assert q.closed? 
       assert_raise_with_message(ClosedQueueError, /closed/){q << :nothing} 
       assert_equal q.pop, :something    # <<< THIS ONE 
       assert_nil q.pop 
       assert_nil q.pop 
       # non-blocking 
       assert_raise_with_message(ThreadError, /queue empty/){q.pop(non_block=true)} 
     end 
   end 
 ``` 

 Once a queue is closed, I don't think it should ever return a result anymore. The queue should be cleared and pop should always return nil. 

 In r52691, ko1 states that "deq'ing on closed queue returns nil, always." This test does not match that behavior.

Back