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
|
discard """
outputsub: "Error: unhandled exception: foobar"
exitcode: 1
"""
import asyncdispatch
# Note: This is a test case for a bug.
proc accept(): Future[int] {.async.} =
await sleepAsync(100)
result = 4
proc recvLine(fd: int): Future[string] {.async.} =
await sleepAsync(100)
return "get"
proc processClient(fd: int) {.async.} =
# these finish synchronously, we need some async delay to emulate this bug.
var line = await recvLine(fd)
var foo = line[0]
if foo == 'g':
raise newException(Exception, "foobar")
proc serve() {.async.} =
while true:
var fut = await accept()
await processClient(fut)
when true:
proc main =
var fut = serve()
fut.callback =
proc () =
if fut.failed:
# This test ensures that this exception crashes the application
# as it is not handled.
raise fut.error
runForever()
main()
|