File: t8982.nim

package info (click to toggle)
nim 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,911,644 kB
  • sloc: sh: 24,603; ansic: 1,761; python: 1,492; makefile: 1,013; sql: 298; asm: 141; xml: 13
file content (33 lines) | stat: -rw-r--r-- 656 bytes parent folder | download | duplicates (4)
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
discard """
output: '''
timeout
runForever should throw ValueError, this is expected
'''
"""


import asyncdispatch

proc failingAwaitable(p: int) {.async.} =
  await sleepAsync(500)
  if p > 0:
    raise newException(Exception, "my exception")

proc main() {.async.} =
  let fut = failingAwaitable(1)
  try:
    await fut or sleepAsync(100)
    if fut.finished:
      echo "finished"
    else:
      echo "timeout"
  except:
    echo "failed"


# Previously this would raise "An attempt was made to complete a Future more than once."
try:
  asyncCheck main()
  runForever()
except ValueError:
  echo "runForever should throw ValueError, this is expected"