@@ -73,6 +73,19 @@ module Concurrent
7373 expect { Concurrent ::dataflow_with ( root_executor , nil , Future . execute { 0 } ) } . to raise_error ( ArgumentError )
7474 end
7575
76+ it 'doesn\'t raises exceptions from dependencies, unless called with !' do
77+
78+ d1 = Concurrent ::dataflow ( ) { raise }
79+ d2 = Concurrent ::dataflow ( ) { raise }
80+ f = Concurrent ::dataflow! ( d1 , d2 ) { |d1v , d2v | [ d1v , d2v ] }
81+ expect { f . value! } . to raise_error
82+
83+ d1 = Concurrent ::dataflow ( ) { raise }
84+ d2 = Concurrent ::dataflow ( ) { raise }
85+ f = Concurrent ::dataflow ( d1 , d2 ) { |d1v , d2v | [ d1v , d2v ] }
86+ expect { f . value! } . to_not raise_error
87+ end
88+
7689 it 'returns a Future' do
7790 expect ( Concurrent ::dataflow { 0 } ) . to be_a ( Future )
7891 expect ( Concurrent ::dataflow { 0 } ) . to be_a ( Future )
@@ -220,24 +233,7 @@ def fib_with_dot(n)
220233 sleep ( 0.1 )
221234 expect ( expected . value ) . to eq 377
222235 end
223-
224- it 'dataflow! raises exceptions from dependencies, and dataflow doesn\'t' do
225-
226- def raiser
227- Concurrent ::dataflow ( ) { raise }
228- end
229-
230- d1 = raiser
231- d2 = raiser
232- f = Concurrent ::dataflow! ( d1 , d2 ) { |d1v , d2v | [ d1v , d2v ] }
233- expect { f . value! } . to raise_error
234-
235- d1 = raiser
236- d2 = raiser
237- f = Concurrent ::dataflow ( d1 , d2 ) { |d1v , d2v | [ d1v , d2v ] }
238- expect { f . value! } . to_not raise_error
239- end
240-
236+
241237 end
242238 end
243239end
0 commit comments