Add timeit to measure test timings

This commit is contained in:
Ganesh Viswanathan 2020-04-28 20:48:21 -05:00
commit 492eba8f22
4 changed files with 36 additions and 14 deletions

View file

@ -1,6 +1,6 @@
# Package
version = "0.4.4"
version = "0.5.0"
author = "genotrance"
description = "C/C++ interop for Nim"
license = "MIT"
@ -14,8 +14,7 @@ requires "nim >= 0.20.2", "regex >= 0.14.1", "cligen >= 0.9.45"
import nimterop/docs
proc execCmd(cmd: string) =
echo "execCmd:" & cmd
exec cmd
exec "tests/timeit " & cmd
proc execTest(test: string, flags = "") =
execCmd "nim c --hints:off -f " & flags & " -r " & test
@ -24,6 +23,9 @@ proc execTest(test: string, flags = "") =
task buildToast, "build toast":
execCmd("nim c --hints:off nimterop/toast.nim")
task buildTimeit, "build timer":
exec "nim c -d:danger tests/timeit"
task bt, "build toast":
execCmd("nim c --hints:off -d:danger nimterop/toast.nim")
@ -34,6 +36,7 @@ task docs, "Generate docs":
buildDocs(@["nimterop/all.nim"], "build/htmldocs")
task test, "Test":
buildTimeitTask()
buildToastTask()
execTest "tests/tast2.nim"
@ -66,8 +69,10 @@ task test, "Test":
# getHeader tests
withDir("tests"):
execCmd("nim e getheader.nims")
exec "nim e getheader.nims"
if not existsEnv("APPVEYOR"):
execCmd("nim e wrappers.nims")
exec "nim e wrappers.nims"
docsTask()
echo readFile("tests/timeit.txt")

View file

@ -2,16 +2,11 @@ import strutils
proc testCall(cmd, output: string, exitCode: int, delete = true) =
var
ccmd =
when defined(windows):
"cmd /c " & cmd
else:
cmd
ccmd = "../tests/timeit " & cmd
if not delete:
ccmd = ccmd.replace(" -f ", " ")
echo ccmd
var
(outp, exitC) = gorgeEx(ccmd)
echo outp

22
tests/timeit.nim Normal file
View file

@ -0,0 +1,22 @@
import std/monotimes, os, osproc, sequtils, strformat, strutils, times
when isMainModule:
var params = commandLineParams()
params.apply(quoteShell)
let cmd = params.join(" ")
echo &"================\nRunning: {cmd}\n"
let
start = getMonoTime()
ret = execCmd(cmd)
endt = getMonoTime()
outf = getAppDir() / "timeit.txt"
outd = if fileExists(outf): readFile(outf) else: ""
outp = &"\nRan: {cmd}\nTime taken: {$(endt - start)}\n"
echo outp
writeFile(outf, outd & outp)
quit(ret)

View file

@ -9,7 +9,7 @@ withDir("wrappers"):
for wrapper in wrappers:
let
name = wrapper.extractFilename()
exec "git clone https://github.com/" & wrapper
exec "../../tests/timeit git clone https://github.com/" & wrapper
withDir(name):
exec "nimble install -d"
exec "nimble test"
exec "../../../tests/timeit nimble install -d"
exec "../../../tests/timeit nimble test"