https://github.com/socketry/async/commit/8f590415c08943372e0227f01d3c32e92dbcbed0 https://github.com/socketry/async/issues/218 From 8f590415c08943372e0227f01d3c32e92dbcbed0 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Sun, 12 Mar 2023 20:33:48 +1300 Subject: [PATCH] Improve robustness of test, fixes #218. --- a/spec/async/semaphore_spec.rb +++ b/spec/async/semaphore_spec.rb @@ -62,7 +62,7 @@ 3.times.map do |i| semaphore.async do |task| order << i - task.sleep(0.1) + task.yield order << i end end.collect(&:result) @@ -72,17 +72,22 @@ it 'allows tasks to execute concurrently' do semaphore = Async::Semaphore.new(3) - order = [] + concurrency = 0 + latch = Async::Condition.new 3.times.map do |i| semaphore.async do |task| - order << i - task.sleep(0.1) - order << i + concurrency += 1 + + if concurrency == 3 + latch.signal + else + latch.wait + end end - end.collect(&:result) + end.each(&:wait) - expect(order).to be == [0, 1, 2, 0, 1, 2] + expect(concurrency).to be == 3 end end