mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-21 16:31:39 +00:00
Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
This commit is contained in:
38
tests/async/tasyncexceptions.nim
Normal file
38
tests/async/tasyncexceptions.nim
Normal file
@@ -0,0 +1,38 @@
|
||||
discard """
|
||||
file: "tasyncexceptions.nim"
|
||||
exitcode: 1
|
||||
outputsub: "Error: unhandled exception: foobar [E_Base]"
|
||||
"""
|
||||
import asyncdispatch
|
||||
|
||||
proc accept(): PFuture[int] {.async.} =
|
||||
await sleepAsync(100)
|
||||
result = 4
|
||||
|
||||
proc recvLine(fd: int): PFuture[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(EBase, "foobar")
|
||||
|
||||
|
||||
proc serve() {.async.} =
|
||||
|
||||
while true:
|
||||
var fut = await accept()
|
||||
await processClient(fut)
|
||||
|
||||
when isMainModule:
|
||||
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()
|
||||
Reference in New Issue
Block a user