nim-chronos/chronos/unittest2/asynctests.nim

32 lines
860 B
Nim

#
# Chronos Unittest2 Helpers
# (c) Copyright 2022-Present
# Status Research & Development GmbH
#
# Licensed under either of
# Apache License, version 2.0, (LICENSE-APACHEv2)
# MIT license (LICENSE-MIT)
import std/tables
import unittest2
import ../../chronos
export unittest2, chronos
template asyncTest*(name: string, body: untyped): untyped =
test name:
waitFor((
proc() {.async, gcsafe.} =
body
)())
template checkLeaks*(name: string): untyped =
let counter = getTrackerCounter(name)
if counter.opened != counter.closed:
echo "[" & name & "] opened = ", counter.opened,
", closed = ", counter.closed
check counter.opened == counter.closed
template checkLeaks*(): untyped =
for key in getThreadDispatcher().trackerCounterKeys():
checkLeaks(key)