logos-storage-nim/tests/asynctest.nim
Csaba Kiraly d4672fa057
tests: measure test time
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2025-01-21 13:50:19 +01:00

23 lines
826 B
Nim

import pkg/asynctest/chronos/unittest
import times, strutils
type
TimedOutputFormatter* = ref object of ConsoleOutputFormatter
testStartTime: float
method testStarted*(formatter: TimedOutputFormatter, testName: string) {.gcsafe.} =
formatter.testStartTime = epochTime()
method testEnded*(formatter: TimedOutputFormatter, testResult: TestResult) =
let time = epochTime() - formatter.testStartTime
let timeStr = time.formatFloat(ffDecimal, precision = 8)
# There doesn't seem to be an easy way to override the echo in the base class
# without changing std/unittest, or copying most of the code here.
# We use a second line as a workaround.
procCall formatter.ConsoleOutputFormatter.testEnded(testResult)
echo " time = ", timeStr, " sec"
addOutputFormatter(TimedOutputFormatter())
export unittest