1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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()
|