From 21ecf64d243a93fab29aed6d3e439918d72c6e16 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Tue, 9 Oct 2018 18:39:12 +0100 Subject: Fixes #8994. FutureStream read procedure data loss no longer occurs. (#9183) * Fixes #8994. FutureStream read procedure data loss no longer occurs. * Optimises the fix for #8994. --- tests/async/tfuturestream.nim | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests') diff --git a/tests/async/tfuturestream.nim b/tests/async/tfuturestream.nim index d76752b7e..32624b100 100644 --- a/tests/async/tfuturestream.nim +++ b/tests/async/tfuturestream.nim @@ -35,6 +35,26 @@ proc beta() {.async.} = asyncCheck alpha() waitFor beta() +template ensureCallbacksAreScheduled = + # callbacks are called directly if the dispatcher is not running + discard getGlobalDispatcher() + +proc testCompletion() {.async.} = + ensureCallbacksAreScheduled + + var stream = newFutureStream[string]() + + for i in 1..5: + await stream.write($i) + + var readFuture = stream.readAll() + stream.complete() + yield readFuture + let data = readFuture.read() + doAssert(data.len == 5, "actual data len = " & $data.len) + +waitFor testCompletion() + # TODO: Something like this should work eventually. # proc delta(): FutureStream[string] {.async.} = # for i in 0 .. 5: -- cgit 1.4.1-2-gfad0