summaryrefslogtreecommitdiff
path: root/dev-ruby/async/files/async-1.31.0-improve-robustness-test.patch
blob: 240fe060e224aca06efa29ab08056aea46869b34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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 <samuel.williams@oriontransfer.co.nz>
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